1、foreach迭代数组入参
User实体类
package com.fan.entity;
public class User {
private Integer id;
private String name;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
1.1、UserDao2接口类(参数是array类型)
package com.fan.dao;
import com.fan.entity.User;
import java.util.List;
public interface UserDao2 {
//参数是数组
public List<User> findAll1(int[] id);
}
1.2、配置UserDao2Mapper.xml文件
<mapper namespace="com.fan.dao.UserDao2">
<select id="findAll1" resultType="com.fan.entity.User">
select * from users where id in
<foreach collection="array" item="id1" open="(" separator="," close=")">
#{id1}
</foreach>
</select>
</mapper>
注:
collection:最关键并且最容易出错的属性,需要格外注意,该属性必须指定,不同情况下,该属性是不一样的,主要有三种情况:
1、若入参为单参数且参数是一个数组,则collection属性值为array(此处就用的这个)。
2、若入参为单参数且参数是一个List,则collection属性值为list。
3、若传入参数为多参数,就需要把他们封装为一个Map进行处理
item:表示集合中每一个元素进行迭代时的别名(此处是id1)。
index:指定一个名称,用于表示在迭代过程中,每次迭代的位置。
open:表示该语句以什么开始(in条件语句是以 "(" 开始)。
separator:表示在每次迭代之间以什么符号作为分隔符(in条件语句以","作为分隔符)。
close:表示语句以什么结束(in条件语句是以 ")" 结束)。
1.3、测试类
import com.fan.dao.UserDao2;
import com.fan.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
try {
int[] id=new int[]{1,4,5};
Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsReader).openSession();
UserDao2 mapper = sqlSession.getMapper(UserDao2.class);
List<User> all1 = mapper.findAll1(id);
for (User user:all1) {
System.out.println(user);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试结果如下图所示:
测试结果2、foreach迭代List类型入参
2.1、UserDao2接口类(参数是List类型)
//参数是List类型
public List<User> findAll2(List<Integer> id);
2.2、配置UserDao2Mapper.xml文件
<mapper namespace="com.fan.dao.UserDao2">
<select id="findAll2" resultType="com.fan.entity.User">
select * from users where id in
<foreach collection="list" item="id2" open="(" separator="," close=")">
#{id2}
</foreach>
</select>
</mapper>
2.3、测试类
import com.fan.dao.UserDao2;
import com.fan.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
try {
List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(7);
Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsReader).openSession();
UserDao2 mapper = sqlSession.getMapper(UserDao2.class);
List<User> all2 = mapper.findAll2(list);
for (User user:all2) {
System.out.println(user);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试结果如下图所示:
测试结果3、foreach迭代Map类型入参
3.1、UserDao2接口类(参数是Map类型)
//参数是Map类型
public List<User> findAll3(Map map);
3.2、配置UserDao2Mapper.xml文件
<mapper namespace="com.fan.dao.UserDao2">
<select id="findAll3" resultType="com.fan.entity.User">
select * from users where id in
<foreach collection="key" item="id3" open="(" separator="," close=")">
#{id3}
</foreach>
</select>
</mapper>
3.3、测试类
import com.fan.dao.UserDao2;
import com.fan.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test2 {
public static void main(String[] args) {
try {
List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
Map map=new HashMap();
map.put("key",list);
Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsReader).openSession();
UserDao2 mapper = sqlSession.getMapper(UserDao2.class);
List<User> all3 = mapper.findAll3(map);
for (User user:all3) {
System.out.println(user);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
网友评论