Springboot中使用@Mapper、@Repository、@MapperScan实现MybtaisPlus操作数据库的几种方法

spring中的概念介绍:
@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。
@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。

  我用的是MybatisPlus!!!,用Mybatis的结果可能不一样!!!

  以下几种方式我的实体类和SpringBoot配置文件都是如下,没有改变:

//pojo

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
### application.properties

# 应用名称
spring.application.name=MybatisPlus-01-QuickStart
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=123456

一、只使用@MapperScan注解操作数据库

  只在SpringBoot的启动类上添加@MapperScan注解扫描Mapper接口。

  UserMapper:
在这里插入图片描述

  启动类:
在这里插入图片描述
  测试代码:
在这里插入图片描述
  可以看到,如果Mapper接口上不加将该组件自动注入springboot的注解(@Repository和@Component)的话,使用@Autowired等自动装配的注解时,会报错。但是不会影响程序的运行。看结果:
在这里插入图片描述
  虽然报错,但是数据还是能查询出来,只是相对于强迫症来说看着不舒服。

二、使用@MapperScan和@Repository操作数据库

  第二种方式只是在第一种的基础上,在Mapper接口上加了一个@Repository注解,显示的将Mapper接口装配进SpringBoot而已。这样就不会像上面那样报红了。

  UserMapper:
在这里插入图片描述

  启动类:
在这里插入图片描述
  测试代码:
在这里插入图片描述

  结果:
在这里插入图片描述

三、只是用@Mapper注解操作数据库

  只在Mapper接口上加@Mapper注解,也同样能操作数据库。上面说的是用这个注解的时候,要搭配xml使用才行。我用的是MybatisPlus,封装了代码,可以不用xml操作,所以直接用@Mapper就行了。

  UserMapper:
在这里插入图片描述

  启动类:
在这里插入图片描述
  测试代码:
在这里插入图片描述
  结果:
在这里插入图片描述

posted @ 2022-06-03 13:07  爱吃雪糕的小布丁  阅读(136)  评论(0)    收藏  举报  来源