详解Mybatis 传递参数类型为List的取值问题
问题描述:
参数传递为List时:
当传递一个 List 实例或者数组作为参数对象传给 Mybatis。此时,Mybatis 会自动将它包装在一个 Map 中,用名称在作为键。List 实例将会以“list” 作为键,而数组实例将会以“array”作为键。所以,当我们传递的是一个List集合时,mybatis会自动把我们的list集合包装成以list为Key值的map。
DAO 层:
List<User> selectUserByIDs( List IDs);
XML文件:
<select parameterType='java.util.List' resultType='user'> select * from user <where> <if test='IDs != null and IDs.size() >0'><foreach collection='IDs' open=' and id in (' close=')' item='uid' separator=','> #{uid}</foreach> </if> </where></select>
报错信息:
org.apache.ibatis.binding.BindingException: Parameter ‘IDs’ not found. Available parameters are [collection, list]
解决方法:
方法一:将我们的XML中collection属性值直接设置为list
DAO 层:
List<User> selectUserByIDs( List IDs);
XML文件:
<select parameterType='java.util.List' resultType='user'> select * from user <where> <if test='list != null and list.size() >0'><foreach collection='list' open=' and id in (' close=')' item='uid' separator=','> #{uid}</foreach> </if> </where></select>
方法二: 利用注解@Param指定我们的入参名称
DAO层:
List<User> selectUserByIDs(@Param('IDs') List IDs);
XML文件:
<select parameterType='java.util.List' resultType='user'> select * from user <where> <if test='IDs != null and IDs.size() >0'><foreach collection='IDs' open=' and id in (' close=')' item='uid' separator=','> #{uid}</foreach> </if> </where></select>
到此这篇关于详解Mybatis 传递参数类型为List的取值问题的文章就介绍到这了,更多相关Mybatis 传递参数类型为List的取值内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. 基于mybatis batch实现批量提交大量数据2. VS自带的SQL server修改密码并连接使用3. MySQL全文搜索之布尔搜索4. 数据库Oracle9i的企业管理器简介5. 应用经验:关于IBM DB2数据库的注意事项6. MySQL存储引擎选择InnoDB还是MyISAM7. Access数据库出现“无法保存;正被别的用户锁定”的原因8. MySQL插入数据时,如果记录不存在则insert,如果存在则update9. MySQL算术/比较/逻辑/位/运算符与正则举例详解10. Mysql故障排除:Starting MySQL. ERROR! Manager of pid-file quit without updating file
