文章目录
  1. 1. 准备工作
  2. 2. 开始筛选
  3. 3. 结束
  4. 4. 关注@我 

项目地址:https://github.com/wz2cool/mybatis-dynamic-query
文档地址:https://wz2cool.gitbooks.io/mybatis-dynamic-query-zh-cn/content/
上次我们讲过简单筛选, 这次我们举例来说明 FilterGroupDescriptor用法。
FilterGroupDescriptor 定义可以参照: FilterGroupDescriptor类

准备工作

这里我们沿用简单筛选里面的准备工作即可。

开始筛选

测试放入两个简单的Id筛选到同一个Id组筛选中去。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Test
public void testGroupFilter() throws Exception {
FilterGroupDescriptor groupIdFilter = new FilterGroupDescriptor();
FilterDescriptor idFilter1 =
new FilterDescriptor(FilterCondition.AND,
"productID", FilterOperator.GREATER_THAN, "1");
FilterDescriptor idFilter2 =
new FilterDescriptor(FilterCondition.AND,
"productID", FilterOperator.LESS_THAN, "4");
// 把两个 id 筛选当成一个放到同一个组
groupIdFilter.addFilters(idFilter1, idFilter2);
// 单独一个简单筛选。
FilterDescriptor priceFilter =
new FilterDescriptor(FilterCondition.AND,
"price", FilterOperator.GREATER_THAN, 10);

Map<String, Object> queryParams =
mybatisQueryProvider.getWhereQueryParamMap(
Product.class, "whereExpression", groupIdFilter, priceFilter);

northwindDao.getProductByDynamic(queryParams);
}

结果输出看到,两个id筛选被放到同一个括号中去了。
1
2
3
4
5
==>  Preparing: SELECT * FROM product WHERE ((product_id > ? AND product_id < ?) AND price > ?) 
==> Parameters: 1(String), 4(String), 10(String)
<== Columns: PRODUCT_ID, CATEGORY_ID, PRODUCT_NAME, PRICE
<== Row: 3, 2, Northwind Traders Cajun Seasoning, 16.5000
<== Total: 1

结束

有了前面简单筛选的基础,理解这个就非常容易了,
我常常是把同属性的筛选放到一起,这样看上去的筛选条件比较清晰。

关注@我 

最后大家可以关注我和 Mybatis-Dynamic-query项目 ^_^
Follow @wz2cool Star Fork

文章目录
  1. 1. 准备工作
  2. 2. 开始筛选
  3. 3. 结束
  4. 4. 关注@我