<!--mybatis-config--> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="cacheEnabled" value="true" /> <setting name="lazyLoadingEnabled" value="true" /> <setting name="multipleResultSetsEnabled" value="true" /> <setting name="useColumnLabel" value="true" /> <setting name="useGeneratedKeys" value="false" /> <setting name="autoMappingBehavior" value="PARTIAL" /> <setting name="defaultExecutorType" value="SIMPLE" /> <setting name="defaultStatementTimeout" value="25" /> <setting name="safeRowBoundsEnabled" value="false" /> <setting name="mapUnderscoreToCamelCase" value="true" /> <setting name="localCacheScope" value="SESSION" /> <setting name="jdbcTypeForNull" value="OTHER" /> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" /> <setting name="defaultStatementTimeout" value="600"/> <setting name="logImpl" value="SLF4J" /> </settings> <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="helperDialect" value="oracle"/> <property name="offsetAsPageNum" value="true"/> <property name="rowBoundsWithCount" value="true"/> <property name="pageSizeZero" value="false"/> <property name="reasonable" value="false"/> <property name="params" value="pageNum=pageHelperStart;pageSize=pageHelperRows;"/> <property name="supportMethodsArguments" value="true"/> <property name="returnPageInfo" value="none"/> </plugin> <plugin interceptor="com.xushen.customer.account.interceptor.DBInterceptor"> <property name="databaseType" value="Oracle"/> </plugin> <plugin interceptor="com.xushen.run.mybatis.interceptor.AutoDateInterceptor"> <property name="createDateColumnName" value="CRT_TIMESTAMP"/> <property name="updateDateColumnName" value="MTN_TIMESTAMP"/> </plugin> </plugins> </configuration>
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // import java.lang.reflect.Field; import java.util.Date; import java.util.Iterator; import java.util.Map; import java.util.Properties; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.SqlCommandType; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Intercepts; import org.apache.ibatis.plugin.Invocation; import org.apache.ibatis.plugin.Plugin; import org.apache.ibatis.plugin.Signature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Intercepts({@Signature( type = Executor.class, method = "update", args = {MappedStatement.class, Object.class} )}) public class AutoDateInterceptor implements Interceptor { private final Logger log = LoggerFactory.getLogger(this.getClass()); private static final String METHOD_PREPARE = "prepare"; private static final String METHOD_SETPARAMETERS = "setParameters"; private static final String METHOD_UPDATE = "update"; private static String createDateColumnName; private static String updateDateColumnName; private static DbType dbType; public static String createDateFieldName; public static String updateDateFieldName; public AutoDateInterceptor() { } public Object intercept(Invocation invocation) throws Throwable { if("update".equals(invocation.getMethod().getName())) { MappedStatement statement = (MappedStatement)invocation.getArgs()[0]; Object parameter = invocation.getArgs()[1]; SqlCommandType sqlCommandType = statement.getSqlCommandType(); Date d = new Date(); if(parameter instanceof Map) { Iterator var6 = ((Map)parameter).values().iterator(); while(var6.hasNext()) { Object o = var6.next(); if(SqlCommandType.INSERT == sqlCommandType) { this.create(o, d); } else if(SqlCommandType.UPDATE == sqlCommandType) { this.update(o, d); } } } else if(SqlCommandType.INSERT == sqlCommandType) { this.create(parameter, d); } else if(SqlCommandType.UPDATE == sqlCommandType) { this.update(parameter, d); } } return invocation.proceed(); } public void create(Object o, Date d) { try { Field f1 = ReflectionUtils.getDeclaredField(o, createDateFieldName); if(f1 != null) { ReflectionUtils.setFieldValue(o, f1, d); } Field f2 = ReflectionUtils.getDeclaredField(o, updateDateFieldName); if(f2 != null) { ReflectionUtils.setFieldValue(o, f2, d); } } catch (Exception var5) { this.log.error(var5.getMessage(), var5); } } public void update(Object o, Date d) { try { Field f = ReflectionUtils.getDeclaredField(o, updateDateFieldName); if(f != null) { ReflectionUtils.setFieldValue(o, f, d); } } catch (Exception var4) { this.log.error(var4.getMessage(), var4); } } public Object plugin(Object o) { return Plugin.wrap(o, this); } public void setProperties(Properties properties) { createDateColumnName = properties.getProperty("createDateColumnName", "gmt_create"); updateDateColumnName = properties.getProperty("updateDateColumnName", "gmt_modified"); dbType = DbType.get(properties.getProperty("dbType", "oracle")); createDateFieldName = StringUtil.underlineToHump(createDateColumnName); updateDateFieldName = StringUtil.underlineToHump(updateDateColumnName); } }
相关推荐
Mybatis Log(自动填充sql参数打印到控制台)
Mybatis自动生成实体类,XML文件
mybatis自动生成实体类和mapper文件。自动添加实体类注释。
本文所有的源码
主要给大家介绍了关于mybatis自动填充时间字段的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
mybatis自动生成全部文件mybatis-generator.xml mybatis-generator-core-1.3.1.jar mysql-connector-java-5.0.8-bin.jar
mybatis自动生成代码
MyBatis自动分页实现 不用自己写代码
MyBatis自动生成配置文件全解.zip MyBatis自动生成配置文件全解.zip MyBatis自动生成配置文件 全解.zip
myBatis自动生成代码案例
可以将数据库中的表,自动生成对应的类,和mapper文件。
mybatis自动生成工具类,更改数据库表名即可
关于mybatis自动生成语句,还有一些jar,需要的联系我
mybatis 自动生成PO,DAO,mapping代码工具。
用来生成 mybatis mapper,do对象,自动生成代码的工具,
mybatis 自动生成工具,解压后修改generatorConfig.xml中内容,然后运行bat文件即可。针对原先的生成工具进行优化,去除bean文件中的复杂的注释,更加易读易用
mybatis自动生成实体映射类demo,jar包支持!
mybatis自动生成工具generator,提高开发效率,自动生成实体BEAN、DAO。自己试用过,完全可以使用,非常方便。
mybatis自动生成SQL,生成xml映射文件,实体,修改generator_oracle_apply.xml路径,当当前目录下打开cmd 运行txt里面语句。完成。