mybaties-plus 挺好用的,特别是单表查询的时候,一个 QueryWrapper 条件构造器就能解决大部分问题,而只有比较复杂的查询或者连表查询的时候才需要去 mapper 层写 sql。但是 QueryWrapper 也有局限性,之前使用的时候,我想在构造器中使用自定义的sql,想在中间插入比较特殊的条件,比如 case 语句,我使用的是 postgre,开始请教了同事他们都说要到 mapper 层去写 sql,但是我不想,毕竟是单表查询,所以我摸索了很久发现可以这样使用。

QueryWrapper<实体类> wqw = new QueryWrapper<>();
// 构造其他条件
...

// 插入自定义 sql
wqw.and(w -> {
    w.last(" case when status = '1' then in_checkpoint = " + departId + " when status = '2' then out_checkpoint = " + departId + " end ");
});

(这只是一个列子)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐