记录springboot及项目中的一些集成(3)springboot mybatisPlus

首先引入依赖

<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 );
	}
}

以上就完成了基本业务的操作!
源码在更新完基本集成基础使用后更新出来!谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值