NutzCN Logo
问答 可否获取插入和更新语句
发布于 2734天前 作者 一叶孤舟 1944 次浏览 复制 上一个帖子 下一个帖子
标签:

你好:
有什么办法能够根据实体类里面注解获取到插入,更新语句呢?

11 回复

拦截器是需要进行了查询或者更新才会有语句出来是吗?

是的,但你可以声明个dao2,专门用来获取sql,但不真正执行

应该怎么样才能不执行就可以获取到呢?

声明一个dao2,设置一个自定义拦截器, 在该拦截器内获取sql, 而且不执行chain.doChain()

有个小问题,这个我没有写chain.doChain(),我看日志里面也执行了这个更新

@Test
	public void test4() {
		Dao dao1 = IocMaster.getInstance().get(Dao.class, "dao1");
		StatAppSystem sa = new StatAppSystem();
		dao1.update(sa);
	}
UPDATE STATDBA.STAT_APPSYSTEM SET value=?,flag=?  WHERE corporationid=? AND kpiid=? AND time=? AND dimension1=? AND dimension2=? AND dimension3=? AND dimension4=? 
    |    1 | 2 |    3 |    4 |    5 |    6 |    7 |    8 |    9 |
    |------|---|------|------|------|------|------|------|------|
    | NULL | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
  For example:> "UPDATE STATDBA.STAT_APPSYSTEM SET value='NULL',flag=0  WHERE corporationid='NULL' AND kpiid='NULL' AND time='NULL' AND dimension1='NULL' AND dimension2='NULL' AND dimension3='NULL' AND dimension4='NULL' "

我给的是个空的对象,这日志打印出来了是否是已经执行了

我刚刚测试了下,是不更新了

把log拦截器去掉,就不会出这个日志了

假如我是多线程取调用,那怎么区分拦截到的sql,这不同线程调用是不是没法区分呢?

考虑一下ThreadLocal

添加回复
请先登陆
回到顶部