问题描述:有时候进行批量操作的时候,需要携带条件等信息,这个时候循环的部分就需要改变一下写法,否则会报异常,这里直接列出解决方案

1. 普通多参数传递:

dao接口:

// xml中接收参数的顺序要与这里保持一致
User selectUser(String classId, String userId);

mapper.xml:

 

2.带数组或集合的参数传递

2.1 方式一

dao接口:

// xml中接收参数的顺序要与这里保持一致
TestInfo selectAll(String classId, String[] userIds);

mapper.xml,注意foreach中collection的值"userIds"要与Dao中第二个参数的名称一致,且顺序也一致:

如图:

MyBatis多参数批量操作_第1张图片

2.2 方式二

2.2.1 service接口:

...
public TestInfo selectAll(String classId, String[] userIds) {
    Map map = new HashMap();
    map.put("classId", classId);
    map.put("userIds", userIds);
    // 调用dao
    userInfoDao.selectAll(map);
    ...
}

2.2.2 dao接口:

TestInfo selectAll(Map map);

2.2.3 mapper.xml,其中的参数名称要与map中的key一致:


3. 扩展

MyBatis批量操作