1. Mybatis-plus简介
简介:MyBatis-Plus简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。
官网:https://baomidou.com/
2. 准备数据库环境
# 新建用户表
CREATE TABLE IF NOT EXISTS `user`(
`id` INT AUTO_INCREMENT,
`username` VARCHAR(20) NOT NULL,
`birthday` DATETIME NOT NULL,
`sex` CHAR(1) NOT NULL,
`address` VARCHAR(200) NOT NULL,
`password` VARCHAR(20) NOT NULL,
CONSTRAINT pk_user PRIMARY KEY(`id`)
);
# 添加用户数据
INSERT INTO
`user`(`username`, `birthday`, `sex`, `address`, `password`)
VALUES
('周瑜', '2020-09-04', '男', '吴国', '123456'),
('关羽', '2020-09-04', '男', '蜀国', '654321'),
('刘备', '2020-09-04', '男', '蜀国', '456789'),
('张飞', '2020-09-04', '男', '蜀国', '987654'),
('赵云', '2020-09-04', '男', '蜀国', '123789'),
('马超', '2020-09-04', '男', '蜀国', '987321'),
('黄忠', '2020-09-04', '男', '蜀国', '147258'),
('曹操', '2020-09-04', '男', '魏国', '852741');
3. 新建SpringBoot工程
4. 项目依赖
<dependencies>
<dependency>
<groupId>mysql
</groupId>
<artifactId>mysql-connector-java
</artifactId>
<version>5.1.49
</version>
</dependency>
<dependency>
<groupId>com.baomidou
</groupId>
<artifactId>mybatis-plus-boot-starter
</artifactId>
<version>3.4.0
</version>
</dependency>
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-jdbc
</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok
</groupId>
<artifactId>lombok
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-test
</artifactId>
</dependency>
</dependencies>
5. SpringBoot配置文件
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc
:mysql
://127.0.0.1
:3306/test
?useSSL=false
username: root
password: root
logging:
level:
zw:
springboot:
mapper: debug
6. 用户实体类
@TableName:标注对应表的名称
@TableId:标注主键字段
@TableField:标注普通字段
package zw
.springboot
.domain
;
import com
.baomidou
.mybatisplus
.annotation
.IdType
;
import com
.baomidou
.mybatisplus
.annotation
.TableField
;
import com
.baomidou
.mybatisplus
.annotation
.TableId
;
import com
.baomidou
.mybatisplus
.annotation
.TableName
;
import lombok
.Data
;
import java
.io
.Serializable
;
import java
.util
.Date
;
@Data
@TableName("user")
public class UserDO implements Serializable
{
@TableId(value
= "id", type
= IdType
.AUTO
)
private Integer id
;
@TableField("username")
private String username
;
@TableField("password")
private String password
;
@TableField("birthday")
private Date birthday
;
@TableField("sex")
private String sex
;
@TableField("address")
private String address
;
}
7. 用户持久层接口
继承BaseMapper接口,填写数据库表对应实体类泛型
package zw
.springboot
.mapper
;
import com
.baomidou
.mybatisplus
.core
.mapper
.BaseMapper
;
import org
.apache
.ibatis
.annotations
.Mapper
;
import zw
.springboot
.domain
.UserDO
;
@Mapper
public interface UserMapper extends BaseMapper<UserDO>
{
}
8. 数据的查询操作
8.1 查询所有
@Test
public void listUserInformationsTest()
{
List
<UserDO> users
= userMapper
.selectList(null
);
for (UserDO user
: users
)
{
System
.out
.println("user = " + user
);
}
}
8.2 条件查询
条件构造器
方法示例
eq(R column, Object val)eq("name", "老王")—>name = '老王'ne(R column, Object val)ne("name", "老王")—>name <> '老王'gt(R column, Object val)gt("age", 18)—>age > 18ge(R column, Object val)ge("age", 18)—>age >= 18lt(R column, Object val)lt("age", 18)—>age < 18le(R column, Object val)le("age", 18)—>age <= 18between(R column, Object val1, Object val2)between("age", 18, 30)—>age between 18 and 30
@Test
public void findUserInformationTest()
{
QueryWrapper
<UserDO> queryWrapper
= new QueryWrapper<>();
queryWrapper
.like("username", "刘");
queryWrapper
.eq("sex", "男");
List
<UserDO> users
= userMapper
.selectList(queryWrapper
);
for (UserDO user
: users
)
{
System
.out
.println("user = " + user
);
}
}
9. 数据的添加操作
@Test
public void insertUserInformationTest()
{
UserDO user
= new UserDO();
user
.setUsername("孙尚香");
user
.setPassword("123058");
user
.setBirthday(new Date());
user
.setSex("女");
user
.setAddress("吴国");
Integer count
= userMapper
.insert(user
);
System
.out
.println("count = " + count
);
System
.out
.println("user.getId() = " + user
.getId());
}
10. 数据的删除操作
@Test
public void deleteUserInformationByUserIdTest()
{
Integer id
= 9;
Integer count
= userMapper
.deleteById(id
);
System
.out
.println("count = " + count
);
}
11. 数据的更新操作
@Test
public void updateUserInformationByUserIdTest()
{
UserDO user
= new UserDO();
user
.setId(8);
user
.setUsername("貂蝉");
user
.setSex("女");
user
.setAddress("后汉");
Integer count
= userMapper
.updateById(user
);
System
.out
.println("count = " + count
);
}
12. 整合分页
新建分页配置类填写分页参数进行数据查询
12.1 分页配置文件
package zw
.springboot
.config
;
import com
.baomidou
.mybatisplus
.extension
.plugins
.PaginationInterceptor
;
import com
.baomidou
.mybatisplus
.extension
.plugins
.pagination
.optimize
.JsqlParserCountOptimize
;
import org
.springframework
.context
.annotation
.Bean
;
import org
.springframework
.context
.annotation
.Configuration
;
@Configuration
public class MyBatisPlusConfig
{
@Bean
public PaginationInterceptor
paginationInterceptor()
{
PaginationInterceptor paginationInterceptor
= new PaginationInterceptor();
paginationInterceptor
.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor
;
}
}
12.2 分页测试
@Test
public void listUserInformationsByPageTest()
{
IPage
<UserDO> page
= new Page<>(1, 5);
IPage
<UserDO> pageInfo
= userMapper
.selectPage(page
, null
);
System
.out
.println("记录总数:" + pageInfo
.getTotal());
System
.out
.println("总页数:" + pageInfo
.getPages());
System
.out
.println("数据记录:" + pageInfo
.getRecords());
}