MyBatis Generator Example.Criteria 查询条件复制
生活随笔
收集整理的這篇文章主要介紹了
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
總結
以上是生活随笔為你收集整理的MyBatis Generator Example.Criteria 查询条件复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat的安装和配置及出错处理
- 下一篇: oracle 表空间-用户-授权-表创建