整合Mybatis-Plus
导入依赖
<!--mybatis-plus启动器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
安装Lombok
插件
配置编码
-
配置
application.yaml
文件spring: #配置数据库 datasource: # 配置连接数据库信息 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 username: root password: 123456 mybatis-plus: # 配置MyBatis日志 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #全局配置 global-config: db-config: #配置统一的主键策略为自增,如果不设置默认为雪花算法 id-type: auto # 设置实体类所对应的表的统一前缀,为实体类所对应的表名设置默认的前缀 table-prefix: t_ #配置mapper映射文件路径,名字要和mapper接口名字一致 这是默认路径不写也行 mapper-locations: classpath*:/mapper/**/*.xml #配置类型别名所对应的包 type-aliases-package: com.yka.boot02mybatis_plus.pojo # 扫描通用枚举的包 type-enums-package: com.yka.boot02mybatis_plus.enums
-
创建一个config包创建配置类,添加@MapperScan` 注解,扫描 Mapper 文件夹 添加@Configuration注解**
@Configuration //告诉SpringBoot这是一个配置类 == spring配置文件 @MapperScan("com.yka.boot02mybatis_plus.mapper")//扫描接口包 在当前配置类(spring.xml)中填写注解最合适 //配置mapper接口的扫描配置 //由mybatis-spring提供,可以将指定包下所有的mapper接口创建代理实现类 //并将这些动态代理作为IOC容器的bean管理,接口就可以自动装配了,直接可以调用接口中的方法 public class MyConfig { }
-
编写实体类
User.java
(此处使用了 Lombok 简化代码)@Data//自动提供get set方法、tosString方法,equals方法 @AllArgsConstructor//有参构造器 @NoArgsConstructor//无参构造器 @TableName("user")//绑定表 yaml文件中设置了全局配置这里可以不用注解了 yaml文件配置文件中:db-config:table-prefix: t_ public class User { private Long id; private String name; private Integer age; private String email; }
-
编写 Mapper 包下的
UserMapper
接口 -
1.BaseMapper<T>
说明:
-
通用 CRUD 封装BaseMapper 接口,为
Mybatis-Plus
启动时自动解析实体表关系映射转换为Mybatis
内部对象注入容器 -
泛型
T
为任意实体对象 -
参数
Serializable
为任意类型主键Mybatis-Plus
不推荐使用复合主键约定每一张表都有自己的唯一id
主键 -
对象
Wrapper
为条件构造器
MyBatis-Plus中的基本CRUD在内置的BaseMapper中都已得到了实现,因此我们继承该接口以后可以直接使用。
本次演示的CRUD操作不包含参数带有条件构造器的方法,关于条件构造器将单独在一个章节进行演示。BaseMapper中提供的CRUD方法:
-
-
// 在对应的Mapper上面继承基本的类 BaseMapper,就能直接用BaseMapper接口里面的sql语句了 //MyBatis-Plus中的基本CRUD在内置的BaseMapper中都已得到了实现,因此我们继承该接口以后可以直接使用。 @Repository // 代表持久层 public interface UserMapper extends BaseMapper<User> { // 所有的CRUD操作都已经编写完成了 // 你不需要像以前的配置一大堆文件了! @Select("select * from user where id = #{id}") public User selById(Integer id); }
测试查询
-
编写一个测试类
MyBatisPlusTest.java
@SpringBootTest public class MyBatisPlusTest { @Resource private UserMapper userMapper; /** * 测试查询所有数据 */ @Test void testSelectList(){ //通过条件构造器查询一个list集合,若没有条件,则可以设置null为参数 List<User> users = userMapper.selectList(null); users.forEach(System.out::println); } }
-
控制台打印查询结果