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 查询条件复制相关推荐
- 【Java Web开发指南】mybatis的Example[Criteria]的使用
Criteria英文是标准.条件和准则的意思 **在使用常规的mybatis时,我们经常碰到的问题就是条件式查询.在一个查询界面,查询条件较多,并且运算符并不总是=时,在后台就需要拼装sql语句.** ...
- mybatis中关于example类详解mybatis的Example[Criteria]的使用
一.什么是example类 mybatis-generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大.理论上通过example类可以构造你想到的 ...
- tk.mybatis - 使用 Example 类进行条件查询
通用 Example 一.查询 1.selectOneByExample示例如下: Example example = new Example(OrderRemark.class); example. ...
- hibernate Criteria(条件查询接口)
Criteria(条件查询接口) // 1.简单查询 List<Customer> list = session.createCriteria(Customer.class).list() ...
- MyBatis - MyBatis Generator 生成的example 如何使用 and or 简单混合查询
简单介绍: Criteria,包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系. oredCriteria,Example内有一个 ...
- Mybatis generator(复制粘贴完成)
命令行模式 1.java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml 2.Maven plugin(my ...
- 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...
mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String f ...
- hibernate的查询条件lt_鱼与熊掌得兼:Hibernate与Mybatis共存
架构师(JiaGouX)我们都是架构师! 架构未来,你来不来? 很长一段时间,网上有很多关于Hibernate与Mybatis孰优孰劣的争论,两个阵营的人谁也不能说服谁,每个人的理由都很有道理.今天, ...
- hibernate的查询条件lt_hibernate的多条件查询——Criteria Query的应用
查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中.此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条 ...
最新文章
- java冻结行列,poi冻结行和列 - osc_0k23td2u的个人空间 - OSCHINA - 中文开源技术交流社区...
- c 怎么连接mysql博客_C连接MySql数据库
- markdown绘图插件----mermaid简介
- BZOJ2190 SDOI2008 仪仗队
- Tiktok培训可以去学习吗?
- Spring的bean管理(注解注入属性)
- 基于javaweb+mysql数据库实现的宠物领养|流浪猫狗网站项目源代码
- python中的写入文件
- Word2010怎么绘制斜线表头
- 图像取证:源识别和伪造检测(Image Forensics: source identification and tampering detection)
- NS-miracle安装
- jira图片_JIRA issue 中的标记语言(Textile)
- AliOS-Things--EMW3060使用笔记--GPIO
- js 根据身份证获取出生日期与年龄
- 王姨劝我学HarmonyOS鸿蒙2.0系列教程之二应用知识梳理逻辑!
- Arrays.asList 转换数组成list集合失败的原因
- 《近匠》从Cubieboard到radxa:汤亮的第二次硬件创业
- C++作业 设计一个程序实现油桶面积与体积的计算(构造函数与析构函数)
- VUE探索第二篇-手脚架(vue-cli)
- 递推 SDUT 鬼吹灯之龙岭迷窟