详解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. Access 执行SQL的方法2. SQLServer数据库误操作恢复的方法3. Mysql的SELECT语句与显示表结构详解4. SQL INSERT及批量的几种方式总结5. SQL server分页的四种方法思路详解(最全面教程)6. MongoDB快速入门笔记(八)之MongoDB的java驱动操作代码讲解7. MySQL 8.0.31中使用MySQL Workbench提示配置文件错误信息解决方案8. SqlServer 多种分页方式 详解(含简单速度测试)9. SQLite 实现if not exist 类似功能的操作10. Oracle故障处理Rman-06207&Rman-06214的方法

网公网安备