
MyBatis学习总结(27)——Mybatis-Plus使用小技巧
发布日期:2025-04-14 07:41:20
浏览次数:10
分类:精选文章
本文共 3408 字,大约阅读时间需要 11 分钟。
MyBatis-Plus 条件查询与分页优化
在MyBatis-Plus中,条件查询与分页操作是常用的功能,以下是对这些操作的详细说明和实践示例。
条件查询(QueryWrapper)
1. 基本条件查询
要在用户信息表中筛选出年龄等于20的用户,可以使用QueryWrapper
构建条件。
QueryWrapper queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", 20);ListuserInfoList = userInfoMapper.selectList(queryWrapper);
2. Lambda表达式
当字段名较多或易于混淆时,可以使用Lambda表达式来构建条件。
QueryWrapper queryWrapper = new QueryWrapper<>();queryWrapper.lambda() .eq(UserInfo::getAge, 20);ListuserInfoList = userInfoMapper.selectList(queryWrapper);
3. LambdaQueryWrapper
LambdaQueryWrapper
与QueryWrapper
的Lambda写法一致,适用于动态条件。
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(UserInfo::getAge, 20);ListuserInfoList = userInfoMapper.selectList(queryWrapper);
分页查询
1. 基本分页
使用Page
对象进行分页查询。
Pagepage = new Page<>(currentPage, pageSize);IPage iPage = userInfoMapper.selectPage(page, queryWrapper);
2. 分页查询(联表)
当需要联表分页时,创建UserInfoVO
类并配置XML映射。
public class UserInfoVO extends UserInfo { private String sexText;}
在UserInfoMapper
中定义分页方法。
IPageiPage = userInfoMapper.list(page, queryWrapper);
在UserInfoServiceImpl
中调用分页方法。
Pagepage = new Page<>(page, limit);IPage iPage = userInfoMapper.list(page, queryWrapper);List userInfoList = iPage.getRecords();
3. 分页查询(默认条件)
如果不需要额外条件,queryWrapper
可设为null
。
Pagepage = new Page<>(page, limit);IPage iPage = userInfoMapper.selectPage(page, null);List userInfoList = iPage.getRecords();
AND与OR的使用
1. 基本组合
构建包含AND和OR条件的查询。
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(UserInfo::getId, "1") .and(i -> i.eq(UserInfo::getName, "jack")) .or(i -> i.eq(UserInfo::getPhone, "13888888888"));ListuserInfoList = userInfoMapper.selectList(queryWrapper);
2. 复杂组合
构建更复杂的条件组合。
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(UserInfo::getId, "1") .and(i -> i.and(j -> j.eq(UserInfo::getName, "jack").eq(UserInfo::getCategory, 1))) .or(j -> j.eq(UserInfo::getPhone, "13888888888").eq(UserInfo::getCategory, 2));ListuserInfoList = userInfoMapper.selectList(queryWrapper);
逻辑删除(@TableLogic)
在用户信息表中添加逻辑删除字段del_flag
,通过注解配置。
@ApiModelProperty(value = "删除状态(0--未删除1--已删除)")@TableField("del_flag")@TableLogicprivate Integer delFlag;
配置MyBatis-Plus全局配置,启用逻辑删除。
在查询时,逻辑删除条件会自动添加。
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(UserInfo::getAge, 20);ListuserInfoList = userInfoMapper.selectList(queryWrapper);
指定查询字段
为了提高查询效率,可以指定只需查询的字段。
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();queryWrapper.select(UserInfo::getId, UserInfo::getName, UserInfo::getPhone) .eq(UserInfo::getAge, 20);ListuserInfoList = userInfoMapper.selectList(queryWrapper);
查询一条数据(getOne)
使用getOne
方法查询单条数据,需注意唯一性。
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(UserInfo::getOpenId, openId);UserInfo userInfo = userInfoService.getOne(queryWrapper);
当多个记录存在时,可传false
避免异常。
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(UserInfo::getOpenId, openId);UserInfo userInfo = userInfoService.getOne(queryWrapper, false);
总结
以上方法可以帮助开发者高效地进行条件查询和分页操作。在实际项目中,根据具体需求选择合适的方法,确保代码的可读性和可维护性。通过合理使用QueryWrapper
、分页组件以及注解配置,可以显著提升代码效率和用户体验。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年05月25日 00时29分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mac 下使用sourcetree操作git教程
2025-04-11
mac 下如何建立vue-cli项目
2025-04-11
Mac 在命令行快速切换目录 mark
2025-04-11
mac 安装PIL
2025-04-11
Mac 开发PhoneGap 应用,怎样加入插件 barcodescaner
2025-04-11
mac 搭建APK反编译环境[转]
2025-04-11
MAC 显示隐藏文件
2025-04-11
Mac 的“任务管理器” —— 活动监视器
2025-04-11
mac 配置环境变量,讲的太仔细了,非常棒
2025-04-11
mac-gradle的安装和配置
2025-04-11
mac/ip/TCP/udp报文格式与理论大小
2025-04-11
Mac:Permission denied XXX
2025-04-11
macaca 测试web(2)
2025-04-11
Macbook / pro卡顿怎么处理?这些方法让它满血复活!
2025-04-11
MacBook Air怎么重新输入wifi密码
2025-04-11
MacBook Pro 休眠后五国,自动重启报错
2025-04-11
Macbook Pro下Bootcamp上win7截图方法
2025-04-11
MacBook开机出现问号文件夹?别急 可能是这些原因!
2025-04-11