Closed CodingZx closed 2 years ago
bug已处理,增加两个方法,国庆期间发布下个版本:
/**
* 通过方法引用方式设置排序字段
*
* @param fn 排序列的方法引用
* @param order 排序方式
* @return Example
*/
public Example<T> orderBy(Fn<T, Object> fn, Order order) {
if (orderByClause == null) {
orderByClause = "";
} else {
orderByClause += ", ";
}
orderByClause += fn.toColumn() + " " + order;
return this;
}
/**
* 通过方法引用方式设置排序字段,升序排序
*
* @param fns 排序列的方法引用
* @return Example
*/
public Example<T> orderByAsc(Fn<T, Object>... fns) {
if (fns != null && fns.length > 0) {
for (int i = 0; i < fns.length; i++) {
orderBy(fns[i], Order.ASC);
}
}
return this;
}
/**
* 通过方法引用方式设置排序字段,降序排序
*
* @param fns 排序列的方法引用
* @return Example
*/
public Example<T> orderByDesc(Fn<T, Object>... fns) {
if (fns != null && fns.length > 0) {
for (int i = 0; i < fns.length; i++) {
orderBy(fns[i], Order.DESC);
}
}
return this;
}
测试代码:
example.clear();
example.orderBy(User::getId, Example.Order.DESC);
example.orderBy(User::getSex, Example.Order.ASC);
example.setEndSql("limit 1");
user = exampleMapper.selectOneByExample(example);
Assert.assertTrue(user.isPresent());
Assert.assertEquals("韩千叶", user.get().getUserName());
example.clear();
example.orderByDesc(User::getId, User::getSex);
example.setEndSql("limit 1");
user = exampleMapper.selectOneByExample(example);
Assert.assertTrue(user.isPresent());
Assert.assertEquals("韩千叶", user.get().getUserName());
@abel533 作者您好呀,修复的新版本什么时候能发布呀,准备在公司直接使用这个新版mapper上生产了
国庆期间主要时间都用在了分页插件上,最近会先发布一个版本处理这个bug。
今天发布新版本。
今天发布新版本。
@abel533
之前我本地 build 过,所以以为是好了,结果今天发现 好像 1.0.2 版本推送没有包含这部分的修改?
是不是推错分支了呀?中央仓库的 1.0.2 版本 依旧有 ORDER BY 的问题呢
@ydq 看着确实不是新的。。等合并develop后,再发个1.0.3
1.0.3已发布
使用方式: var exam = new Example();
exam.orderBy(TestEntity::getCreateTime, Example.Order.DESC);
exam.orderBy(TestEntity::getId, Example.Order.DESC);
当使用两个以上的orderBy时, 生成SQL会变成 select ... from ... ORDER BY create_time DESCid DESC 只能使用exam.setOrderByClause("create_time desc, id desc") 替换. 希望能增加多字段(FN)方式排序功能