1. 程式人生 > 其它 >mybatis學習日記-動態sql-foreach

mybatis學習日記-動態sql-foreach

dao層:

package com.fu.dao;

import com.fu.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    //查詢id為:1,4,9的使用者
    public List<User> getUserList(Map map);

}

pojo層:

package com.fu.pojo;

import org.apache.ibatis.type.Alias;

@Alias("user")
public class
User { private int id; private String name; private String pwd; public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public User() { } public int getId() { return id; } public void
setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override
public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }

dao層對應的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">

<!--在這裡的foreach標籤中:collection的值就相當於#{}裡面的這個值,在測試類中使用萬能map中對應的String物件-->
<mapper namespace="com.fu.dao.UserMapper">

    <select id="getUserList" resultType="user">
        select * from user
        <where>
            <foreach collection="list" item="item" open="(" separator="or" close=")">
                id=#{item}
            </foreach>
        </where>
    </select>
</mapper>

測試類:

package com.fu.dao;

import com.fu.pojo.User;
import com.fu.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class MyTest {

    @Test
    public void getUserList(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String, Object> map = new HashMap<>();
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(4);
        list.add(9);

        map.put("list",list);

        List<User> userList = mapper.getUserList(map);
        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }
}

測試結果:

<==      Total: 3
User{id=1, name='張三', pwd='123456'}
User{id=4, name='王達', pwd='123456'}
User{id=9, name='舒凡', pwd='147222'}