参数为集合时,mybatis3 分页查询问题及其对应的解决方法
2016-06-17 00:00
736 查看
摘要: 简单记录在开发中,当参数为集合时,遇到的mybatis3 分页查询问题及其对应的解决方法。
当参数为集合时,使用mybatis3分页查询时抛出的异常:
UserMapperTest.java的部分代码(测试用例):
UserMapper.java部分代码:
UserMapper.xml代码(错误的用法示范):
执行测试用例后,后台报本文前的异常。
后续发现,可以通过下面的这种方式(修改UserMapper.xml)解决这个问题:
当参数为集合时,使用mybatis3分页查询时抛出的异常:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [param1, statuses]
UserMapperTest.java的部分代码(测试用例):
@Test public void findByStatus() { List<Integer> statuses = new ArrayList<Integer>(); statuses.add(0); statuses.add(1); statuses.add(2); PageProxyBuilder<UserMapper> builder = PageProxyBuilder.newBuilder(UserMapper.class); builder.setPageParameter(10, 10); List<User> list = builder.createProxy().findByStatus(statuses); System.out.println(list.size()); }
UserMapper.java部分代码:
/** * 分页获取用户信息列表 * * @param statuses * @return * @author Kevin */ List<User> findByStatus(@Param("statuses") Collection<Integer> statuses);
UserMapper.xml代码(错误的用法示范):
<select id="findByStatus" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List"/> FROM ms_borrow_collection <where> AND status in <foreach item="item" index="index" collection="statuses" open="(" separator="," close=")"> #{item} // 这是错误的用法示范 </foreach> </where> </select>
执行测试用例后,后台报本文前的异常。
后续发现,可以通过下面的这种方式(修改UserMapper.xml)解决这个问题:
<select id="findByStatus" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List"/> FROM ms_borrow_collection <where> AND status in <foreach item="item" index="index" collection="statuses" open="(" separator="," close=")"> #{statuses[${index}]} // 这是正确的用法示范 </foreach> </where> </select>
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树