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

tk-mybatis criteria写法总结

mybatis Example条件查询

mybatis generator 生成的criteria是啥意思

Mybatismybatis Example Criteria like 模糊查询