SELECT * from user where id in(1,2,4)
这个语句就是 查找 id = 1 或 id = 2 或 id = 4 。
那就可以用<foreach> 这个标签来写:
其中他的属性我先列举:
标签用于遍历集合,它的属性:
• collection:代表要遍历的集合元素,注意编写时不要写#{}
• open:代表语句的开始部分
• close:代表结束部分
• item:代表遍历集合的每个元素,生成的变量名
• sperator:代表分隔符
1.先编写接口:
2.编写核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="datasourceInfo.properties"></properties>
<typeAliases>
<typeAlias type="com.bihu.Bean.User" alias="User"></typeAlias>
<typeAlias type="java.util.List" alias="list"></typeAlias>
</typeAliases>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/bihu/mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
mybatis核心配置文件
3.编写映射文件:
<?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.bihu.Dao.UserMapper">
<select id="findIds" parameterType="list" resultType="user"> <!--已list、user设置别名-->
<!--原本语句: SELECT * from user where id in(1,2,4) -->
select * from user
<where>
<foreach collection="list" open="id in(" close=")" item="id" separator=",">
#{id}
</foreach>
</where>
</select>
</mapper>
mybatis 映射文件
4.编写Service层 (模拟) 查询层
package com.bihu.Service;
import com.bihu.Bean.User;
import com.bihu.Dao.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class UserService {
public static void main(String[] args) throws IOException {
//模拟数据来源
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
//下面开始操作
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> ids = mapper.findIds(list);
System.out.println(ids);
}
}
View Code
运行:
可以发现语句和查询都对的上号。
本文来自博客园,作者:咸瑜,转载请注明原文链接:javascript:void(0)p/15151889.html