# lzh-21-db-spring-boot-starter **Repository Path**: coding_13/lzh-21-db-spring-boot-starter ## Basic Information - **Project Name**: lzh-21-db-spring-boot-starter - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-22 - **Last Updated**: 2025-08-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # lzh-21-db-spring-boot-starter ## 简介 `lzh-21-db-spring-boot-starter` 是一个基于 Spring Boot 的 starter 模块,用于简化数据库配置和操作。该模块提供以下功能: - 自动填充功能:支持插入和更新操作时自动填充时间字段。 - 动态数据源配置:支持多数据源切换与配置。 - ID 生成器:基于毫秒时间戳生成唯一 ID。 - 事务模板:支持动态事务管理。 ## 功能特性 - **自动填充**:通过 `MybatisPlusAutoConfig` 配置自动填充功能,使用 `DateMetaObjectHandler` 和 `PrimaryMetaObjectHandler` 实现自动填充逻辑。 - **动态数据源**:`LzhDynamicDataSourceAutoConfiguration` 提供动态数据源配置,支持排除特定的自动配置类。 - **唯一 ID 生成器**:`MillisecondIdGenerator` 提供基于毫秒时间戳的唯一 ID 生成策略。 - **事务模板**:`DynamicTransactionTemplate` 提供动态事务执行方法,允许在不同数据源上执行事务。 - **时间戳与序列生成**:`TimeUniqueIdUtil` 提供时间戳和序列号的生成方法,支持并发安全的时间唯一 ID。 ## 安装配置 ### Maven 依赖 确保在你的 `pom.xml` 文件中引入以下依赖: ```xml com.lzh lzh-21-db-spring-boot-starter 1.0.0 ``` ### 配置说明 在 `application.yml` 或 `application.properties` 文件中配置以下属性: #### 动态数据源配置 ```yaml spring: datasource: dynamic: enabled: true ``` #### 自动填充配置 ```yaml mybatis-plus: auto-fill: enable: true enableInsertFill: true enableUpdateFill: true createTimeField: createTime updateTimeField: updateTime createUidField: createUid updateUidField: updateUid ``` ## 使用示例 ### 自动填充字段 在实体类中使用自动填充字段,例如: ```java public class ExampleEntity { @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; } ``` ### 动态数据源使用 使用 `@DS` 注解切换数据源: ```java @DS("slave") public List queryFromSlave() { return exampleEntityMapper.selectList(null); } ``` ### 生成唯一 ID 在需要生成唯一 ID 的地方使用 `MillisecondIdGenerator`: ```java MillisecondIdGenerator idGenerator = new MillisecondIdGenerator(); Long id = idGenerator.nextId(null); ``` ### 动态事务管理 使用 `DynamicTransactionTemplate` 执行事务操作: ```java dynamicTransactionTemplate.execute(status -> { // 执行数据库操作 return null; }, "dataSourceName"); ``` ## 贡献代码 欢迎贡献代码和改进建议。请 fork 仓库并提交 Pull Request。 ## 开源协议 本项目基于 [MIT License](https://opensource.org/licenses/MIT) 协议发布。