怎么利用反射生成MyBatisPlus中QueryWrapper动态条件
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了怎么利用反射生成MyBatisPlus中QueryWrapper动态条件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用反射生成MyBatisPl
千家信息网最后更新 2026年10月31日怎么利用反射生成MyBatisPlus中QueryWrapper动态条件
这篇文章主要介绍了怎么利用反射生成MyBatisPlus中QueryWrapper动态条件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用反射生成MyBatisPlus中QueryWrapper动态条件文章都会有所收获,下面我们一起来看看吧。
1.问题
在MyBatisPlus中经常会用到如下所示的代码来构造查询条件:
QueryWrapperqueryWrapper = new QueryWrapper<>();if (userQuery.getId() != null) { queryWrapper.eq("id", userQuery.getId());}if (userQuery.getName() != null) { queryWrapper.like("name", userQuery.getName());}if (userQuery.getNickname() != null) { queryWrapper.like("nickname", userQuery.getNickname());}if (userQuery.getAccount() != null) { queryWrapper.eq("account", userQuery.getAccount());}if (userQuery.getGender() != null) { queryWrapper.eq("gender", userQuery.getGender());}if (userQuery.getBirth2() != null) { queryWrapper.ge("birth", userQuery.getBirth2());}if (userQuery.getBirth3() != null) { queryWrapper.le("birth", userQuery.getBirth3());}if (userQuery.getTel() != null) { queryWrapper.eq("tel", userQuery.getTel());}if (userQuery.getEmail() != null) { queryWrapper.eq("email", userQuery.getEmail());}if (userQuery.getQq() != null) { queryWrapper.eq("qq", userQuery.getQq());}if (userQuery.getWechat() != null) { queryWrapper.eq("wechat", userQuery.getWechat());}if (userQuery.getHomePage() != null) { queryWrapper.eq("home_page", userQuery.getHomePage());}//.........baseMapper.selectPage(page, queryWrapper);
大量这样的代码,可以通过如下所示的反射技术生成,从而一劳永安逸,
2.优化方案
public class APP{ public static void main(String[] args) throws Exception { QueryWrapper queryWrapper = new QueryWrapper<>(); Dept dept = Dept.builder() .deptno(1234)// .dname("sales") .loc("NEWYORK") .build(); Method[] methods = Dept.class.getDeclaredMethods(); for (Method method : methods) { String methodName = method.getName(); if (methodName.contains("get")) { Object res = method.invoke(dept, null); if(res != null){ String columnName = getColumnName(methodName); queryWrapper.eq(columnName,res); } } } System.out.println(queryWrapper);//在此处设置断点,可以查看保存到QueryWrapper中的值 } // 根据getter方法名得到对应表的字段名 public static String getColumnName(String name) { StringBuffer sb = new StringBuffer(); name = name.substring(3, name.length()); //去掉get前缀 char[] chars = name.toCharArray(); for (int i = 0; i < chars.length; i++) { char item = chars[i]; if (item > 65 && item < 90) {//大写字母 sb.append("_"); sb.append((char)(item+32)); }else { sb.append(item); } } return sb.deleteCharAt(0).toString(); }} 关于"怎么利用反射生成MyBatisPlus中QueryWrapper动态条件"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么利用反射生成MyBatisPlus中QueryWrapper动态条件"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
条件
反射
生成
动态
知识
代码
内容
篇文章
价值
前缀
可以通过
大写
大写字母
字段
字母
常会
技术
操作简单
文章
断点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖南永感互联网科技有限公司
互联网科技金融
互联网科技小贷
互联网未来科技
狮子座互联网科技有限公司
互联网科技缩写
广州凡科互联网科技
亿人帮互联网科技
互联网科技博客
重庆科技学院互联网
互联网科技产品
中盈科技互联网信息有限公司
昭通云南众福互联网科技有限公司
苏州五指互联网络科技有限
杭州壁岐互联网科技有限公司
明优互联网科技有限公司
互联网公司高科技产品
中国互联网有什么科技
互联网风格科技公司名称
中国新注册互联网科技
互联网最新的科技
互联网科技金融公司
互联网科技论文
互联网金融科技平台
注册互联网科技公司经营范围大全
卓翼科技产业互联网合作
世界互联网科技成果奖
广西科技产业互联网是什么
福仕德教育科技互联网
北京军民互联网科技公司