• tkmybatis通用mapper实现在使用Example进行查询的几种方式


    如下列举四种方式,但是不止四种哦。

    其中weekend方式需要升级jdk到1.8及以上。

    废话不代码!

    首先定义数据库表映射类:

    public class MybatisDemo {
    private Long id;
    private Long count;
    private String name;

    public Long getId() {
        return id;
    }
    public Long getCount() {
        return count;
    }
    public String getName() {
        return name;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    // setter……
    }

    此处省略了数据库表映射和set方法。

    接下来就是实现example查询的几种方式,核心代码如下:

    方式一:普通Example方式(从and方法开始可以实现动态sql拼接)

    Example example = new Example(CandidateBrandEntity.class);
    example
    //.selectProperties(“cabId”,“cabName”)
    .and().andEqualTo(“cabDeleted”,0)
    .andLike(“cabName”,“%d%”);

    // 排序
    example.orderBy(“cabCreatedTime”)
    /*.desc()*/
    .orderBy(“cabId”).desc();

    // 获得结果
    List brands = brandEntityMapper.selectByExample(example);

    方式二:Criteria方式(可使用criteria完成动态sql拼接)

    Example example = new Example(MybatisDemo.class);
    Example.Criteria criteria = example.createCriteria();
    criteria.andEqualTo(“count”, 0)
    .andLike(“name”, “%d%”);
    example.orderBy(“count”)
    //.desc()
    .orderBy(“name”).desc();
    List demos = mybatisDemoMapper.selectByExample(example);

    方式三:Example.builder 方式(其中where从句中内容可以拿出来进行动态sql拼接)

    Example example = Example.builder(MybatisDemo.class)
    .select(“cabId”,“cabName”)
    .where(Sqls.custom().andEqualTo(“count”, 0)
    .andLike(“name”, “%d%”))
    .orderByDesc(“count”,“name”)
    .build();
    List demos = mybatisDemoMapper.selectByExample(example);

    方式四:Example.builder + Weekend方式,优势:不用输入属性名,避免数据库有变动或输入错误就会出错

    //获得seekendsql
    WeekendSqls sqls = WeekendSqls.custom();

    //可进行动态sql拼接
    sqls = sqls.andEqualTo(MybatisDemo::getCount,0).andLike(MybatisDemo::getName,“%d%”);

    //获得结果
    List demos = mybatisDemoMapper.selectByExample(Example.builder(MybatisDemo.class).where(sqls).orderByDesc(“count”,“name”).build());

    参考内容:https://github.com/abel533/Mapper/wiki/6.example

  • 相关阅读:
    LM小型可编程控制器软件(基于CoDeSys)笔记二十九:查看
    【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙
    内网隧道代理技术(二十三)之 DNS隧道反弹Shell
    什么是DNS解析DNSPod?它有哪些功能和优势?
    網絡安全学习:网络配置与远程管理
    从Clickhouse 到 Snowflake: 云原生
    python+停车管理系统 毕业设计-附源码271400
    前端网络请求性能优化之缓存
    阿旭机器学习实战【2】KNN算法进行人体动作识别
    ZHOJ_#20971.最快转换数字_广搜BFS
  • 原文地址:https://blog.csdn.net/m0_67390963/article/details/126516720