mybatisplus last
1 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");
上面程序实际运行的 SQL 语句如下:
SELECT id,name,age FROM user limit 1,10
当然,也可以根据具体的业务功能来灵活运用,但要注意,last是无视优化规则直接拼接到 sql 的最后,无脑拼接,可能会要考虑一些因素,比如,最开始的书写方式:
.last("where a.staff_id = b.staff_id and a.archive_date = b.archive_date GROUP BY a.staff_id");
如果前面的查询条件存在的话,会先自动拼接一个where来进行查询的,last中的where最后又会拼接一次,那么就会拼接两次where字段,语法错误!所以,只有前面的查询条件都不满足的时候,last才可以又有where,否则只能用and,所以做了如下的调整,分了1和2两种情况: