1. mybatis-plus中last和orderBy的连用的使用顺序

在MyBatis-Plus中,last 方法用于在构建查询时添加自定义的SQL片段,
而 orderBy 方法用于指定排序规则。当你想要结合使用这两个方法时,
可以先调用 orderBy 指定排序规则,然后调用 last 添加自定义的SQL片段。
   @Autowired
    TbUserService tbUserService;
    @ApiOperation("MP中orerby和last的联合使用")
    @PostMapping("/mplastOrdertest")
    public TbUser MP_OrderBy_Last_Tests() {
//        mybatis-plus中last和orderBy的连用的使用顺序
//        在MyBatis-Plus中,last 方法用于在构建查询时添加自定义的SQL片段,
//       而 orderBy 方法用于指定排序规则。当你想要结合使用这两个方法时,
//        可以先调用 orderBy 指定排序规则,然后调用 last 添加自定义的SQL片段。
        LambdaQueryWrapper<TbUser> w = new LambdaQueryWrapper<>();
//        w.like(TbUser::getPassword, "12345");
        w.orderByDesc(TbUser::getPassword);
        w.last("limit 1");
        TbUser one = tbUserService.getOne(w);
        return one;
    }
执行sql的打印:
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@39b7a9b7] was not registered for synchronization because synchronization is not active
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@e604713] will not be managed by Spring
==>  Preparing: SELECT password,phone,username FROM tb_user ORDER BY password DESC limit 1
==> Parameters: 
<==    Columns: password, phone, username
<==        Row: 9, 13660775070, dhq2
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@39b7a9b7]


2.Mybatis-plus中 last 方法定义
last(String lastSql)
last(boolean condition, String lastSql)

参数说明:

lastSql:要追加到 SQL 后面的 SQL 语句

condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。

注意事项:
只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用

2 示例
一般,last跟limit一起出现的概率比较大:

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.last("limit 1,10");

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐