ibatis 动态语句拼写心得

 项目中用到了ibatis。看了很多篇在XML 里动态编写sql 的文章!

 我突然有了疑问,在一个statement 中可以包含多个 dynamic 子标签么?

 于是 试验了一把,嘿嘿 果然能行~~

dynamic 标签的作用是  可以自动添加或者移除 在SQL语句中 多余的表单符号 不用再担心 少了逗号,and 连接符号之类的

 贴代码。。。(前提是你要理解dynamic 动态标签的基本作用)

 下面代码 是一段插入数据 片段  我所要说的是只要数据库字段没有强制的 “不许为空”的话 都可以这样写,这样加大了 灵活性,只要设置作为参数的对象 sheetState 的任何一个或者N个属性 都成。可以进行动态的插入 ,也不用再担心SQL 语句会因为少写插入字段出错的问题。

  当然如果表字段多的话 我还是不建议使用这样写~~  因为每个字段都要去写入判断标签内的,会很长很长。

  但虽然麻烦,但只要写完一个,以后的所有关于此表的添加 都可以这样通用了。

 

 

<statement id="addSheetState" parameterClass="sheetState" resultClass="Integer">
		INSERT INTO
		<dynamic prepend="EOMS_SHEETSTATE" open="(" close=")">
		 <isNotEmpty prepend="," property="v_parachsheetid">
		 	V_PARACHSHEETID
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_sheetno">
		 	V_SHEETNO
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_sheetstatus">
		 	V_SHEETSTATUS
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="dtm_statustime">
		 	DTM_STATUSTIME
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_people">
		 	V_PEOPLE
		 </isNotEmpty>
		<dynamic open="(" close=")" prepend="VALUES">
		 <isNotEmpty prepend="," property="v_parachsheetid">
		 	#v_parachsheetid#
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_sheetno">
		 	#v_sheetno#
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_sheetstatus">
		 	#v_sheetstatus#
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="dtm_statustime">
		 	#dtm_statustime#
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_people">
		 	#v_people#
		 </isNotEmpty>
				</dynamic>
	</statement>

 

这是测试时调用的代码

   

 Eoms_SheetState sheetstate=new Eoms_SheetState();
 sheetstate.setV_parachsheetid("testid");
 sheetstate.setDtm_statustime("2010-11-13 11:31:21");		  
 sheetstatedao.addSheetState(sheetstate);

 

   

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值