wmframework v2.0 手册(五)ibatis改写扩展说明

1、源码修改记录

1.1、 sqlmap中新增执行节点statements

修改了sqlmap校验解析文件sql-map-2.dtd

修改了sqlmap解析器:SqlMapParser.java

example:

 

1.2、  ClassKey生成使用

修改了sqlmap校验解析文件sql-map-2.dtd

新定义classkey处理类:com.ibatis.sqlmap.engine.mapping.statement. ClassKeyStatement记录当前需要生成的key的class路径

在sqlmap解析器中新增classkey节点的检查校验

com.ibatis.sqlmap.engine.builder.xml.SqlStatementParser

修改了sql执行代理器中关于classkey的取值及参数对象赋值

com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate

example:

 


1.3、  insert中多SQL同步保存

sql表示器com.ibatis.sqlmap.engine.mapping.statement. MappedStatement新增属性resSql,用于记录sqlmap中原始定义的sql,便于后期检查是否存在多个sql的分割标志。当前设置为分号“;”

修改sql执行方法,检查当前是否存在多个sql同时提交的情况;

修改sql执行器com.ibatis.sqlmap.engine.execution.SqlExecutor中对于参数的赋值方法

重构参数映射类

com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap中设定参数的方式,即存在多个sql公用某个参数类时,需要进行键值提取,并处理先后顺序

1.4、 批处理优化

修改了sql执行器com.ibatis.sqlmap.engine.execution.SqlExecutor,

添加了sql执行保存器,用于存储已经添加过在批处理桶列中的sql识别集合map。

即扩展当前检查sql执行的方法:

 


 1.5、Debug模式下打印完整的SQL语句

  • 改进目标

即使用ibatis时需要在控制台或日志文件中打印其当前执行的完整sql,而不是常见的参数 问号 ? 语句。

  • 执行顺序分析

Ibatis中常见API执行流程:

  • 修改说明

主要修改com.ibatis.sqlmap.engine.execution.SqlExecutor,找到方法executeUpdate,即ps.execute();语句执行之前,新增如下代码:

 

 

2、扩展使用说明

2.1、sqlmap中新增执行节点statements

sqlmap中新增执行节点 statements,其中可以包含多个子节点(insert、update、delete、statement均可),改功能扩展后用处不太理想

使用参考:参考以上


2.2、ClassKey生成使用

classKey获取主键即为,执行某个class中的方法后生成主键序列的方式,格式定义是为:

 

以上即表示执行test.util.GenerateSerial中getUUID,并传递参数1,2。返回字符串类型数据存放在userId中

2.3、insert中多SQL同步保存

     在sqlmap中扩展insert节点,可确保一次性提交同步执行多条sql,各sql之间以逗号;隔开(当前分隔符可自行定义),这有利于保证主子表同步保存时,关联外键的相同性。而且多个sql语句仅需要定义一个参数类或map等形式。这样我们就没必要再service层定义aop之类以事务管理了,也减少了很多没必要的代码编写

     这这里统一可以使用selectKey、classKey产生主键。

  当然对于,update、delete同样适用当前方法。

具体写法参考:

 

 

 

 (注:本人文章均为原创,转载请注明出处!刀光剑影20110215写于深圳。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值