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= Ciname();
String citelephone= Citelephone();
int cisex= Cisex();
String cibirthday= Cibirthday();
String cizipcode= Cizipcode();
String cifax= Cifax();
String ciofficename= Ciofficename();
String ciareacode=  Ciareacode();
String ciareafullname= Ciareafullname();
String ciaddress= Ciaddress();
String cimodifiedtime= Cimodifiedtime();
sql.append("select  ciid,ciname,citelephone,cisex,cibirthday,cizipcode,cifax,ciofficename,ciareacode ," + "ciareafullname,ciaddress,cimodifiedtime  from  qb_customer_info where 1=1 ");sql语句查询不包含
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+"'");
}
String();
}
(3)使⽤@SelectProvider⽅法调⽤
如有不同意见,欢迎指正!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。