跳到主要内容

Springboot3 快速集成minidao

  • Spring Boot 版本:3.5.5(要求 JDK 17+)
  • MiniDao 版本:1.10.21(org.jeecgframework.boot3 分支,对应仓库 minidao-pemain 分支)
  • JSqlParser 版本:5.0
  • minidao 已经提供自定义 starter,集成非常简单,直接 pom 引入 minidao-spring-boot-starter-jsqlparser-4.9 即可,starter 会基于 MinidaoAutoConfiguration 自动装配 MiniDaoBeanScannerConfigurer

集成步骤

  • 第一步:pom 引入 starter 依赖包
<dependency>
<groupId>org.jeecgframework.boot3</groupId>
<artifactId>minidao-spring-boot-starter-jsqlparser-4.9</artifactId>
<version>1.10.21</version>
</dependency>

starter 已经传递依赖 spring-boot-starter-jdbc 以及 minidao-pe-jsqlparser-4.9 核心包,MySQL 驱动和 Druid 声明为 optional,业务工程按需显式引入:

<!-- 数据库驱动(按需选择) -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>

<!-- 连接池(可选,推荐 Druid) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.22</version>
</dependency>
  • 第二步:配置 DAO 扫描路径和其他参数(application.yml
minidao:
base-package: org.jeecg.modules.demo.**.dao
show-sql: true
format-sql: false
key-type: lower

minidao.base-package 为必填项,未配置时启动日志会打印 minidao.base-package is not set 错误,DAO 接口无法被扫描代理。

  • 第三步:配置 Spring JDBC 所需数据源(application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/minidao-pe?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver

通过以上三步,minidao 集成完毕,可以开始编写 DAO 接口与 SQL 文件。

MiniDao 配置参数说明

参数名用途默认值
minidao.base-packageDAO 接口扫描路径,支持 , 分隔多个包;必填
minidao.show-sql是否在日志中打印执行的 SQLfalse
minidao.format-sql打印 SQL 时是否格式化false
minidao.key-type查询返回 Map 的 key 大小写策略:origin(与 SQL 一致)、lower(小写,推荐)、upper(大写)origin

Spring Boot 3 线的自动装配代码见 minidao-spring-boot-starter/src/main/java/org/jeecgframework/minidao/auto/MinidaoAutoConfiguration.java,注解固定为 org.springframework.stereotype.Repository,DAO 接口请使用 @Repository 注解标注。

DAO 接口示例

@Repository
public interface EmployeeDao {

@Sql("select * from employee where id = :id")
Employee get(@Param("id") String id);

void insert(@Param("employee") Employee employee);

int update(@Param("employee") Employee employee);

@ResultType(Employee.class)
MiniDaoPage<Employee> getAll(@Param("employee") Employee employee,
@Param("page") int page,
@Param("rows") int rows);

@Sql("select * from employee where id in ( ${DaoFormat.getInStrs(ids)} )")
List<Map<String, Object>> getEmployeeByIds(@Param("ids") String[] ids);
}

SQL 既可以通过 @Sql 注解内联,也可以按 类名_方法名.sql 约定放置在 classpath 对应的包目录下,由 Freemarker 动态渲染后执行。

从 Spring Boot 2 升级注意事项

  1. groupIdorg.jeecgframework 变更为 org.jeecgframework.boot3
  2. JDK 最低要求 17,MySQL 驱动请使用 com.mysql:mysql-connector-j、驱动类名 com.mysql.cj.jdbc.Driver
  3. 所有 javax.* 命名空间需要迁移到 jakarta.*
  4. 连接池若仍使用 Druid,请使用 druid-spring-boot-3-starter,避免 javax.servlet 相关加载失败
  5. db-type 参数已废弃,分页方言通过 JSqlParser 自动识别