MybatisPlus
1. 什么是MybatisPlus
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
2.MybatisPlus预先配置
2.1 导入依赖
SpringBoot2版本
1 2 3 4 5
| <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.4</version> </dependency>
|
2.x 配置yaml
1 2 3 4 5 6 7
| mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml type-aliases-package: com.itheima.mp.domain.po global-config: db-config: id-type: auto
|
2.x 继承BaseMapper接口
在需要使用MybatisPlus的Mapper接口中继承BaseMapper
1 2
| public interface UserMapper extends BaseMapper<User> { }
|
3.使用MybatisPlus
1.基础查询
使用BaseMapper中自带的单表查询语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| @Test void testInsert() { User user = new User(); user.setId(5L); user.setUsername("Lucy"); user.setPassword("123"); user.setPhone("18688990011"); user.setBalance(200); user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}"); user.setCreateTime(LocalDateTime.now()); user.setUpdateTime(LocalDateTime.now()); userMapper.insert(user); }
@Test void testDelete(){ int i = userMapper.deleteById(5L); System.out.println("删除受影响行"+i);
}
@Test void testSelect(){ User user = userMapper.selectById(4L); System.out.println(user); }
@Test void testUpdate(){ User user = new User(); user.setUpdateTime(LocalDateTime.now()); user.setUsername("Lucy"); user.setId(5L); int i = userMapper.updateById(user); System.out.println("更新受影响行"+i); }
|
x.处理对象属性
x.1 创建属性对象POJO类
1 2 3 4 5 6 7 8 9 10 11
| package com.itheima.mp.domain.po;
import lombok.Data;
@Data public class UserInfo { private Integer age; private String intro; private String gender; }
|
x.2 这实体类中添加注解
属性
1 2
| @TableField(typeHandler = JacksonTypeHandler.class) private UserInfo info;
|
类
1 2 3
| @Data @TableName(value = "tb_user",autoResultMap = true) public class User {
|
x. 使用MybatisPlusInterceptor分页插件
x.1 编写拦截器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package com.itheima.mp.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
@Configuration public class MybatisPlusConfig {
@Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); paginationInnerInterceptor.setMaxLimit(1000L); interceptor.addInnerInterceptor(paginationInnerInterceptor); return interceptor; } }
|
x.2 使用分页插件
1 2 3 4 5 6 7 8 9 10 11 12 13
| @Test void pageSelect(){ Page<User> page = new Page<>(2,3); page.addOrder(new OrderItem("balance",false)) .addOrder(new OrderItem("id",true)); Page<User> pageResult = userService.page(page); System.out.println("total:"+ pageResult.getTotal()); System.out.println("pages:"+ pageResult.getPages()); List<User> records = pageResult.getRecords(); records.forEach(System.out::println);
}
|