Mybatis之动态SQL foreach使用

foreach

1、根据用户角色列表,获取该角色列表下用户列表信息-foreach_array用法:

Mapper.java接口中新增方法:

//根据用户角色列表,获取该角色列表下用户列表信息-foreach_array
	public List<User> getUserByRoleId_foreach_array(Integer[] roleIds);

Mapper.xml:

	<resultMap type="User" id="userMapByRole">
		<id property="id" column="id"/>
		<result property="userCode" column="userCode"/>
		<result property="userName" column="userName"/>
	</resultMap>
	<select id="getUserByRoleId_foreach_array" resultMap="userMapByRole">
		select * from smbms_user where userRole in
		<foreach collection="array" item="roleIds" 
		open="(" separator="," close=")">
		#{roleIds}
		</foreach>
	</select>

注:其中resultMap为后面测试公用映射

test测试类:

@Test
	public void testGetUserByRoleId_foreach_array(){
		SqlSession sqlSession = null;
		List<User> userList = new ArrayList<User>();
		Integer[] roleIds = {2,3};
		try {
			sqlSession = MyBatisUtil.createSqlSession();
			userList = sqlSession.getMapper(UserMapper.class).getUserByRoleId_foreach_array(roleIds);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			MyBatisUtil.closeSqlSession(sqlSession);
		}
		logger.debug("userList.size ----> " + userList.size());
		for(User user : userList){
			logger.debug("user ===========> id: " + user.getId()+
						", userCode: " + user.getUserCode() + 
						", userName: " + user.getUserName() +
						", userRole: " + user.getUserRole());
		}
	}

2、根据用户角色列表,获取该角色列表下用户列表信息-foreach_list用法

Mapper.java接口中新增方法:

// 根据用户角色列表,获取该角色列表下用户列表信息-foreach_list
	public List<User> getUserByRoleId_foreach_list(List<Integer> roleList);

Mapper.xml:

<!-- 根据用户角色列表,获取该角色列表下用户列表信息-foreach_list -->
	<select id="getUserByRoleId_foreach_list" resultMap="userMapByRole">
		select * from smbms_user where userRole in 
			<foreach collection="list" item="roleList" open="(" separator="," close=")">
				#{roleList}
			</foreach>
	</select>

test测试类:

@Test
	public void testGetUserByRoleId_foreach_list(){
		SqlSession sqlSession = null;
		List<User> userList = new ArrayList<User>();
		List<Integer> roleList = new ArrayList<Integer>();
		roleList.add(2);
		roleList.add(3);
		try {
			sqlSession = MyBatisUtil.createSqlSession();
			userList = sqlSession.getMapper(UserMapper.class).getUserByRoleId_foreach_list(roleList);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			MyBatisUtil.closeSqlSession(sqlSession);
		}
		logger.debug("userList.size ----> " + userList.size());
		for(User user : userList){
			logger.debug("user ===========> id: " + user.getId()+
						", userCode: " + user.getUserCode() + 
						", userName: " + user.getUserName() +
						", userRole: " + user.getUserRole());
		}
	}

3、根据用户角色列表和性别(多参数),获取该角色列表下指定性别的用户列表信息-foreach_map用法

mapper.java接口:

	// 根据用户角色列表和性别(多参数),获取该角色列表下指定性别的用户列表信息-foreach_map
	public List<User> getUserByConditionMap_foreach_map(Map<String,Object> conditionMap);

mapper.xml:

<!-- 根据用户角色列表和性别(多参数),获取该角色列表下并指定性别的用户列表信息-foreach_map -->
	<select id="getUserByConditionMap_foreach_map" resultMap="userMapByRole">
		select * from smbms_user where gender = #{gender} and userRole in 
			<foreach collection="roleIds" item="roleMap" open="(" separator="," close=")">
				#{roleMap}
			</foreach>
	</select>

测试类:

@Test
	public void testGetUserByConditionMap_foreach_map(){
		SqlSession sqlSession = null;
		List<User> userList = new ArrayList<User>();
		Map<String, Object> conditionMap = new HashMap<String,Object>();
		List<Integer> roleList = new ArrayList<Integer>();
		roleList.add(2);
		roleList.add(3);
		conditionMap.put("gender", 1);
		conditionMap.put("roleIds",roleList);
		try {
			sqlSession = MyBatisUtil.createSqlSession();
			userList = sqlSession.getMapper(UserMapper.class).getUserByConditionMap_foreach_map(conditionMap);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			MyBatisUtil.closeSqlSession(sqlSession);
		}
		logger.debug("userList.size ----> " + userList.size());
		for(User user : userList){
			logger.debug("user ===========> id: " + user.getId()+
						", userCode: " + user.getUserCode() + 
						", userName: " + user.getUserName() +
						", gender: " + user.getGender() +
						", userRole: " + user.getUserRole());
		}
	}

4、根据用户角色列表,获取该角色列表下用户列表信息-foreach_map(单参数封装成map)用法

mapper.java接口

	// 根据用户角色列表,获取该角色列表下用户列表信息-foreach_map(单参数封装成map)
	public List<User> getUserByRoleId_foreach_map(Map<String,Object> roleMap);

mapper.xml:

<!-- 根据用户角色列表(单参数),获取该角色列表下用户列表信息-foreach_map -->
	<select id="getUserByRoleId_foreach_map" resultMap="userMapByRole">
		select * from smbms_user where userRole in 
			<foreach collection="rKey" item="roleMap" open="(" separator="," close=")">
				#{roleMap}
			</foreach>
	</select>

测试类:

@Test
	public void testGetUserByRoleId_foreach_map(){
		SqlSession sqlSession = null;
		List<User> userList = new ArrayList<User>();
		List<Integer> roleList = new ArrayList<Integer>();
		roleList.add(2);
		roleList.add(3);
		Map<String, Object> roleMap = new HashMap<String,Object>();
		roleMap.put("rKey", roleList);
		try {
			sqlSession = MyBatisUtil.createSqlSession();
			userList = sqlSession.getMapper(UserMapper.class).getUserByRoleId_foreach_map(roleMap);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			MyBatisUtil.closeSqlSession(sqlSession);
		}
		logger.debug("userList.size ----> " + userList.size());
		for(User user : userList){
			logger.debug("user ===========> id: " + user.getId()+
						", userCode: " + user.getUserCode() + 
						", userName: " + user.getUserName() +
						", userRole: " + user.getUserRole());
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liyumo65

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值