小弟刚用ibatis, 以前用hibernate时,如果要插入一个list。都是用迭代来组装一个sql语句,一次insert进数据库的。
SQL语句通常都是这样:
 insert into table (xxxx,xxxx,xxxxx,xxxx)  values (xxxx,xxxxxx,xxxx,xxxx),(xxxxx,xxxxx,xxxx,xxxx)........不知道用ibatis的SqlMap 如何拼装这样的<insert>语句
 想过用<iterate> 但是没成功。目前是用事务来进行batch操作的。。 请各位牛人指点。 最好能附一点简单的代码说明。谢谢 

解决方案 »

  1.   

     <insert id="xx.insertxxx" parameterClass="java.util.HashMap">
       insert into table (xxxx,xxxx,xxxxx,xxxx) values (xxxx,xxxxxx,xxxx,xxxx),(xxxxx,xxxxx,xxxx,xxxx)........
     </insert>
    map.put("xx",xx)
    SqlMapExecutor.insert("xx.insertxxx", map);
    SqlMapExecutor.executeBatch();
      

  2.   

    http://www.javaeye.com/topic/340334  希望好使
      

  3.   

    没看太明白。。这个map里面放什么参数?
      

  4.   

    我的意思是这样的
    如果将一个List<User> 里面的数据用一条sql插入到数据库中?
    自己组装SQL是这样的StringBuffer sb = "insert into table (id,name,age) values"
    for(User us : list){
      sb.append(us.id).append(",").append(us.name,us.age);
    }如何用ibatis实现这样的功能??  sqlMap如何写?
      

  5.   

    http://oyprunner.javaeye.com/blog/547941
    http://karlmax.javaeye.com/blog/66490
      

  6.   


    谢谢 看来真的只有通过batch  来进行处理了。   想像hibernate那样,一条sql搞定。看来是不可能了。
      

  7.   

    传的字符串是 1,2,3 这种以逗号间隔的形式就可以了!
    <isNotNull prepend="AND" property="country">
    C_regionID in (
    <iterate property="country" conjunction=",">
    #country[]#
    </iterate>
    )
    </isNotNull>