lzh-21-db-spring-boot-starter 是一个基于 Spring Boot 的 starter 模块,用于简化数据库配置和操作。该模块提供以下功能:
- 自动填充功能:支持插入和更新操作时自动填充时间字段。
- 动态数据源配置:支持多数据源切换与配置。
- ID 生成器:基于毫秒时间戳生成唯一 ID。
- 事务模板:支持动态事务管理。
- 自动填充:通过
MybatisPlusAutoConfig配置自动填充功能,使用DateMetaObjectHandler和PrimaryMetaObjectHandler实现自动填充逻辑。 - 动态数据源:
LzhDynamicDataSourceAutoConfiguration提供动态数据源配置,支持排除特定的自动配置类。 - 唯一 ID 生成器:
MillisecondIdGenerator提供基于毫秒时间戳的唯一 ID 生成策略。 - 事务模板:
DynamicTransactionTemplate提供动态事务执行方法,允许在不同数据源上执行事务。 - 时间戳与序列生成:
TimeUniqueIdUtil提供时间戳和序列号的生成方法,支持并发安全的时间唯一 ID。
确保在你的 pom.xml 文件中引入以下依赖:
<dependency>
<groupId>com.lzh</groupId>
<artifactId>lzh-21-db-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>在 application.yml 或 application.properties 文件中配置以下属性:
spring:
datasource:
dynamic:
enabled: truemybatis-plus:
auto-fill:
enable: true
enableInsertFill: true
enableUpdateFill: true
createTimeField: createTime
updateTimeField: updateTime
createUidField: createUid
updateUidField: updateUid在实体类中使用自动填充字段,例如:
public class ExampleEntity {
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}使用 @DS 注解切换数据源:
@DS("slave")
public List<ExampleEntity> queryFromSlave() {
return exampleEntityMapper.selectList(null);
}在需要生成唯一 ID 的地方使用 MillisecondIdGenerator:
MillisecondIdGenerator idGenerator = new MillisecondIdGenerator();
Long id = idGenerator.nextId(null);使用 DynamicTransactionTemplate 执行事务操作:
dynamicTransactionTemplate.execute(status -> {
// 执行数据库操作
return null;
}, "dataSourceName");欢迎贡献代码和改进建议。请 fork 仓库并提交 Pull Request。
本项目基于 MIT License 协议发布。