玩转单表查询--MyBatis版

本文介绍了如何使用MyBatis和Spring Boot实现单表查询框架,包括使用MyBatis Generator生成代码、添加singlequery支持、创建Repository实现、查询对象及注解、嵌入对象查询、排序分页和最大返回值管理。文章还探讨了框架的设计和扩展,提供了一套灵活的数据过滤扩展方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概览

单表查询在业务开发中占比最大,是所有 CRUD Boy 的入门必备,所有人在 JavaBean 和 SQL 之间乐此不疲。而在我看来,该部分是最枯燥、最没有技术含量的“技能”。

1.1. 背景

公司规定,线上服务不允许使用 Join 语句,只能使用最简单的单表查询,开发人员成天在 输入参数、SQL执行、返回结果之间不停地折腾。

1.2. 目标

需要一个框架,可以灵活的定制简单的数据查询,但又不能过于灵活,需要对使用方式进行严格限制。

灵活定制,是为了快速开发,提升效率,降低bug;对使用进行限制,是为了将掌控权控制在开发,不会因为使用不当造成线上问题。因此,对框架有如下要求:

  1. 支持灵活的查询定义,无需手写 SQL;

  2. 支持常见的查询,包括过滤、排序、分页等;

  3. 支持扩展,应对个性化需求;

2. 快速入门

该框架依赖 MyBatis 的 selectByExample 特性。

2.1. 使用 MyBatis Generator,自动生成相关代码

首先,引入 MyBatis 相关依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

其次,在 maven 中增加 mybatis-generator-maven-plugin 插件:

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.7</version>
    <configuration>
        <verbose>true</verbose>
        <overwrite>true</overwrite>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
        <dependency>
            <groupId>com.itfsw</groupId>
            <artifactId>mybatis-generator-plugin</artifactId>
            <version>1.3.10</version>
        </dependency>
    </dependencies>
</plugin>

其中,mybatis-generator-plugin 提供 limit 分页支持。

新建 generatorConfig.xml,并指定LimitPlugin。

<!-- MySQL分页插件 -->
<plugin type="com.itfsw.mybatis.generator.plugins.LimitPlugin">
    <!-- 通过配置startPage影响Example中的page方法开始分页的页码,默认分页从0开始 -->
    <property name="startPage" value="0"/>
</plugin>

运行 generator 自动生成相关文件,包括 Mapper.xml、Mapper 接口、Entity 类 和 Example 查询类。其中,Example 类是该框架的关键。

具体操作,可参照mybatis-generator 官方文档,或 google 检索。

2.2. 添加 singlequery 支持

在 pom 中增加 singlequery 相关依赖:

<dependency>
    <groupId>com.geekhalo.lego</groupId>
    <artifactId>lego-starter-singlequery</artifactId>
    <version>0.1.2-single_query-SNAPSHOT</version>
</dependency>

Starter 中的 MyBatisBasedSingleQueryConfiguration 将为我们完成全部配置。

2.3. 创建自己的 Repository 实现

创建 MyBatisUserSingleQueryService,继承自 AbstractReflectBasedExampleQueryRepository,具体如下:

@Repository
public class MyBatis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值