我是靠谱客的博主 畅快曲奇,最近开发中收集的这篇文章主要介绍java中在mybatis的配置文件中使用两个foreach问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用foreach时,一定要注意传入的list是否空。

1、使用一个foreach

    Service层:

	public List<UserInfo> getListOne() {
		List<String> nameList = new ArrayList<>();
		nameList.add("wang");
		List<User> userList = new ArrayList<>();
		if(nameList != null && nameList.size() > 0) {    //在数据复杂的情况下,一定要判断是否为空,否则可能会报错
			userList = userInfoMapper.getListOne(nameList);
		}
		return userList;
	}

    Dao层:

        List<UserInfo> getListOne(List<String> nameList);

    Xml文件:

	<select id="getListOne" resultType="UserInfo">
    	    SELECT * FROM user_info
    	    WHERE name IN
    	    <foreach item="nameList" index="index" collection="list"
                open="(" separator="," close=")">
                #{nameList}
            </foreach>
        </select>
    上面这个xml中的collection的值为list,如果传入的参数为数组,这里collection的值应该为Array


2、使用两个foreach:

    Service层:

	public List<User> getListOne() {
		List<Long> idList = new ArrayList<>();
		List<String> nameList = new ArrayList<>();
		idList.add(1L);
		nameList.add("name");
		if(null == idList || idList.size() < 1) {
			//这里传入0L,而list中的数据类型为Long,原因是因为一般表的id没有为0的,所以制造为空的条件
			idList.add(0L);
		}
		if(null == nameList || nameList.size() < 1){
			nameList.add("");
		}
		//然后将list数据封装到Map里面去
		Map<String, Object> optionMap = new HashMap<>();
		optionMap.put("idList", idList);
		optionMap.put("nameList", nameList);
		
		List<User> userList = userInfoMapper.getListOne(optionMap);
		return userList;
	}

    Dao层:
        List<UserInfo> getListOne(Map<String, Object> optionMap);

    Xml文件:

        <select id="getListOne" resultType="UserInfo">
    	    SELECT * FROM user_info
    	    WHERE id IN
    	    <foreach item="param" index="index" collection="idList"
                open="(" separator="," close=")">
                #{param}
            </foreach>
	    	OR name IN
	    <foreach item="param" index="index" collection="nameList"
                open="(" separator="," close=")">
                #{param}
            </foreach>
        </select>

    在多个foreach中,将list放到Map里面,这个时候,xml文件中的collection值就为Map中的那个list的名字。

    item参数的值,貌似任意的都是可以的,我测试了几个,都是可行的。

最后

以上就是畅快曲奇为你收集整理的java中在mybatis的配置文件中使用两个foreach问题的全部内容,希望文章能够帮你解决java中在mybatis的配置文件中使用两个foreach问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部