首先引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
在这里我使用的版本比较新一点,
接着就是如何使用了:
下面的配置都是根据自己实际业务来配置:
1,配置分页,和乐观锁
@EnableTransactionManagement
@Configuration
@MapperScan("com.example.demo.dao")
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
/**
* 乐观锁配置
* SQL原理
* update tbl_user set name = 'update',version = 3 where id = 100 and version = 2
* @return
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
乐观锁使用:一定要记得在实体属性上配置@Version这个注解:
@Version
private Integer version;
顺便提一下@TableLogic 这个注解是用来做逻辑删除 如:
@TableLogic(delval = "-1")
private Integer deleted;
很多时候我们会碰到要处理一些相同字段数据,比如插入时候要把创建人和创建时候加上,更新把更新人和更新时间加上。这个配置需要手动实现一下MetaObjectHandler.class
/**
* mp实现注解填充值
* @author Administrator
*
*/
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.fillStrategy(metaObject, "createTime", new Date()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如`3.3.1.8-SNAPSHOT`)
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.fillStrategy(metaObject, "updateTime", new Date()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如`3.3.1.8-SNAPSHOT`)
}
}
实体类字段上再加上:
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
附上测试:
@SpringBootTest
public class MpTest {
@Autowired
private CustomerService customerService;
@Test
public void mp(){
List<Customer> list = customerService.list();
System.err.println(list.size());
}
@Test
public void bachTest(){
List<Customer> customers = Lists.newArrayList();
Customer customer1 = new Customer(UUID.randomUUID().toString(), "徐峰年", "");
Customer customer2 = new Customer(UUID.randomUUID().toString(),"赵文肖", "");
customers.add(customer1);
customers.add(customer2);
customerService.saveBatch(customers);
}
@Test
public void pageTest(){
Page<Customer> page = new Page<>(0, 2);
page = customerService.page(page);
System.err.println(page);
}
/**
* 测试逻辑删除
*/
@Test
public void deleteTest(){
customerService.removeById("1");
}
/**
* 乐观锁测试
*/
@Test
public void versionTest(){
Customer entity = new Customer();
entity.setId("1");
entity.setName("znnnn");
entity.setVersion(0);
customerService.updateById(entity );
}
}
以上就完成了基本业务的操作!
源码在更新完基本集成基础使用后更新出来!谢谢