开源软件名称:dynamic-add-date
开源软件地址:https://gitee.com/yidasanqian/dynamic-add-date
开源软件介绍:
dynamic-add-date
Dynamic-add-date是基于Mybatis插件原理开发的可以动态在Insert 和Update Sql语句中添加日期列和对应的值的插件。 可以解决MySQL 5.6.5之前的版本对自动初始化时间戳的限制: DATETIME 列不支持DEFAULT CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP 每张表最多可以使用在一个TIMESTAMP 列上而且不能和另一个TIMESTAMP 列一起使用。
要求功能- 自定义要生成的日期列的名称
- 自动处理原始Sql语句中已包含自定义日期列名
- 支持插入、更新、批量插入和批量更新Sql语句日期列的生成
- 支持
INSERT INTO SELECT 语句 - 支持忽略表,表名支持正则表达式
在你的应用中添加Dynamic-add-date添加下面的依赖到你的pom文件中: <dependency> <groupId>io.github.yidasanqian</groupId> <artifactId>dynamic-add-date</artifactId> <version>1.1.0</version></dependency> 若使用Gradle/Grails: compile 'io.github.yidasanqian:dynamic-add-date:1.1.0' 然后在mybatis-config.xml 配置文件中加入如下设置即可: <plugins> <plugin interceptor="io.github.yidasanqian.dynamicadddate.AddDateInterceptor"> </plugin></plugins> 例如,原始Sql为: insert into user(name, profession) values(?, ?) 使用该插件后Sql语句为: insert into user(name, profession, gmt_create, gmt_modified) values(?, ?, '2017-10-15 10:10:10', '2017-10-15 10:10:10') 批量插入的情况: insert into user(name, profession) values(?, ?), (?, ?), (?, ?) 使用该插件后Sql语句为: insert into user(name, profession, gmt_create, gmt_modified) values(?, ?, '2017-10-15 10:10:10', '2017-10-15 10:10:10'),(?, ?, '2017-10-15 10:10:10', '2017-10-15 10:10:10'), (?, ?, '2017-10-15 10:10:10', '2017-10-15 10:10:10') 支持INSERT INTO SELECT 语句 原始sql: insert into t_user(username, mobile, create_at) select r.`name`, ?, r.create_at from t_role r; 使用该插件后Sql语句为: INSERT INTO t_user (username, mobile, create_at, update_at) SELECT r.`name`, ?, '2019-07-06 10:36:51.066', '2019-07-06 10:36:51.066' FROM t_role r 默认新建日期的列名为 gmt_create , 更新日期的列名为 gmt_modified 。 可以通过设置key createDateColumnName 和 updateDateColumnName 来分别指定日期列的名称: <plugin interceptor="io.github.yidasanqian.dynamicadddate.AddDateInterceptor"> <property name="createDateColumnName" value="gmt_create"/> <property name="updateDateColumnName" value="gmt_modified"/></plugin> 与Spring Boot集成首先mybatis依赖 <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.4</version></dependency> 其次写入自定义配置: 1)xml方式进行配置 也是在mybatis-config.xml 配置文件中加入如下设置: <plugin interceptor="io.github.yidasanqian.dynamicadddate.AddDateInterceptor"> <property name="createDateColumnName" value="gmt_create"/> <property name="updateDateColumnName" value="gmt_modified"/> </plugin> 然后在 application.properties 加入如下配置即可: mybatis.config-location=classpath:mybatis-config.xml 2)创建bean方式进行配置 @Beanpublic AddDateInterceptor addDateInterceptor(){ Properties properties = new Properties(); properties.setProperty("createDateColumnName","gmt_create"); properties.setProperty("updateDateColumnName","gmt_modified"); AddDateInterceptor addDateInterceptor = new AddDateInterceptor(); addDateInterceptor.setProperties(properties); return addDateInterceptor;} 忽略表实际应用中并不是所有的表都需要创建时间和更新时间字段,如何设置忽略处理的表呢? 1)xml方式 也是在mybatis-config.xml 配置文件中加入如下设置: <plugins> <plugin interceptor="io.github.yidasanqian.dynamicadddate.AddDateInterceptor"> <property name="ignoreTables" value="^user.*,permission"/> </plugin></plugins> 2)创建Bean方式 @Beanpublic AddDateInterceptor addDateInterceptor(){ Properties properties = new Properties(); properties.setProperty("createDateColumnName","gmt_create"); properties.setProperty("updateDateColumnName","gmt_modified"); properties.setProperty("ignoreTables","^user.*,permission"); AddDateInterceptor addDateInterceptor = new AddDateInterceptor(); addDateInterceptor.setProperties(properties); return addDateInterceptor;} 其中name=ignoreTables 属性值为固定,不能变,value的格式:表名,表名 。 其中value的值为表名,支持正则表达式,且多个表名以英文逗号, 分隔并且之间不含空格。 |
请发表评论