一:前言java
如今这个项目使用的是iBatis,我刚刚开始的时候说是用MyBatis,由于我之前用过,以为仍是比较好用的啊,并且不像iBatis样,查什么一个字段不能多也不能少,以为好无语啊。sql
二:内容数据库
本身如今接触的iterator有以下两种用处this
(一):批量循环插入spa
批量插入的话有能够分开说,一种是在后台代码中,批量插入,一种是在数据库中循环插入code
(1):在先说后台批量插入的,直接上代码blog
return (Integer)this.getSqlMapClientTemplate().execute(new SqlMapClientCallback() { public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException { executor.startBatch(); int count=0; for(User u:list){ executor.insert("batchAddUser", u); } count=executor.executeBatch(); return count; } });
insert into user(id,,user_id,user_name,start_time,end_time,) values (#id#,#userId#,#userName#,#startTime#,#endTime#)get
(2):在sql中进行循环插入it
<selecet id="batchInsert" parameterClass="java.util.List"> insert <iterator> into user(id,user_id,user_name.start_time,end_time) values(#list[].id#,#list[].useId#,#list[].userName#,#list[].startTime#,#list[].endTime#) </iterator> </select>
(二):在sql中咱们会使用到in这种查询,in里面通常就如(1,2,3,...)这种形式因此咱们能够用iterator来循环生成这种形式io
<select id="get_user" parameterClass="java.util.Map" resultMap="getUser"> <![CDATA[ select * from user o where o.user_role=2 ]]> <isNotEmpty prepend="and" property="list"> o.user_id IN <iterate close=")" open="(" conjunction="," property="list">#list[]#</iterate> </isNotEmpty> </select> 这里必须加上property="pilesList",不然会报下面的错误 --- Cause: com.ibatis.sqlmap.client.SqlMapException: ParameterObject or property was not a Collection, Array or Iterator.
二是使用list看成参数
<select id="getUser" parameterClass="java.util.List" resultMap="get_user"> <![CDATA[ select * from user o where o.user_role=2 ]]> and o.pile_id IN <iterate close=")" open="(" conjunction=",">#list[]#</iterate> </select> 这里面就不用加property="list"这个属性,这里还有一点要注意的就是不能加成这样的 <select id="getUser" parameterClass="java.util.List" resultMap="get_user"> <![CDATA[ select * from user o where o.user_role=2 ]]> <isNotEmpty property="list"> and o.pile_id IN <iterate close=")" open="(" conjunction=",">#list[]#</iterate> </isNotEmpty> </select> 若是加了这个判断也是会报错的,这点使得我很与郁闷啊,这个isNotEmpty判断不了list是否为空的,list的空值是[]写的,因此只能用if判断。
三:总结
今天知道了旁边的同事要走,其实挺无语的。不知道怎么的,个人感触仍是很深的,每一个人都有本身的路去选择,尽可能保持日常的心态吧。个人心很大,因此我要坚决下去。努力加油。都冲吧。