MyBatis Generator Example.Criteria 查询条件复…
2019-08-16 11:17:55来源:博客园 阅读 ()
MyBatis Generator Example.Criteria 查询条件复制
背景:
我们在开发中使用MyBatis Generator生成的 XxxExample查询时,咋添加 or 查询时候,可能两个 Example.Criteria 对象的条件存在交集,即多个查询条件是相同的。每个查询条件的添加可能需要进行多种逻辑判断,这样多个 Example.Criteria 就要判断多次,造成代码的大量重复及效率的浪费。
实现:
有没有一种方法可以将 Example.Criteria A的查询条件复制到 Example.Criteria B的方法呢,不多讲了看下面代码实现。
/** * 拷贝查询条件工具 * * @author ZQC * @version 1.0 2018-11-29 * */ public class CriteriaTools { /** * 拷贝查询条件;仅将原Criteria中的condition复制到目标Criteria,不会覆盖目标Criteria已有condition * * @param source 原Criteria * @param target 目标Criteria */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static <T> void copyCondition(T source, T target) { if (null != source && null != target) { try { Field field = source.getClass().getSuperclass().getDeclaredField("criteria"); field.setAccessible(true); List sourceCriteria = (List) field.get(source); List targetCriteria = (List) field.get(target); targetCriteria.addAll(sourceCriteria); } catch (Exception e) { e.printStackTrace(); } } } // 使用方法 public static void main(String[] args) { UserExample example = new UserExample(); UserExample.Criteria c1 = example.createCriteria(); c1.andIdEqualTo("abc").andUsernameEqualTo("123");// c1添加两个条件 UserExample.Criteria c2 = example.or(); c2.andIdLike("1");// c2增加一个条件 CriteriaTools.copyCondition(c1, c2);// 拷贝条件 c1.andPasswordEqualTo("555").andPasswordIsNull();// c1添加两个条件 System.out.println("c1 " + c1.getAllCriteria().size()); System.out.println("c2:" + c2.getAllCriteria().size()); } }
总结:
这里主要使用了反射、泛型等技术,没有什么高深的技术,但工具类确实能给开发人员带来极大方便,及程序效率上的提升。
原文链接:https://www.cnblogs.com/a2b1/p/11255035.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java面试题-基础篇三(干货)
下一篇:java运行环境搭建
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 天哪!手动编写mybatis雏形竟然这么简单 2020-06-06
- MyBatis整合双数据源 2020-06-04
- MyBatis缓存特性详解 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash