4.1.1 MyBatis-Plus 简介
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MyBatis-Plus 特性:
- 官网说的特性太多了,挑了几个有特点的分享给大家。
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
- 损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作,
- 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需在担心字段写错
- 支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库。
4.1.2 Lombok 简介和安装
Lombok 是一个 IDE 的插件,可以对编译器进行增强,使Java代码变得简洁、快速。
IDEA 中安装 Lombok 插件:
打开 idea —> File —> Setting —> Plugin —> Markplace(或 Browse Repositories) —> 输入 Lombok 回车进行搜索
未安装的话点击Install 进行插件的安装
安装完成之后会提示你重启 IDEA 工具。
基本用法:
@Data 注解在类上,会为类的所有属性自动生成 setter/getter、equals、canEqual、hashCode、toString 方法,如为final属性,则不会为该属性生成setter方法。
4.1.3 快速上手
我们将通过一个简单的 Demo 来阐述 MyBatis-Plus 的强大功能,在此之前,需要我们准备好数据库及初始化好Spring Boot 项目。
1.关键依赖包:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
Lombok 帮忙省略掉 Getter/Setter 方法
mybatis-plus-boot-starter,MyBatis Plus 的依赖包,引入MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题
2.application.yml 添加相关配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///crm?useUnicode=true&characterEncoding=utf-8
username: root
password: liuyuhan
#配置日志
logging:
level:
root: warn
com.bdqn.crm.mapper: trace
pattern:
console: '%p%m%n'
3.启动类
在启动类中添加对 MApper 包扫描 @MapperScan,Spring Boot 启动的时候会自动加载包路径下的Mapper:
@SpringBootApplication
@MapperScan("com.bdqn.crm.mapper")
public class MybatiesXmlApplication {
public static void main(String[] args) {
SpringApplication.run(MybatiesXmlApplication.class, args);
}
}
4.编码:
编写实体类:User.java
@Data
@TableName("sys_user")
public class User implements Serializable {
@TableId(type = IdType.AUTO)
@TableField("usr_id")
private Long usrId;
@TableField("usr_name")
private String usrName;
private String usrPassword;
private Long usrRoleId;
private Integer usrFlag;
- @TableName 注解在类上,指定数据库表名(实体名与表名不一致时需要指定)
- @TableId(type = IdType.AUTO) 注解在主键属性上,且指定主键生成策略为自动增长
- @TableFieId注解在属性上,指定数据库字段名(不满足默认匹配规则时需要指定)。
编写 Mapper 接口:UserMapper.java
public interface UserMapper extends BaseMapper<User> {
}
5.测试:
编写junit测试类UserMapperTester.java
@SpringBootTest
public class UserMapperTester {
@Resource
private UserMapper userMapper;
@Test
public void testSelectById(){// 主键查询
User user = userMapper.selectById(2L);
System.out.println(user);
}