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 ...
随机推荐
- python开发基础教程
第一:python基础 第二:python异常处理类 第三:python装饰器 python常用的装饰器 第四:python发送邮件
- 扩展KMP的应用
扩展KMP的应用: 给出模板串S和串T,长度分别为Slen和Tlen,要求在线性时间内,对于每个S[i](0<=i<Slen),求出S[i..Slen-1]与T的 最长公共前缀长度,记为e ...
- 构造 Codeforces Round #310 (Div. 2) B. Case of Fake Numbers
题目传送门 /* 题意:n个数字转盘,刚开始每个转盘指向一个数字(0~n-1,逆时针排序),然后每一次转动,奇数的+1,偶数的-1,问多少次使第i个数字转盘指向i-1 构造:先求出使第1个指向0要多少 ...
- android将对象序列化到文件:直接写文件与用Serializable接口的对比
1.用文件读写1024个对象的日志 10-09 16:12:44.493 6385-6385/com.example.tt.downtest D/Serializable_TAG: write 102 ...
- 208 Implement Trie (Prefix Tree) 字典树(前缀树)
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个方法.注意:你可以假设所有的输入都是小写字母 a-z.详见:https://leetcode.co ...
- 浅谈网上的zoomlistview存在的问题
最近项目主要是做一个类似wps文档阅历的功能,以列表的形式显示文档,并且需要实现缩放平移.而网上关于此类功能的实现主要是通过自定义的listview实现的,类名为ZoomListView. 网上的zo ...
- Android下多彩的StatusView的实现
概述 在上一个博文 Anroid沉浸式状态栏中提到了,画了一个图,这个图简单将我们的状态栏分为不同的2个维度来看状态栏.其中涉及的概念我不在赘诉,请返到Anroid沉浸式状态栏再去认识下这几个概念.本 ...
- Quartz2D知识点聚合案例
Quartz2D知识点聚合 基本 //画图片 UIImage *image = [UIImage imageNamed:@"阿狸头像"]; [image drawInRect:re ...
- js中cookie的操作
JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J ...
- 一些常用的meta标签及其作用
声明文档使用的字符编码 <meta charset='utf-8'>优先使用 IE 最新版本和 Chrome <meta http-equiv="X-UA-Compat ...