查询数据库我们经常需要对查询结果进行排序,那么在Mybatis是如何实现的呢?
实现原理
在 MyBatis Generator
生成的代码中,会包括Example.java
和Mapper.xml
文件,
在Mapper.xml
文件中找到我们最常用的selectByExample
方法,会在其中看到有 order by
排序语句:
如果我们需要排序,那么只需要让这个order by
语句能跑到就行了。
方法一: 修改逻辑层代码
只需要在设置 Example 的时候将排序语句加上就可以了,这种方法比较灵活,这里举例按id
倒序查询,代码如下:
1 |
|
其中的example.setOrderByClause("id desc");
就是设置排序的地方,
如果有多个字段要排序,依次添加就可以了,比如:
1 | example.setOrderByClause("name asc, age desc"); |
方法二: 修改 Mapper 文件
这种方法简单粗暴,但是不灵活,就是将上面 selectByExample
方法中的<if test="orderByClause != null">
给去掉,直接写上排序语句:
注意事项
排序字段以数据库中的为准,比如数据库中的字段device_id
在通过MyBatis Generator
生成的时候会映射到实体类的deviceId
字段,我们排序的时候要使用device_id
而不是deviceId
!