mybatis框架之多参数入参--传入Map集合

需求:查询出指定性别和用户角色列表下的用户列表信息

实际上:mybatis在入参的时候,都是将参数封装成为map集合进行入参的,不管你是单参数入参,还是多参数入参,都是可以封装成map集合的,这是无可非议的。

/**
* 需求:查询出指定性别和用户角色列表下的用户列表信息
* @param roleids
* @return
*/
public List<User> getUserListByGender_UserRoleids(Map<String,Object> conditionMap);

<select id="getUserListByGender_UserRoleids" resultMap="userListArray" >
  select * from smbms_user where 1=1 and gender=#{gender} and userRole in
  <foreach collection="roleIDS" item="aaa" open="(" separator="," close=")">
    #{aaa}
  </foreach>
</select>

<resultMap type="User" id="userListArray">
  <id property="id" column="id"/>
  <result property="userCode" column="userCode" />
  <result property="userName" column="userName" />
  <result property="userRole" column="userRole" />
</resultMap>

 1 //多参数的时候,传入map集合
 2         @Test
 3         public void testGetUserByForeach_Gender_Roleids(){
 4             SqlSession sqlSession = null;
 5             Map conditionMap=new HashMap<String, Object>();
 6             List<Integer> userList = new ArrayList<Integer>();
 7             userList.add(2);
 8             userList.add(3);
 9             conditionMap.put("roleIDS", userList);
10             conditionMap.put("gender", 1);
11             List<User> userListShow=new ArrayList<User>();
12             try {
13                 sqlSession = MyBatisUtil.createSqlSession();
14                 userListShow = sqlSession.getMapper(UserMapper.class).getUserListByGender_UserRoleids(conditionMap);
15
16             } catch (Exception e) {
17                 // TODO: handle exception
18                 e.printStackTrace();
19             }finally{
20                 MyBatisUtil.closeSqlSession(sqlSession);
21             }
22             for(User user: userListShow){
23                 logger.debug("testGetUserByForeach_Gender_Roleids UserCode: " + user.getUserCode() + " and UserName: " + user.getUserName()+"and userRole:"+user.getUserRole());
24             }
25
26
27         }

运行结果:

1 [DEBUG] 2019-12-22 15:49:46,403 cn.smbms.dao.user.UserMapper.getUserListByGender_UserRoleids - ==>  Preparing: select * from smbms_user where 1=1 and gender=? and userRole in ( ? , ? )
2 [DEBUG] 2019-12-22 15:49:46,442 cn.smbms.dao.user.UserMapper.getUserListByGender_UserRoleids - ==> Parameters: 1(Integer), 2(Integer), 3(Integer)
3 [DEBUG] 2019-12-22 15:49:46,462 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [[email protected]]
4 [DEBUG] 2019-12-22 15:49:46,463 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [[email protected]]
5 [DEBUG] 2019-12-22 15:49:46,463 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 1090032292 to pool.
6 [DEBUG] 2019-12-22 15:49:46,464 cn.smbms.dao.user.UserMapperTest - testGetUserByForeach_Gender_Roleids UserCode: zhanghua and UserName: 张华and userRole:3
7 [DEBUG] 2019-12-22 15:49:46,464 cn.smbms.dao.user.UserMapperTest - testGetUserByForeach_Gender_Roleids UserCode: zhaoyan and UserName: 赵燕and userRole:3
8 [DEBUG] 2019-12-22 15:49:46,464 cn.smbms.dao.user.UserMapperTest - testGetUserByForeach_Gender_Roleids UserCode: zhangchen and UserName: 张晨and userRole:3
9 [DEBUG] 2019-12-22 15:49:46,464 cn.smbms.dao.user.UserMapperTest - testGetUserByForeach_Gender_Roleids UserCode: zhaomin and UserName: 赵敏and userRole:2

原文地址:https://www.cnblogs.com/dongyaotou/p/12080003.html

时间: 2024-11-04 03:47:14

mybatis框架之多参数入参--传入Map集合的相关文章

使用mybatis框架实现带条件查询-多条件(传入Map集合)

我们发现我们可以通过传入javaBean的方式实现我们的需求,但是就两个条件,思考:现在就给他传入一个实体类,对系统性能的开销是不是有点大了. 现在改用传入Map集合的方式: 奥!对了,在创建map集合时候,居然报错了,The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class. 是因为myeclipse的jdk和你安装的jdk的版本不一致导致的,只要将两者调成

MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法)

一.字段名与属性名(数据库的名字)不一样怎么办? 方案一:在小配置中配置一个resultMapper <!--方案一:resultMapper 字段名与属性名不一致 --> <resultMap type="Student" id="StudentMapper"> <result column="stuname2" property="stuname"/> </resultMap>

mybatis中mapper传多个入参

有三种方式 1.使用占位符#{0},#{1}....对应顺序就是参数的顺序 #方法签名 List<TbItem> selectByPage(int page, int rows); #sql语句 <select id="selectByPage" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List" /> from tb_item

【Java】MyBatis框架初步学习总结

本篇篇幅较长,请善用 Ctrl + F 搜索功能. 结尾补充了 MyBatis 中 resultMap 的映射级别. -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SpringMVC确定目标方法POJO类型入参的过程

SpringMVC确定目标方法POJO类型入参的过程 访问方法 @RequestMapping("/pojoparam") public String POJOParam(User user){ return "success"; } 1,首先确定一个key值 ①如果目标方法的POJO类型的参数没有使用@ModelAttribute作为入参修饰,则key为POJO类名的第一个字母小写 例test(User user){}这样的方法key就是user ②如果使用了@M

Mybatis(4) 映射文件-参数处理

参数处理: 单参数处理: mybatis 不会做任何特殊处理. #{key} : key 可以写任何字段取出参数值. 测试方法: mapper接口: mapper.xml: 控制台: 多参数处理: mybatis会做特殊处理, 将多个参数封装成一个map. #{key} 的 key 为 param1……paramN, 或者参数索引. #{key} 的 value 为传入的参数的真实值.  测试方法: mapper接口: mapper.xml:  控制台:  绑定异常, id, name 参数没有

java mybatis 框架下多种类型的参数传入到xml问题

由于公司要求,最近从.net向java 转,然后过程中遇到各种奇葩问题,特在此随记一番. 场景:一个方法中有两个参数,一个List的集合,一个int 类型的参数,最初我在xml的sql参数,无论定义成List还是int都报错,其实仔细一想就能明白,接口方法中定义了两个类型的参数,所以你XML中的参数类型无论定义成什么都是不对的. 原始写法: //========================这个例子是原始错误写法的例子===========Start void batchUpdateUrget

mybatis入参方式和缓冲

1.mybatis入参方式 @Param注解参数(注解) 封装成对象入参 public int updatePassword(@Param("id")int id,@Param("pwd")String newpwd); 注意:一般情况下:参数超过3个,就用对象. 2.MyBatis缓存 1).分类 一级缓存:SqlSession级别的缓存.(在同一个SqlSession中,缓存有效,默认打开) 二级缓存:应用级别缓存(全局缓存,随便在哪里都能取得到.默认是关闭的)

Mybatis调用PostgreSQL存储过程实现数组入参传递

注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 1 如上所示,参数是一个int数组,Mybatis提