Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。
1.创建mybatis-plus工程
1.创建数据库表
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
引入mybatis-plus的依赖 不要再引入mybatis的依赖
数据源配置
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql:///student?useUnicode=true&characterEncoding=UTF8
spring.datasource.druid.username=root
spring.datasource.druid.password=
dao
public interface UserDao extends BaseMapper<User> {
}
主启动类添加扫描dao层。
@SpringBootApplication
@MapperScan(basePackages = "com.dw.dao")
public class SpringbootMpApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMpApplication.class, args);
}
}
增删改查
@Test
void contextLoads() {
//Wrapper:条件封装类。----null
//查询所有
List<User> list = userDao.selectList(null);
System.out.println(list);
}
@Test
public void delete(){
int i = userDao.deleteById(2L);
//这个带就是真实删除 如果想实现逻辑删除则需要给数据库表增加一个新的列isDeleted
}
@Test
public void update(){
//默认使用了动态sql。 增加列 gmt_update gmt_create
User user=new User();
user.setId(1L);
user.setName("张三"); //如果数据库没有设置默认值。
userDao.updateById(user);
}
@Test
public void select(){
User user=new User();
user.setName("李");
//根据id查询
// User user = userDao.selectById(2L);
// System.out.println(user);
//根据条件查询多条记录Wrapper----子类有QueryWrapper
QueryWrapper wrapper=new QueryWrapper();
wrapper.select("name","email");
//where = like in between
//wrapper.eq("name","张三"); //equals
if(StringUtils.isNotEmpty(user.getName())){
wrapper.like("name","三");
}
if(user.getAge()!=null){
wrapper.between("age",10,25);
}
List list = userDao.selectList(wrapper);
System.out.println(list);
}
2、分页查询
创建一个配置类
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
测试
@Test
public void selectByPage(){
Page<User> page=new Page<>(1,5);
page=userDao.selectPage(page,null);
System.out.println("当前的页码:"+page.getCurrent());
System.out.println("得到总页码:"+page.getPages());
System.out.println("总条数:"+page.getTotal());
System.out.println("当前页码的记录:"+page.getRecords());
}