tkmybatis多条件、模糊查询

本文介绍了tkmybatis中如何进行多条件和模糊查询,强调了在设置查询条件时需要注意的细节。当学号或姓名为空时,不应添加相应筛选条件以避免影响查询结果。示例代码展示了如何根据学号和姓名创建Example对象并执行查询,同时提醒注意selectByExample方法的正确使用,避免将criteria对象直接传入导致错误。
摘要由CSDN通过智能技术生成

tkmybatis多条件、模糊查询

Example e1 = new Example(Student.class);
Example.Criteria criteria = e1.createCriteria();
// 1. 学号不为空则添加查询条件
if (StringUtils.isNotBlank(student.getPsnCode)){
	criteria.andEqualTo("psnCode",student.getPsnCode);
}
// 2. 姓名不为空则模糊查询
if (StringUtils.isBlank(student.getPsnName)){
	criteria.andLike("psnName","%" + student.getPsnName() + "%");
}
//3.查询
List<Student> students = studentMapper.selectByExample(e1);

几个注意事项

  1. 不能缺少以上1、2判断为空步骤
    若直接写成
    example.createCriteria()
    		.andEqualTo("psnCode",student.getPsnCode);
            .andLike("psnName","%" + student.getPsnName() + "%");
    
    当学号、姓名为空,想要查询所有数据时
    • 其中如果学号为null,则不添加学号的筛查,没问题。但如果学号为""(空串),则会添加学号的筛查;
    • 姓名的模糊查询,即使姓名为null,或者是姓名为""(空串),还是会做过滤,得到的sql如下
      SELECT * from student where psn_code = '' and psn_name like '%%'
      #或者
      SELECT * from student where psn_code = '' and psn_name like '%null%'
      
      这和我们想要的查询所有数据的sql明显不一致
      SELECT * from student 
      
  2. studentMapper.selectByExample(e1)的使用
    需要注意,不要不小心写成studentMapper.selectByExample(criteria),这种写法编译不会报错;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值