ibatis批量处理+多表关联查询

 ibatis批量操作
ibatis批量操作存在两种方式:
一种是直接在代码中进行循环操作,另一种是在配置文件中进行循环操作。
(1)在配置文件中循环:
1.情况一:多个输入参数循环次数不对称:
  处理方式:新建一个JAVABEAN,将各个参数作为其属性进行赋值。在配置文件中,获取其值,进行各自循环。
  如下例:要更新的字段Opr的值只有一个,而ID的值却有多个。
代码:
   
ibatis配置文件:
 
 
2.情况二:多个输入参数循环次数是对称的:
  处理方式:新建一个hashmap,将各个参数名作为key,参数值作为value。在配置文件中,获取各key-value,进行各自循环。
  如下例:将循环插入/更新的列名作为key,列值作为value放入hashmap中.(列名与列值是一一对应的,即循环次数对等)
 
(2)
在代码中批量处理:

即是在startBatch()与executeBatch()之间循环调用操作数据库。如下:
  
ibatis配置文件中:
如何定义多表查询
1)
添加 Guojia.java 类,只是一个普通的 javabean ,对应 guojia 表中各字段,及其 setter,getter ,无须像 hibernate 一样设置对应关系。
2)
添加 guojia.xml ,只须添加:
 
无须添加如查询之类的东西。
3)
在当前类 hwj.java 添加连合查询的表 guojia list 属性 , 如下:
  
4)
在当前表 hwj.xml resultMap 中,添加 <result property="guoList" resultMap="Guo.GuoResult"/> ,如下:
     
 
注意: resultMap="Guo.GuoResult" 中的 Guo 对应上面 guojia.xml 中的 namespace GuoResult 对应其 resultMap 的名 .
5)
sqlMapClient.xml 导入 guojia.xml
注意:
resultMap 中列出的各列,只能是 select 的各字段。不能多,也不能少。否则出错。
如: A 表中有 a,b 两列。现 select a from A 。则 resultMap 只能列了关于 a 的列名 属性,不能多列 b 的东西,否则出错。
 
6)
若为三表连合查询,
1. 对于第三个表的设置,跟上面设置第二个表一样。
2. 同样,也只须在 hwj.java,hwj.xml 中进行相同的设置即可。
说明:
在页面显示时:
hwj循环记录的iterator中,添加guojia,address各种的循环即可。
无须将address内嵌在guojia中:因为实际上hwj的查询语句查询出来是所有记录,guojia,address添加的循环,也只能循环一次,取一个值。
设置如下:
  
 
3
resultMap中的的列与javaBean属性的对应关系,只能列出sql语句中select的字段,不能多也不能少,否则出错.----不关心sql语句中关联几个表.如下:
   
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值