MyBatis 多参问题
当传入的参数为多个参数时
1 可以不封装为Javabean直接传入,写法如下
public List<XXXBean> getXXXBeanList(String xxId, String xxCode);
<select id="getXXXBeanList" resultType="XXBean">
select t.* from tableName where id = #{0} and name = #{1}
</select>
由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始
也可以在dao接口中使用@Param参数
List <SysRole> selectR o lesByUseridAndRoleEnabled(@Param ("userId ") Long userId ,@Param ("enabled ") Integer enabled);
就可以直接用#{userId}代替#{0} #{enabled}代替#{1}
2 可以封装成Javabean传入
3 可以封装为 Array
<select id="queryPojoById" parameterType="String[]" resultMap="pojo">
select * from t_table where id in
<foreach collection="array" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
4 可以封装为 list
<select id="queryPojoById" parameterType="list" resultMap="pojo">
select * from t_table where id in
<foreach collection="list" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
5 可以封装为 Map
<select id="queryPojoById" parameterType="map" resultMap="pojo">
select * from t_table where id in
<foreach collection="ids" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
这里的ids指的的是你放入map里面的key
map中也可以放list,如下
需求: 需要通过map传入一个list和一个String类型的参数,而且没有封装成Javabean
实现
service层
// 根据roomId查询所有的roomQtId
public int queryRoomQtIdByRoomId(ArrayList<Long> roomIdList, String meetingId) {
List<Long> roomQtIdlist = hotelRoomDao2.queryRoomQtIdByRoomId(roomIdList);
// 根据roomQtId查询是否已经录入了房间了
Map<String, Object> map = new HashMap<String, Object>();
map.put("roomQtIdlist", roomQtIdlist);
map.put("meetingId", meetingId);
int i = hotelRoomDao2.ifExistRoomQtId(map);
return i;
}
Dao接口
//查询房间是否已经录入了房间号
int ifExistRoomQtId(Map<String, Object> map);
xml
<!-- 查询房间是否已经录入了房间号 -->
<select id="ifExistRoomQtId" parameterType="map" resultType="int" >
SELECT COUNT(1) FROM PM.T_MEETING_ROOM_ARRANGE
WHERE MEETING_ID =
#{meetingId} AND ROOM_QT_ID IN
<foreach collection="roomQtIdlist" item="item" index="index" open="("
close=")" separator=",">
#{item}
</foreach>
</select>
过程中遇到bug
MyBatis:The expression 'list' evaluated to a null value
原因:直接赋值,将
<foreach collection="roomQtIdlist" item="item" index="index" open="("
close=")" separator=",">
#{item}
</foreach>
中的
collection="roomQtIdlist"
写为了
collection="list"
MyBatis 多参问题的更多相关文章
- Mybatis多参传递的四种解决方案
Mybatis多参传递的四种解决方案 代码异常:org.apache.ibatis.binding.BindingException: Parameter 'param' not found. 长时间 ...
- mybatis入参方式和缓冲
1.mybatis入参方式 @Param注解参数(注解) 封装成对象入参 public int updatePassword(@Param("id")int id,@Param(& ...
- mybatis传参的几种方式
1,@Param @参考文章 @Select("select s_id id,s_name name,class_id classid from student where s_name= ...
- 问题小记(MyBatis传参出现的小问题)
问题一:在MyBatis中注解@Param和ParameterType不能一起用,会报错Parameter 'XXX' not found. Available parameters are [1, ...
- Java Mybatis 传参方式
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- Mybatis传参方式
Mybatis传多个参数(三种解决方案) 据我目前接触到的传多个参数的方案有三种. 第一种方案 DAO层的函数方法 ? 1 Public User selectUser(String name,St ...
- MyBatis入参类型是List时判断非空
一.参数list时,先判断是否为空,否则会报错. 二.mybatis ${}与#{}的区别 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * from tab ...
- mybatis传参总结
注:文章引用部分 mybatis传递参数总结文章内容 一.单个参数 1.基本数据类型 (1)直接使用 List<ChargeRuleDO> tests(long id); <sele ...
- mybatis传参问题总结
一. 传入单个参数 当传入的是单个参数时,方法中的参数名和sql语句中参数名一致即可 List<User> getUser(int id); <select id="get ...
随机推荐
- react-native页面之间的相互传值
react-native页面之间的相互传值 之前在自己学习react-native的时候,在页面跳转和传值问题上花了一段时间去网上搜索和查找资料,自己总结了两个方法.可以参考 https://blog ...
- 一文了解H5照片上传过程
一.选择拍照或文件 HTML: 使用<input>标签, type设为"file"选择文件, accept设为"image/*"选择文件为图片类型和 ...
- git上拉取tag,识别最新tag在此版本上新增tag
通过shell 脚本自动获取最新tag,并输入最新版本后,推到git上 # 拉取分支上现有的tags git fetch --tags echo -e "所有tag列表" git ...
- docker学习教程
我们的docker学习教程可以分为以下几个部分,分别是: 第一:docker基础学习 第二:docker日志管理 第三:docker监控管理 第四:docker三剑客之一:docker-machine ...
- 前端基础jQuery
jQury jQuery 是一个 JavaScript 函数库,jQuery 极大地简化了 JavaScript 编程. jQuery库包含以下功能: HTML 元素选取 HTML 元素操作 CSS ...
- 题解报告:hdu 1059 Dividing(多重背包、多重部分和问题)
Problem Description Marsha and Bill own a collection of marbles. They want to split the collection a ...
- 017:COM1无法打开
重新安装系统以后,COM1无法正常打开,重启以后也是如此.到设备管理器下,禁用COM1然后重启可以正常使用.修改COM1为别的COM号,重启以后可以正常使用.用Pcomm控件,打开该串口,错误号是-8 ...
- Sql Server把本地数据库传到服务器数据库
上一篇文章我们已经把网站布署到服务器中了,如果是动态网站肯定是有数据库的,接下来通过Sql Server把本地数据库上传到服务器数据库中. 打开Sql Server连接本地数据库,选中要导出的数据库, ...
- SpringBoot 2.x (2):请求和传参
其实请求和传参这些知识属于SpringMVC 不过这也属于必须掌握的知识,巩固基础吧 GET请求: 以第一篇文章自动的方式创建SpringBoot项目: 然后新建Controller: package ...
- js 宿主对象的属性和方法总结
(1)属性: //height,width; a=document.documentElement.clientHeight; //文档可视高度,由 ...