mybais-foreach遍历的使用

在类似于select * from user where id in(1,2,3…);这种包含不确定参数条件时,需要用到foreach语句来处理,用法示例如下:

mapper:

public interface UserMapper {
    //查找多个id的用户数据
    public List<User> findUserByIds(UserQueryVO vo);
}

xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gyf.mapper.UserMapper">
 <!-- 4.foreac使用讲解-->
    <select id="findUserByIds" parameterType="userQueryVO" resultType="user">
        <!--性别和名字 SELECT * FROM user WHERE id in (1,2,3) -->
       SELECT * FROM user
       <where>
           <if test="ids != null and ids.size > 0">
               <!--
               collection:集合,写集合属性
               item:遍历接收变量
               open:遍历开始
               close:遍历结束
               separator:拼接格式
               for(Integer id : ids){
               }
               -->
                <foreach collection="ids" item="id" open="id in(" close=")" separator=",">
                    ${id}
                </foreach>
            </if>
        </where>
    </select>
 </mapper>

测试类:

public class Demo01 {
    SqlSession session;
    @Before
    public void before() throws IOException {
        System.out.println("before....获取session");
        //读取配置文件
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
        //通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //通过SqlSessionFactory创建SqlSession
        session = sessionFactory.openSession();
    }

    @After
    public void after(){
        session.close();
    }
   
    @Test
    public void test4() throws IOException {
        UserMapper userMapper = session.getMapper(UserMapper.class);
        UserQueryVO query = new UserQueryVO();
        List<Integer> ids = new ArrayList<Integer>();
        ids.add(1);
        ids.add(10);
        ids.add(16);
        query.setIds(ids);
        List<User> users = userMapper.findUserByIds(query);
        System.out.println(users);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44682587/article/details/107756661