java中动态查询条件,Java实现动态添加查询条件

今天遇到一个问题,就是需要根据前端页面发送的条件查询数据库记录,但是前端发送的条件是不确定的。如果使用mybatis的xml方法可以使用if标签灵活的添加判断条件,但是现在我使用的就是单纯的sql。

我是这样解决的:

e184f8236f29e764008ea16882c01888.png

使用case when 语句可以完成这样的sql拼接。值得注意的是判断的时候用的是is null/is not null,而不要使用=/!=

昨天忘了判断空字符串,修改如下:

8c7bcde7f5d5401aaeaf58e3b5d7da49.png

之前是直接使用sql实现,今天使用java的方式实现动态添加查询条件:

操作如下:

(1)首先创建一个类封装查询条件

cac6e8ca23ed5817fc29c93e2f47d3de.png

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方法调用

4457e40e7ff5ef842aa0b2fe3ee336f8.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值