java中动态查询条件,Java实现动态添加查询条件
今天遇到一个问题,就是需要根据前端页面发送的条件查询数据库记录,但是前端发送的条件是不确定的。如果使用mybatis的xml方法可以使用if标签灵活的添加判断条件,但是现在我使用的就是单纯的sql。
我是这样解决的:
使用case when 语句可以完成这样的sql拼接。值得注意的是判断的时候用的是is null/is not null,而不要使用=/!=
昨天忘了判断空字符串,修改如下:
之前是直接使用sql实现,今天使用java的方式实现动态添加查询条件:
操作如下:
(1)首先创建一个类封装查询条件
2)然后创建一个类封装查询方法
public class CustomerPartnerDaoP {
public String selectPartner( GetParmeter getParmeter) {
StringBuilder sql = new StringBuilder();
String ciname= getParmeter.getCiname();
String citelephone= getParmeter.getCitelephone();
int cisex= getParmeter.getCisex();
String cibirthday= getParmeter.getCibirthday();
String cizipcode= getParmeter.getCizipcode();
String cifax= getParmeter.getCifax();
String ciofficename= getParmeter.getCiofficename();
String ciareacode= getParmeter.getCiareacode();
String ciareafullname= getParmeter.getCiareafullname();
String ciaddress= getParmeter.getCiaddress();
String cimodifiedtime= getParmeter.getCimodifiedtime();
sql.append("select ciid,ciname,citelephone,cisex,cibirthday,cizipcode,cifax,ciofficename,ciareacode ," +
"ciareafullname,ciaddress,cimodifiedtime from qb_customer_info where 1=1 ");
if(!Objects.isNull(ciname) && !"".equals(ciname)){
sql.append(" and ciname").append("=").append("'"+ciname+"'");
}
if(!Objects.isNull(citelephone) && !"".equals(citelephone)){
sql.append(" and citelephone").append("=").append("'"+citelephone+"'");
}
if(!Objects.isNull(cisex) && !"".equals(cisex)){
sql.append(" and cisex").append("=").append(cisex);
}
if(!Objects.isNull(cibirthday) && !"".equals(cibirthday)){
sql.append(" and cibirthday").append("=").append("'"+cibirthday+"'");
}
if(!Objects.isNull(cizipcode) && !"".equals(cizipcode)){
sql.append(" and cizipcode").append("=").append("'"+cizipcode+"'");
}
if(!Objects.isNull(cifax) && !"".equals(cifax)){
sql.append(" and cifax").append("=").append("'"+cifax+"'");
}
if(!Objects.isNull(ciofficename) && !"".equals(ciofficename)){
sql.append(" and ciofficename").append("=").append("'"+ciofficename+"'");
}
if(!Objects.isNull(ciareacode) && !"".equals(ciareacode)){
sql.append(" and ciareacode").append("=").append("'"+ciareacode+"'");
}
if(!Objects.isNull(ciareafullname) && !"".equals(ciareafullname)){
sql.append(" and ciareafullname").append("=").append("'"+ciareafullname+"'");
}
if(!Objects.isNull(ciaddress) && !"".equals(ciaddress)){
sql.append(" and ciaddress").append("=").append("'"+ciaddress+"'");
}
if(!Objects.isNull(cimodifiedtime) && !"".equals(cimodifiedtime)){
sql.append(" and cimodifiedtime").append("=").append("'"+cimodifiedtime+"'");
}
return sql.toString();
}
3)使用@SelectProvider方法调用
java中动态查询条件,Java实现动态添加查询条件相关推荐
- java中函数的调用,java中如何调用函数
java动态调用函数,Java 中使用动态代码,java函数调用,java中如何调用函数 如何在 Java 中调用 C 函数 宗薇 [期刊名称]<网络新媒体技术> [年(卷),期]2000 ...
- Java 中的 XML:Java 文档模型的用法
Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
文章目录 使用JMH做性能测试 BenchmarkMode Fork和Warmup State和Scope 在java中使用JMH(Java Microbenchmark Harness)做性能测试 ...
- java 泛型详解、Java中的泛型方法、 java泛型详解
本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...
- Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决
Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决 参考文章: (1)Java中使用json时java.lan ...
- java中的LinkedList(链表)与ArrayList(动态数组):(1)简单辨析
一.数组的缺点(为什么需要引入JAVA集合): 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合. 首先数组可以存放基本数据类型和对象, ...
- java中的静态语言_java是动态语言还是静态语言?
java是静态语言.Java是在编译时期确定的变量类型且在运行时期不能改变,在类型转换方面也是强制的,例如大范围整数类型转换为小范围整数类型时必须要强转,如int必须强制转换才能得到小范围类型byte ...
- java中imp结尾,imp java
适配器模式之桥梁模式 设计模式目录 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox 桥梁模式 Bridge Pattern ...
- Java中的反射和Java中的访问修饰符
什么是反射? ①在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性 ②对于任何一个对象,我们都能够对它的方法和属性进行调用 总而言之:它反射Java语言中的一种机制,通过这种机制可以动 ...
- java中iterator_如何在Java中读取CSV文件-Iterator和Decorator的案例研究
java中iterator 在本文中,我将讨论如何使用Apache Common CSV读取CSV(逗号分隔值)文件. 从这个案例研究中,我们将学习如何在设计模式的上下文中使用Iterator和Dec ...
最新文章
- 递归解决八皇后问题-小昝
- Android开发傲娇之作
- Android开发之LisitView的图文并排效果实现(源代码分享)
- linux 程序定时重启tomcat,linux下实现tomcat定时自动重启
- AtCoder Beginner Contest 096 题解
- 还原数据库:The backup set holds a backup of a database other than the existing database……
- 语法之知识点的改进(Func/Action)
- node.js 知识分享网站源码【毕业设计】
- java调用万网域名接口
- 线和面的方程区别_平面方程和直线方程的区别?
- hdoj 1163 Eddy's digital Roots(数学问题,继续分析) .
- python(3.10,Win10 64位)的wordcloud安装
- 用java画哆啦a梦,来画哆啦A梦吧!
- 宝宝出生前妈妈准备物品清单
- BUUCTF msic 专题(120)[QCTF2018]X-man-A face
- 计算方法--函数插值
- 【案例9】sysConfig 中文乱码(方块)
- 本机配置nginx后css样式失效
- ssh与scp 连接机器与传输文件
- 《权威指南》笔记 -- 8.5 、8.6
热门文章
- 老任的病房太冷清,夫人憔悴孩子无助
- strptime和strftime函数
- 解决微信开发者工具:当前系统代理不是安全代理,是否信任
- java 项目 断言_Java断言
- SSH 登陆失败 Permission denied (publickey) 排错
- 【用户画像】ClickHouse中的数据类型、表引擎介绍及使用、项目几个问题的解决办法
- Python turtle.onclick()用法及代码示例
- dcf是ea211发动机吗_神车发动机解读:EA211到底牛掰在哪儿?
- 如果让莎士比亚、海明威编写JavaScript代码
- 【TypeScript】一文带你了解什么是TypeScript