怎么利用反射生成MyBatisPlus中QueryWrapper动态条件
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了怎么利用反射生成MyBatisPlus中QueryWrapper动态条件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用反射生成MyBatisPl
千家信息网最后更新 2025年01月19日怎么利用反射生成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 { QueryWrapperqueryWrapper = 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安全错误
数据库的锁怎样保障安全
网络安全管理岗位竞聘
国产服务器运营商
中国联通网络技术研究院杨健剑
滕州网络安全工作地点
魔兽世界服务器pve
服务器我的世界
天刀新开服务器
服务器markdown搭建
什么是数据库访问类
购物网站数据库建立
新建信息系统网络安全经费保障
医院网络安全领导小组名单
泰安市委网络安全宣传
国家网络安全观感300字
realdata数据库
朝阳区正规软件开发价目表
数据库维护实践
两台dhcp服务器
河北服务器虚拟化价格
软件开发专业课
网络安全课后评估
网络安全法里对安全事件的要求
踢出服务器
批量导出sql数据库
数据库非关系模型基本层次联系
房山区互联网网络技术咨询哪家好
软件开发公司需要做哪些vi
女博士日记软件开发
钉钉安全服务器
市面上主流的云服务器都有啥