Mybatis使用Criteria标准查询数据库没有order by排序方法时,使用Java的Collections.sort()进行排序
Posted MurrayLaw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis使用Criteria标准查询数据库没有order by排序方法时,使用Java的Collections.sort()进行排序相关的知识,希望对你有一定的参考价值。
Mybatis使用Criteria标准查询数据库使用Java进行排序
.笔者在移植老版本项目代码过程中遇到将下列SQL换成用Criteria标准查询。原xml是这样写的
select
`paper_id` as paperId,
`serial_num` as serialNum,
`question` as question,
`items` as items
from eval_question eq
where eq.paper_id = #paperId
and eq.del_flag = 0
order by serial_num asc
发现老大新搭建的项目是用模板生成的Mapper没有排序方法
|
|
|
要不改xml吧,但是老大这么说。。。
|
|
|
好麻烦啊啊啊啊啊,不行,咱就自己用Java进行排序吧,之前有看到对list中的对象实现Comparable接口进行排序,但还是觉得麻烦,咱们来个更优雅的写法。贴上方法全部代码
private List<EvalQuestion> getQuestionsByPaperId(Long paperId)
//创建查询标准条件
EvalQuestionCriteria evalQuestionCriteria = new EvalQuestionCriteria();
evalQuestionCriteria.createCriteria()
//相当于SQL:where eq.paper_id = #paperId
.andPaperIdEqualTo(paperId)
//相当于SQL加上 and eq.del_flag = 0
.andDelFlagEqualTo(0);
//查询数据库列表
List<EvalQuestion> evalQuestions = evalAppQuestionMapper.selectByExample(evalQuestionCriteria);
//使用Collections.sort()进行排序,不必将对象实现Comparable接口而进行排序;相当于SQL:order by serial_num asc
Collections.sort(evalQuestions,new Comparator<EvalQuestion>()
//重写compare方法
public int compare(EvalQuestion arg0, EvalQuestion arg1)
//按SerialNum排序
return arg0.getSerialNum().compareTo(arg1.getSerialNum());
);
//返回排序完毕的列表
return evalQuestions;
优雅就完事了
以上是关于Mybatis使用Criteria标准查询数据库没有order by排序方法时,使用Java的Collections.sort()进行排序的主要内容,如果未能解决你的问题,请参考以下文章
mysql中字段为text类型使用mybatis的Criteria查询无法进行封装
mybatis 使用criteria 查询xx and ( xx or xx)形式的sql