高分问一个ibatis设置系统时间的问题。

scbb 2013-01-19 10:25:49
ibatis用的2.5
数据库用的是postgreSQL。
系统里所有的表都有【登录人】和【登录时间】2个字段

现在有个需求insert或update的时候都要在更新上面2个字段。
登录人就是session里的人的id。

但是登录时间有个特殊的要求,就是有个java的配置property文件可以修改当前时间。
比如我改配置文件里时间为2008年08月09日。
那么相当于系统运行在该日期一样(穿越啊...)。
所以这时更新DB,【登录时间】则为上面日期的时间。
上面的需求java的代码已经完成。

现请教大家的问题,我希望做一个共通点的方法,让大多数处理业务的开发者都不需要特别写代码就能完成以上需求。他们可以只需处理和各个业务有关的内容。
目前自己在想用自定义TypeHandle实现吗?行吗?
有其他办法吗?
...全文
310 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2013-01-22
  • 打赏
  • 举报
回复
其实就是利用 ThreadLocal 而已了。
scbb 2013-01-22
  • 打赏
  • 举报
回复
引用 5 楼 ldh911 的回复:
关于共性的,如果所有值对象关于时间和用户ID的命名都是相同的(甚至继承自一个公共基础值对象),那么用拦截器来对值对象进行设置似乎更好些。 用户ID可以考虑在MVC的过滤器(比如你用于检查用户是否登录的那个过滤器)中就提前设置到线程上下文中。
“提前设置到线程上下文中”这一句没有看懂。 具体对应的代码是??
MiceRice 2013-01-21
  • 打赏
  • 举报
回复
关于共性的,如果所有值对象关于时间和用户ID的命名都是相同的(甚至继承自一个公共基础值对象),那么用拦截器来对值对象进行设置似乎更好些。 用户ID可以考虑在MVC的过滤器(比如你用于检查用户是否登录的那个过滤器)中就提前设置到线程上下文中。
MiceRice 2013-01-21
  • 打赏
  • 举报
回复
引用 2 楼 scbb 的回复:
请问postgreSQL里有临时改变系统时间的功能吗? 比如,简单修改下配置,使得那些取得当前时间的函数都根据设置来拿日期,而不是真正os的系统时间。
据我所知是没有的,数据库对于系统时间有比较严禁的要求,随意修改系统时间可能产生严重后果。 倒是可以考虑触发器,根据配置表中的要求(比如时间修正毫秒数啥的),修改insert时某固定名称字段的值;虽然此类触发器可以用程序批量建,不过毕竟触发器增大处理开销,潜意识里不怎么推荐。
suciver 2013-01-21
  • 打赏
  • 举报
回复
你在更新这个时间的时候是直接在数据库里面取时间不是在sql语句里面把时间传到数据库吗?
scbb 2013-01-21
  • 打赏
  • 举报
回复
请问postgreSQL里有临时改变系统时间的功能吗? 比如,简单修改下配置,使得那些取得当前时间的函数都根据设置来拿日期,而不是真正os的系统时间。
望舒 2013-01-19
  • 打赏
  • 举报
回复
这个估计没有这功能,不过你可以写拦截器试试,不得不说这需求比较无语

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧