MybatisPlus笔记
一、简介
1.MyBatisPlus介绍
MyBatis-Plus( 简称 MP),是一个 MyBatis 的增强工具包,只做增强不做改变. 为简化开 发工作、提高生产率而生,我们的愿景是成为 Mybatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。
2.代码及文档发布地址
官方地址: 代码发布地址: Github: Gitee: 文档发布地址: 代码地址: 学习地址:
二、集成MP
1.创建数据库表
-- 创建库
CREATE DATABASE mp;
-- 使用库
USE mp;
-- 创建表
CREATE TABLE tbl_employee(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(50),
email VARCHAR(50),
gender CHAR(1),
age int
);
INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Tom','tom@qq.com',1,22);
INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Jerry','jerry@qq.com',0,25);
INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Black','black@qq.com',1,30);
INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('White','white@qq.com',0,35);
2.创建JavaBean实体类
public class Employee {
<!-- -->
private Integer id;
private String lastName;
private String email;
private Integer gender;
private Integer age;
//省略get和set以及ToString方法。
}
3.添加依赖
<!--单元测试依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--mp依赖
MybatisPlus 会自动维护Mybatis以及Mybatis-spring相关的依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.1.2</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--c3p0-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.24.RELEASE</version>
</dependency>
4.引入数据源配置部分省略
三、通用CRUD
1)基于 Mybatis 需要编写 EmployeeMapper 接口,并手动编写 CRUD 方法 提供 EmployeeMapper.xml 映射文件,并手动编写每个方法对应的 SQL 语句. 2)基于 MybatisPlus 只需要创建 EmployeeMapper 接口, 并继承 BaseMapper 接口.这就是使用 M (泛型指定的就是当前Mapper接口所操作的实体类)需要完成的所有操作,甚至不需要创建 SQL 映射文件。
1.插入操作
①.生成ID策略 ②.开启驼峰命名转换以及对应数据库表
@TableName(value = "tbl_employee")//对应数据库名
public class Employee {
<!-- -->
/**
* TableId:
* value:指定表中的主键列的列明,如果实体属性名与类名一直,可以省略不指定,
* type:指定主键策略
*/
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
private String lastName;
private String email;
private Integer gender;
private Integer age;
@TableField(exist = false)//忽略数据库没有的值salary
private Integer salary;
//省略get和set方法
}
③.获取插入的ID值 在mybatis的Mapper映射文件中
<insert id="insert" useGeneratedKeys="true" keyProperty="id"></insert>
在MybatisPlus中,直接在Java后台获取到不需要写Mapper
Integer key=employee.getId();
④.插入对象出现空值
@Test
public void testCommonInsert() {
<!-- -->
//初始化Employee对象
Employee employee = new Employee();
employee.setLastName("MP");
employee.setEmail("kevin@qq.com");
Integer result = employeeMapper.insert(employee);
System.out.println("Result:" + result);
}
此时插入结果为:MP,kevin@qq.com,null,null。 结论:insert方法在插入时,会根据实体类的每个属性进行非空判断,只有非空的属性对应的字段才会出现到SQL语句中
2.更新操作
通过ID进行更新操作,传入一个对相同会进行自动判断
@Test
public void testCommonUpdate(){
<!-- -->
Employee employee = new Employee();
employee.setId(6);
employee.setLastName("MybatisPlus");
employee.setEmail("MybatisPlus@qq.com");
employee.setGender(0);
//可以写一个构造方法,new Employee(6,"Name","email",0,20)
//如果出现非空会MybatisPlus会进行自动判断,不会出现在SQL语句中
employee.setAge(20);
Integer result = employeeMapper.updateById(employee);
System.out.println("result:"+result);
}
3.查询操作
①.通过ID查询
@Test
public void testCommonSelect(){
<!-- -->
Employee employee = employeeMapper.selectById(3);
System.out.println("Employee="+employee);
}
②.通过实体查询单条数据
Employee employee = new Employee();
employee.setId(4);
employee.setLastName("DSM")