在进行增加,修改等操作时,给数据模型的一些通用操作属性(如:创建人,创建时间,修改人,修改时间等)自动赋值。
该实现是在DAO层拦截,即存入DB前最后一层。后经分析,不是很合理,改为在服务层拦截,用spring AOP来实现了,该代码遂弃用。不过已经测试可用,记录备忘。
包com.development; 进口java.lang.reflect.InvocationTargetException; 进口java.util.Date; 进口java.util.Map; 进口java.util.Properties; 进口org.apache.commons.beanutils.BeanUtils; 进口org.apache.ibatis.executor.Executor; 进口org.apache.ibatis.mapping.MappedStatement; 进口org.apache.ibatis.mapping.SqlCommandType; 进口org.apache.ibatis.plugin.Interceptor; 进口org.apache.ibatis.plugin.Intercepts; 进口org.apache.ibatis.plugin.Invocation; 进口org.apache.ibatis.plugin.Plugin; 进口org.apache.ibatis.plugin.Signature;/* * *拦截器作用:给各实体对象在增加,修改时,自动添加操作属性信息。 */@Intercepts ({@Signature(类型=执行人。类,方法="更新",arg游戏={MappedStatement。类,对象。类})}) 公共类OpeInfoInterceptor实现拦截器 { 公共对象拦截(调用调用)抛出Throwable { 对象[]参数=invocation.getArgs (); System.out.println(“- - - - - - - - - - - -参数拦截- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -”); system . out。println(“02当前线程ID:”+ Thread.currentThread () .getId ());//遍历处理所有参数,更新方法有两个参数,参见Executor类中的更新()方法。 for (int i=0; i以上这篇MyBatis拦截器:给参数对象属性赋值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
MyBatis拦截器:给参数对象属性赋值的实例