Springboot3 快速集成minidao
- Spring Boot 版本:3.5.5(要求 JDK 17+)
- MiniDao 版本:1.10.21(
org.jeecgframework.boot3分支,对应仓库 minidao-pe 的main分支)- 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-package | DAO 接口扫描路径,支持 , 分隔多个包;必填 | 无 |
minidao.show-sql | 是否在日志中打印执行的 SQL | false |
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 升级注意事项
groupId由org.jeecgframework变更为org.jeecgframework.boot3- JDK 最低要求 17,MySQL 驱动请使用
com.mysql:mysql-connector-j、驱动类名com.mysql.cj.jdbc.Driver - 所有
javax.*命名空间需要迁移到jakarta.* - 连接池若仍使用 Druid,请使用
druid-spring-boot-3-starter,避免javax.servlet相关加载失败 - 原
db-type参数已废弃,分页方言通过 JSqlParser 自动识别