注解版 Mybatis 3.1.1 不支持 <script> 标签解决方案
批量查询
/**
* 批量查询指定用户
*
* @param userIds
* 用户ID
* @return 用户
*/
@SelectProvider(type = UserMapperProvider.class,method = "batchSearchUsers")
List<UserDto> batchSearchUsers(@Param("userIds") List<String> userIds);
批量插入
/**
* 批量插入
*
* @param users
* 用户信息
* @return 用户
*/
@InsertProvider(type = UserMapperProvider.class,method = "batchAddUsers")
int batchAddUsers(@Param("users")List<UserDto> users);
UserMapperProvider.java
public class UserMapperProvider{
/**
* 获取指定用户
*
* @param map
* 参数信息
* @return 查询sql
*/
public String batchSearchUsers(Map<String, Object> map) {
@SuppressWarnings("unchecked")
List<String> results = (List<String>) map.get("userIds");
StringBuilder sb = new StringBuilder();
sb.append("select * from users where del_flag = 0 and user_id in (");
MessageFormat mf = new MessageFormat("#'{'userIds[{0}]}");
for (int i = 0; i < results.size(); i++) {
sb.append(mf.format(new Object[]{i}));
if (i < results.size() - 1) {
sb.append(",");
}
}
sb.append(")");
return sb.toString();
}
/**
* 批量插入用户信息
*
* @param map
* 参数
* @return 插入sql
*/
public String batchAddUsers(Map<String, Object> map) {
@SuppressWarnings("unchecked")
List<UserDto> results = (List<UserDto>) map.get("users");
StringBuilder sb = new StringBuilder();
sb.append("insert into users values ");
MessageFormat mf = new MessageFormat("(null, #'{'users[{0}].name},#'{'users[{0}].age},#'{'users[{0}].gender},#'{'users[{0}].address}, null, now(), 0)");
for (int i = 0; i < results.size(); i++) {
sb.append(mf.format(new Object[]{i}));
if (i < results.size() - 1) {
sb.append(",");
}
}
return sb.toString();
}
}
注:暂不支持批量更新