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 ...
随机推荐
- Akka源码分析-Akka Typed
对不起,akka typed 我是不准备进行源码分析的,首先这个库的API还没有release,所以会may change,也就意味着其概念和设计包括API都会修改,基本就没有再深入分析源码的意义了. ...
- 多选下拉框(select 下拉多选)
方法一:使用multiple-select.js和multiple-select .css实现 HTML代码: <select id='checkedLevel' style="wid ...
- javascript 冒泡与捕获的原理及操作实例
所谓的javascript冒泡与捕获不是数据结构中的冒泡算法,而是javascript针对dom事件处理的先后顺序,所谓的先后顺序是指针对父标签与其嵌套子标签,如果父标签与嵌套子标签均有相同的事件时, ...
- 机器学习基础算法__python实现(基于numpy等基础库)
# 博客转自https://blog.csdn.net/weixin_39561100/article/details/80879211 主要是将<机器学习实战>中的算法实现一遍,后续会慢 ...
- robot framework 入门
obot framework 入门 2012-12-23 12:47:16 分类: LINUX 其实我不喜欢动不动就框架,动不动就架构,整出一坨专业术语搞的玄而又玄,让人云山雾绕,我想做的事情 ...
- SQL Server 编程入门
一.T—SQL 的组成 1.DML(数据操作语言 Data Manipulation Language) 查询.插入.删除和修改数据库中的数据.SELECT.INSERT.UPDATE.DELETE ...
- Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系
转自zrong's blog:http://zengrong.net/post/1295.htm ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的 ...
- 微信“摇一摇·周边”正式开放
今日,在微信公开课第三季长沙站现场,微信团队宣布“摇一摇·周边”(以下简称“摇周边”)正式对外开放.拥有微信认证的公众帐号商户,均可通过摇周边的商户申请平台(https://zb.weixin.qq. ...
- Toolbar自定义布局
Toolbar如何使用想必大家清楚地很,实际开发中标题栏的样式各色各样,因此其基本样式便不能满足我们的需求,这就需要我们自定义布局.打开ToolBar源码我们发现它继承ViewGroup,这就表示我们 ...
- spring.net应用
经过一段时间的调试,终于把spring.net中关于aop的方面给做个了一个比较完整的Demo.包含异常日志和性能日志.spring.net和log4net配置. http://files.cnblo ...