💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
- 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 1.判断参数为空
- 1.1.在配置文件中加上全局配置
- 1.2.对某一字段单独进行判断非空
- 1.3.空值处理
- 2.list 查询
- 3.更新操作
- 4.删除操作
- 5.关于 null 的处理
- 6.查询操作
- 6.1.普通查询
- 6.2.批量查询
- 6.3.条件查询
- 6.4.非空筛选
- 6.5.排序
- 6.6.insql 包含
- 6.7.或者关系
- 6.8.年龄范围
- 6.9.王姓
- 6.10.年龄在数组
- 6.11.limit
- 6.12.只取需要字段
- 6.13.不取字段
- 6.14.不为空
- 6.15.实体为参数
- 6.16.AllEq 用法
- 6.17.排除不要的情况
- 6.18.selectMaps
- 6.19.having
- 6.20.selectObjs
- 6.21.selectCount
- 6.22.selectOne
- 6.23.使用 Lambda
- 6.24.使用 Lambda,名字为王姓
- 6.25.实际应用
- 6.26.wrapper 的 and 查询
- 6.27.条件判断
- 7.mybatis-plus 参数注解
1.判断参数为空
1.1.在配置文件中加上全局配置
mybatis-plus.global-config.db-config.field-strategy=not_empty
1.2.对某一字段单独进行判断非空
QueryWrapper<BillCust> queryWrapper = new QueryWrapper<BillCust>(BeanUtil.mapToBean(params, BillCust.class, false));
queryWrapper.lambda().eq(ObjectUtils.isNotEmpty(params.get("erpCustomerName")), BillCust::getErpCustomerName, params.get("erpCustomerName"));
1.3.空值处理
//mybatis-plus关于null的处理
/**
* 空值的情况,不会执行
*/
@Test
public void update() {
String carNumber = null;
accessControlSystemCarInfoMapper.update(new AccessControlSystemCarInfo(), Wrappers.<AccessControlSystemCarInfo>lambdaUpdate()
.set(AccessControlSystemCarInfo::getSecondWeight, new BigDecimal(50))
.eq(AccessControlSystemCarInfo::getCarNumber, null)
);
}
/**
* 空值的情况,会执行
*/
@Test
public void update1() {
accessControlSystemCarInfoMapper.update(new AccessControlSystemCarInfo(), Wrappers.<AccessControlSystemCarInfo>lambdaUpdate()
.set(AccessControlSystemCarInfo::getSecondWeight, new BigDecimal(50))
.isNull(AccessControlSystemCarInfo::getCarNumber)
);
}
2.list 查询
List<StoreCapacity> storeCapacities = storeCapacityService.list(new LambdaQueryWrapper<StoreCapacity>()
.eq(StoreCapacity::getBaseId, storeCapacityQueryVo.getBaseId())
.eq(StoreCapacity::getDeliveryMode, deliveryMode)
.eq(StoreCapacity::getPeriodDay, DateUtil.beginOfDay(storeCapacityQueryVo.getPeriodDay()))
.orderByAsc(StoreCapacity::getPeriodArrange)
);
3.更新操作
shipmentOrderDetailMapper.update(new ShipmentOrderDetail(), Wrappers.<ShipmentOrderDetail>lambdaUpdate()
.set(ShipmentOrderDetail::getDealerConfirm, DealerConfirmEnum.NOT_CONFIRM.getType())
.in(ShipmentOrderDetail::getId, ids)
);
4.删除操作
shipmentOrderMapper.delete(Wrappers.<ShipmentOrder>lambdaQuery()
.eq(ShipmentOrder::getId, id));
5.关于 null 的处理
/**
* 空值的情况,不会执行
*/
@Test
public void update() {
String carNumber = null;
accessControlSystemCarInfoMapper.update(new AccessControlSystemCarInfo(), Wrappers.<AccessControlSystemCarInfo>lambdaUpdate()
.set(AccessControlSystemCarInfo::getSecondWeight, new BigDecimal(50))
.eq(AccessControlSystemCarInfo::getCarNumber, null)
);
}
/**
* 空值的情况,会执行
*/
@Test
public void update1() {
accessControlSystemCarInfoMapper.update(new AccessControlSystemCarInfo(), Wrappers.<AccessControlSystemCarInfo>lambdaUpdate()
.set(AccessControlSystemCarInfo::getSecondWeight, new BigDecimal(50))
.isNull(AccessControlSystemCarInfo::getCarNumber)
);
}
6.查询操作
6.1.普通查询
/**
* 普通查询
*/
@Test
public void selectById() {
UserInfo userInfo = userInfoMapper.selectById(123);
System.out.println(userInfo);
}
6.2.批量查询
/**
* 批量查询
*/
@Test
public void selectByIds() {
List<Long> ids = Arrays.asList(123L,124L,125L);
List<UserInfo> userInfo = userInfoMapper.selectBatchIds(ids);
System.out.println(userInfo);
}
6.3.条件查询
/**
* 名字包含娟并且年龄小于30
*/
@Test
public void selectByWrapper() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.like("username","娟").lt("age",30);
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.4.非空筛选
/**
* 名字包含娟并且年龄大雨等于20且小于等于40并且email不为空
*/
@Test
public void selectByWrapper2() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.like("username","娟").between("age",20,30).isNotNull("email");
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.5.排序
/**
* 名字姓肖或者年量大雨等于20,按照年龄降序排列,年龄相同按照id生序排列
*/
@Test
public void selectByWrapper3() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.likeRight("username","肖")
.or().ge("age",20).orderByDesc("age").orderByAsc("id");
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.6.insql 包含
/**
* 创建日期为2019年10月2日并且直属上级名字为王姓
*/
@Test
public void selectByWrapper4() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.apply("date_format(create_time,'%Y-%m-%d')={0}","2019-10-07")
.inSql("parent_id","select id from user where username like '王%'");
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.7.或者关系
/**
* 名字为王姓并且(年龄小于40或邮箱不为空)
*/
@Test
public void selectByWrapper5() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.likeRight("username","王")
.and(wq->wq.lt("age",40))
.or().isNotNull("email");
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.8.年龄范围
/**
* 名字为王姓并且(年龄小于40并且大与20或邮箱不为空)
*/
@Test
public void selectByWrapper6() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.likeRight("username","王")
.and(wq->wq.lt("age",40).gt("age",20))
.or().isNotNull("email");
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.9.王姓
/**
* (年龄小于40或邮箱不为空)名字为王姓
*/
@Test
public void selectByWrapper7() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.nested(wq->wq.lt("age",40))
.or().isNotNull("email")
.likeRight("username","王");
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.10.年龄在数组
/**
* 年龄23,30,40
*/
@Test
public void selectByWrapper8() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.in("age",Arrays.asList(20,30,40));
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.11.limit
/**
* 只返回满足条件的其中一条语句即可
*/
@Test
public void selectByWrapper9() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.in("age",Arrays.asList(20,30,40)).last("limit 1");
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.12.只取需要字段
/**
* 名字中包含雨并且年龄小于40(只取id,username)
*/
@Test
public void selectByWrapper10() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.select("id","username").like("username","雨").lt("age",40);
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.13.不取字段
/**
* 名字中包含雨并且年龄小于40(不取create_time,parent_id两个字段,即不列出全部字段)
*/
@Test
public void selectByWrapper11() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.like("username","雨").lt("age",40)
.select(UserInfo.class,info->!info.getColumn().equals("create_time")&&
!info.getColumn().equals("parent_id"));
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.14.不为空
/**
* 姓名和邮箱不为空
*/
public void testCondition() {
String username = "王";
String email = "";
condition(username,email);
}
private void condition(String username,String email){
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.like(StringUtils.isNullOrEmpty(username),"name",username)
.like(StringUtils.isNullOrEmpty(email),"email",email);
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.15.实体为参数
/**
* 实体作为条件构造器方法的参数
*/
@Test
public void selectByWrapperEntity() {
UserInfo whereUser = new UserInfo();
whereUser.setUsername("xiaojuan");
whereUser.setAge(22);
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>(whereUser);
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.16.AllEq 用法
/**
* AllEq用法
*/
@Test
public void selectByWrapperAllEq() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
Map<String, Object> params = new HashMap<String, Object>();
params.put("nuserame","xiaojuan");
params.put("age",null);
queryWrapper.allEq(params);
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.17.排除不要的情况
/**
* AllEq用法(排除不是条件的字段)
*/
@Test
public void selectByWrapperAllEq2() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
Map<String, Object> params = new HashMap<String, Object>();
params.put("nuserame","xiaojuan");
params.put("age",null);
queryWrapper.allEq((k,v)->!k.equals("name"),params);
List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.18.selectMaps
/**
* selectMaps
*/
@Test
public void selectByWrapperMaps() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.like("name","肖").lt("age",40);
List<Map<String,Object>> userInfoList = userInfoMapper.selectMaps(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.19.having
/**
* 按照直属上级分组,查询每组的平均年龄,最大年龄,最小年龄。并且只取年龄总和小于500的组
*/
@Test
public void selectByWrapperMaps2() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.select("avg(age) avg_age","min(min) min_age","max(age) max_age")
.groupBy("parent_id").having("sum(age)<{0}",500);
List<Map<String,Object>> userInfoList = userInfoMapper.selectMaps(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.20.selectObjs
/**
* selectObjs
*/
@Test
public void selectByWrapperObjs() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.select("id","name").like("name","肖").lt("age",40);
List<Object> userInfoList = userInfoMapper.selectObjs(queryWrapper);
userInfoList.forEach(System.out::println);
}
6.21.selectCount
/**
* selectCount
*/
@Test
public void selectByWrapperCount() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.like("name","肖").lt("age",40);
Integer count = userInfoMapper.selectCount(queryWrapper);
System.out.println(count);
}
6.22.selectOne
/**
* selectOne
*/
@Test
public void selectByWrapperSelectOne() {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>();
queryWrapper.like("name","肖").lt("age",40);
UserInfo user = userInfoMapper.selectOne(queryWrapper);
System.out.println(user);
}
6.23.使用 Lambda
/**
* 使用Lambda
*/
@Test
public void selectLambda() {
// LambdaQueryWrapper<UserInfo> lambda = new QueryWrapper<UserInfo>().lambda();
LambdaQueryWrapper<UserInfo> lambda = new LambdaQueryWrapper<UserInfo>();
lambda.like(UserInfo::getUsername,"娟").lt(UserInfo::getAge,40);
List<UserInfo> userInfoList = userInfoMapper.selectList(lambda);
userInfoList.forEach(System.out::println);
}
/**
* 使用Lambda链式
*/
@Test
public void selectLambd3() {
List<UserInfo> userInfoList = new LambdaQueryChainWrapper<UserInfo>(userInfoMapper)
.like(UserInfo::getUsername,"娟").ge(UserInfo::getAge,20).list();
userInfoList.forEach(System.out::println);
}
6.24.使用 Lambda,名字为王姓
/**
* 使用Lambda,名字为王姓(年龄小于40或邮箱不为空)
*/
@Test
public void selectLambd2() {
LambdaQueryWrapper<UserInfo> lambda = new LambdaQueryWrapper<UserInfo>();
lambda.like(UserInfo::getUsername,"娟")
.and(lqw->lqw.lt(UserInfo::getAge,40).or().isNotNull(UserInfo::getEmail));
List<UserInfo> userInfoList = userInfoMapper.selectList(lambda);
userInfoList.forEach(System.out::println);
}
6.25.实际应用
@Override
public List<ShipmentOrderDto> getShipmentOrdersByIds(List<String> ids) {
if (CollectionUtils.isEmpty(ids)) {
throw new JeecgBootException(ResultEnum.REQUEST_PARAM_ERROR.getDesc());
}
List<ShipmentOrder> shipmentOrders = shipmentOrderMapper.selectList(Wrappers.<ShipmentOrder>lambdaQuery()
.in(ShipmentOrder::getTrainNumber, ids)
);
List<ShipmentOrderDto> orderDtoList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(shipmentOrders)) {
orderDtoList = shipmentOrders.stream().map(item -> {
ShipmentOrderDto orderCheckDTO = new ShipmentOrderDto();
BeanUtils.copyProperties(item, orderCheckDTO);
return orderCheckDTO;
}).collect(Collectors.toList());
}
return orderDtoList;
}
6.26.wrapper 的 and 查询
wrapper.and(i ->
i.like(ExtensionOrder::getProjectNo, projectSearch).or()
.like(ExtensionOrder::getProjectName, projectSearch));
LambdaQueryWrapper<ExtensionMisson> wrapper = Wrappers.lambdaQuery();
wrapper.and(i ->
i.like(ExtensionMisson::getSupplierName, supplierSearch).or()
.like(ExtensionMisson::getSupplierNo, supplierSearch));
6.27.条件判断
IPage<BaseDeliveryAreaManagement> pageList = baseDeliveryAreaManagementService.page(page, new LambdaQueryWrapper<BaseDeliveryAreaManagement>()
.eq(StringUtils.isNotBlank(storeAreaQueryVo.getBaseCode()),BaseDeliveryAreaManagement::getBaseCode, storeAreaQueryVo.getBaseCode())
.eq(StringUtils.isNotBlank(storeAreaQueryVo.getNature()),BaseDeliveryAreaManagement::getNature,storeAreaQueryVo.getNature())
.eq(StringUtils.isNotBlank(storeAreaQueryVo.getStatus()),BaseDeliveryAreaManagement::getStatus,storeAreaQueryVo.getStatus())
.eq(StringUtils.isNotBlank(storeAreaQueryVo.getType()),BaseDeliveryAreaManagement::getType,storeAreaQueryVo.getType())
.eq(BaseDeliveryAreaManagement::getDelFlag,0));
7.mybatis-plus 参数注解
@TableField(value = "cus_user_id") // @TableField(exist = true):表示该属性为数据库表字段。
private Integer cusUserId;
@TableField(exist = false) // 表示该属性不为数据库表字段,但又是必须使用的。
private Integer deptId;
@TableField(fill = FieldFill.INSERT)
@TableField(fill = FieldFill.INSERT_UPDATE)
觉得有用的话点个赞 👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙