ibatis批量插入(使用iterate标签)
1、要注意版本是否支持foreach,我使用的版本就不支持。如果不支持,会报错,叫你必须指定foreach元素类型。
2、使用iterate的List时,即 parameterClass="java.util.List",总是报错:Excepted java.util.List, but get User.一直没找到是哪配置错误。。。。。?
3、使用iterate的Map时的注意事项
对象User具有属性 | Id ,name,age,sex |
UserDao.java | public void insertBatch(Map<String,List<USer>> userMap); |
UserDao.xml | <insert id="insertBatch" parameterClass="java.util.HashMap"> insert into user_table(ID,NAME,AGE,SEX) values <iterate conjunction="," property="userList"> ( #userList[].id:varchar#, #userList[].name:varchar#, #userList[].age:integer#, #userList[].sex:INTEGER#) </iterate> </insert> |
UserService.java | 在使用iterate的map时,注意Map的Key与Property属性对应:
Map<String,List<User>> userMap=new HashMap<String,List<User>>(); List<User> list=new ArrayList<User>(); list.add(new User("111","zhangsan",22,1)); list.add(new User("222","lisi",23,0)); ... userMap.put("userList",list); userDao.insertBatch(userMap); |
老项目维护,项目框架里是ibatis,所以,只能用ibatis。