mybatis Example Criteria like模糊查询问题怎么解决
这篇“mybatis Example Criteria like模糊查询问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mybatis Example Criteria like模糊查询问题怎么解决”文章吧。
简介
XXXExample类用于构造复杂的筛选条件
它包含一个名为Criteria的内部静态类,它包含将在where子句中一起结合的条件列表。
Criteria类的集合允许您生成几乎无限类型的where子句。
可以使用createCriteria方法或or方法创建Criteria对象。
当使用createCriteria方法创建第一个Criteria对象时,它会自动添加到Criteria对象列表中 -
如果不需要其他子句,则可以轻松编写简单的Where子句。使用or方法时,Criteria类将添加到所有实例的列表中。
官方建议仅使用or方法创建Criteria类。这种方法可以使代码更具可读性。
Criteria类
Criteria内部类包括每个字段的andXXX方法,以及每个标准SQL谓词
包括:
字段方法 | 含义 |
---|---|
IS NULL | 表示相关列必须为NULL |
IS NOT NULL | 表示相关列不能为NULL |
=(等于) | 表示相关列必须等于方法调用中传入的值 |
<>(不等于) | 表示相关列不能等于方法调用中传入的值 |
>(大于) | 表示相关列必须大于方法调用中传入的值 |
> =(大于或等于) | 表示相关列必须大于或等于方法调用中传入的值 |
<(小于) | 表示相关列必须小于方法调用中传入的值 |
<=(小于或等于) | 表示相关列必须小于或等于方法调用中传入的值 |
LIKE | 意味着相关列必须“类似”方法调用中传入的值。代码不会添加所需的’%’,您必须自己在方法调用中传入的值中设置该值。 |
NOT LIKE | 意味着相关列必须“不喜欢”方法调用中传入的值。代码不会添加所需的’%’,您必须自己在方法调用中传入的值中设置该值。 |
BETWEEN | 意味着相关列必须“在”方法调用中传入的两个值之间。 |
NOT BETWEEN | 意味着相关列必须“不在”方法调用中传入的两个值之间。 |
IN | 表示相关列必须是方法调用中传入的值列表之一。 |
NOT IN | 表示相关列不能是方法调用中传入的值列表之一。 |
简单实例
生成简单的WHERE子句
TestTableExample example = new TestTableExample(); example.createCriteria().andField1EqualTo(5);
或者
TestTableExample example = new TestTableExample(); example.or().andField1EqualTo(5);
实际上动态生成的where子句是这样
where field1 = 5
复杂查询
TestTableExample example = new TestTableExample(); example.or() .andField1EqualTo(5) .andField2IsNull(); example.or() .andField3NotEqualTo(9) .andField4IsNotNull(); List<Integer> field5Values = new ArrayList<Integer>(); field5Values.add(8); field5Values.add(11); field5Values.add(14); field5Values.add(22); example.or() .andField5In(field5Values); example.or() .andField6Between(3, 7);
实际上动态生成的where子句是这样
where (field1 = 5 and field2 is null) or (field3 <> 9 and field4 is not null) or (field5 in (8, 11, 14, 22)) or (field6 between 3 and 7)
可以通过在任何示例类上调用setDistinct(true)方法来强制查询为DISTINCT。
模糊查询实战
自己根据理解配合PageHelper做了一个简单的多条件模糊查询加深理解
具体实现如下,支持多个字段的同时搜索
PageHelper.startPage(pageNum,pageSize); TbBrandExample example = new TbBrandExample(); TbBrandExample.Criteria criteria = example.createCriteria(); if (tbBrand != null) { if (tbBrand.getName() != null && tbBrand.getName().length()>0) { criteria.andNameLike("%"+tbBrand.getName()+"%"); } if (tbBrand.getFirstChar() != null && tbBrand.getFirstChar().length()>0) { criteria.andFirstCharLike("%"+tbBrand.getFirstChar()+"%"); } } Page<TbBrand> page = (Page<TbBrand>) brandMapper.selectByExample(example); return new PageResult((int) page.getTotal(),page.getResult());
以上就是关于“mybatis Example Criteria like模糊查询问题怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注蜗牛博客行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论