sql语句实现动态添加查询条件
今天遇到一个问题,就是需要根据前端页面发送的条件查询数据库记录,但是前端发送的条件是不确定的。如果使用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方法调用
如有不同意见,欢迎指正!
sql语句实现动态添加查询条件相关推荐
- java中动态查询条件,Java实现动态添加查询条件
今天遇到一个问题,就是需要根据前端页面发送的条件查询数据库记录,但是前端发送的条件是不确定的.如果使用mybatis的xml方法可以使用if标签灵活的添加判断条件,但是现在我使用的就是单纯的sql. ...
- LINQ to SQL 运行时动态构建查询条件
原文地址:http://msdn.microsoft.com/zh-cn/dd567295.aspx 在进行数据查询时,经常碰到需要动态构建查询条件.使用LINQ实现这个需求可能会比以前拼接SQL语句 ...
- Oracle 数据库 - sql语句筛选出符合查询条件的第一条结果实例演示,sql查询结果只显示指定行数的数据方法
默认看到查询条件有 3 条结果,我想只查询出日期最晚的那一条记录. -- 默认查询条件 select settledate as "日期", syscalculationmny a ...
- mybatis循环Map动态添加查询条件
使用Map存储键值对,用于动态的拼接where条件后的 列和值 dao层接口: public List<Map<String,Object>> getData(@Param(& ...
- 报表下拉框多选查询及一般在sql中添加查询条件
1.sql SELECT * FROM [销量] where 1=1 ${if(len(销售员1) == 2,"","and 销售员 in (" + 销售员1 ...
- mysql给字段添加描述_用sql 语句给字段添加描述
用sql 语句给字段添加描述 IF not exists (SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', ...
- JDBC查询数据库时出现 sql语句正确,但是查询英文可以,汉字不行的情况解决办法
sql语句正确,但是查询英文可以,汉字不行的情况解决办法 出现这种情况是因为编码格式的原因,我们在设置数据库的URL时一般会设置为 Connection conn = DriverManager.ge ...
- SQL 语句的多表查询方式
SQL 语句的多表查询方式 例如:按照 department_id 查询 employees(员工表)和 departments(部门表) 的信息. 方式一(通用型): SELECT ... FROM ...
- SQL语句多表关联查询语法
**sql语句多表关联查询语法** 一.外连接 1.左连接 left join 或 left outer join SQL语句:select * from student left join scor ...
- 转在同一个sql语句中如何写不同条件的count数量
今天在做Portal中的Dashboard展现的时候,需要对多个统计字段做展现,根据我现在的掌握水平,我只能在sql调用构建器中实现一种sql语 句返回的resultSet做展现.没有办法,只能从数据 ...
最新文章
- python自动整理文件夹_计算机文件和文件夹的Python自动管理,自动化,电脑,及
- sleep() wait() notify/notifyAll() 的区别
- 【Python项目】CMDB的搭建12(SaltStack配置小结2/2)
- MongoDB GridFS 存储文件
- 深度复制_Python 列表切片陷阱:引用、复制与深复制
- 获取元素到页面顶部的距离_组成网站页面结构的元素有哪些?
- 《2012》:让灾难成为一场洗礼
- 深度学习中用到的一些函数
- atititt.java定时任务框架选型Spring Quartz 注解总结
- Spring框架之演示JDBC的模板类
- 大学英语综合教程四 Unit 7 课文内容英译中 中英翻译
- 程序员要知道的英语词汇
- 最全面计算机英语单词列表(四)
- 【LeetCode】【VSCode】在VSCode中使用插件刷题
- Linux实验5——Apache、虚拟主机
- nvidia jetson nano 操作指南
- 2019-01-25T01:30:00.000+0000 格式转换
- 微信小程序使用日历插件
- ecmall 如何新增挂件
- 解决ArcGIS 9.3 - 10.2.2的一个BUG