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;
    }

优雅就完事了

发布了1 篇原创文章 · 获赞 0 · 访问量 18
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览