MybatisPlus

可以链式,直接在后面点:lqw.lt(User::getAge,15).gt(User::getAge,25);

如果不是and是或,加一个.orlqw.lt(User::getAge,15).or().gt(User::getAge,25);

条件查询中出现null:

选择条件的时候选择有boolen判断的哪个,先判断是否为true,如果为true则执行

lqw.lt( null != userQuery.getAge(),User::getAge,15);

查询投影:

你要查询部分属性:

1.用lambda就挨个属性全写

2.如果要查询未定义的属性

@Test
public void contextLoads5() {
    QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
    userQueryWrapper.select("couunt(*) as count");
    List<Map<String, Object>> maps = userDao.selectMaps(userQueryWrapper);
    System.out.println(maps);
}
​
使用userQueryWrapper.select("couunt(*) as count");
和userDao.selectMaps(userQueryWrapper);

数据查询问题:

  • 当你的实体类和表名不一致,加注解@TableName("表名")

  • 当你的实体类字段名称和数据库内的不一致,加注解@TableField(value = 数据库属性名)

  • 当你的实体类属性在数据库中不存在时,加注解@TableField(exist = false)

  • 当有些属性不需要参与查询,加注解@TableField(select = false)

ID生成策略:

你需要设置id生成策略的时候:

在id上面加注解@TableId(type = IdType.生成方法)

可以设置为:

  • 数据库自增AUTO

  • 自己输入INPUT

  • 空NONE

  • 雪花算法ASSIGN_ID

  • uuid ASSIGN_UUID

每一个都需要写@TableId很麻烦:去yml配置文件中进行全局配置,输一个idtype就出来

同样可以设置数据库表名前缀:配置文件中输入table-prefix,就是给实体类查询数据库表时都加上这个前缀

例如实体类为user 配置 table-prefix:tbl_ 查询时自动查询tbl_user

多数据操作:删除和查询

按照id多个删除 userDao.deleteBatchIds()

按照id多个查询 userDao.selectBatchIds()

逻辑删除:

当一个员工离职后,删除她的名字和业绩,年终对业绩发现不匹配,会出现问题。

所以需要逻辑删除字段,员工后面加个1代表离职,0代表未离职。相当于做标记 ,避免了删除操作对业务的影响

使用时:

可以加注解@TableLogic(value = ,delval = )

更推荐在yml配置文件中配置:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deldete
      logic-not-delete-value: 0
      logic-delete-value: 1

乐观锁:

多人秒杀活动,到最后一个多人抢肯定会出问题,需要锁

使用方法:

1.数据库表中加一个字段

2.在实体类中加一个属性,加注解@Version

3.加一个拦截器OptimisticLockerInnerInterceptor(),mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());

代码生成器:

知道数据库信息后可以生成一个壳,前期不使用

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值