原创作品,出自 “晓风残月xj” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj)。
由于各种原因,可能存在诸多不足,欢迎斧正!
最近DBA说数据库DB log插入insert语句时返回returning *,占用网络带宽,希望优化掉。其实本没有时间查看mybatis源码的,今天看了下,造成returning *的原因和解决方案如下,希望可以帮助解决相同的问题。
先盗图一张,说明mybatis的执行时调用顺序,原图出处 ,在此表示感谢:
配置:mybatis+postgresql.version 9.4-1201-jdbc4
1、下面是SimpleStatementHandler的update方法:
在MappedStatement中,有如下方法:
public Builder(Configuration configuration, String id, SqlSource sqlSource, SqlCommandType sqlCommandType) {
this.mappedStatement.configuration = configuration;
this.mappedStatement.id = id;
this.mappedStatement.sqlSource = sqlSource;
this.mappedStatement.statementType = StatementType.PREPARED;
this.mappedStatement.parameterMap = (new org.apache.ibatis.mapping.ParameterMap.Builder(configuration, "defaultParameterMap", (Class)null, new Arr