# 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) 协议发布。