废话少说,直接建项目上代码
先建一个 springboot web 项目或者模块,目录结构如下
在 pom.xml 中自行加入需要的依赖,application.properties 的配置如下
server.port=8888
mybatis.mapper-locations=classpath*:mapper/*Mapper.xml
spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=Panbing936@
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
实体类 User.java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private int id;
private String name;
}
UserMapper.xml 中
使用 foreach 接收 list 参数
<!-- 使用 foreach 接收 list 参数 -->
<select id="getUsersByListParam" resultType="cn.niit.mybatisforeach.pojo.User">
select * from t_user
<foreach collection="list" item="item" open="where id in(" close=")" separator=",">
#{item}
</foreach>
</select>
使用 foreach 批量插入用户
<!-- 使用 foreach 批量插入用户 -->
<insert id="insertMultiUsers">
insert into t_user(id,name)
values
<foreach collection="users" item="user" separator=",">
(#{user.id},#{user.name})
</foreach>
</insert>
使用 foreach 接收 array 数组
<!-- 使用 foreach 接收 array 数组 -->
<select id="getUserByArrayList" parameterType="java.util.ArrayList" resultType="cn.niit.mybatisforeach.pojo.User">
select * from t_user where id in
<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
使用 foreach 接收 Map
<!-- 使用 foreach 接收 Map-->
<select id="getUserByMap" parameterType="java.util.HashMap"
resultType="cn.niit.mybatisforeach.pojo.User">
select * from t_user where id in
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
UserMapper.java
@Mapper
@Component
public interface UserMapper {
/**
* 多个参数查询 user 集合
*/
List<User> getUsersByListParam(@Param("list") List list);
/**
* 使用 foreach 批量插入
*/
int insertMultiUsers(@Param("users") List<User> users);
/**
* 使用 foreach 接收数组参数
*/
List getUserByArrayList(int[] ids);
/**
* 使用 foreach 接收 map
*/
List getUserByMap(Map params);
}
测试代码
MybatisForeachApplicationTests.java 中的代码如下
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisForeachApplicationTests {
@Test
public void contextLoads() {}
/**
* 动态 sql 学习 ---foreach 标签使用(查询)*/
@Autowired
private UserMapper userMapper;
@Test
public void dynamicSQLToForeach() throws IOException {List<User> users = userMapper.getUsersByListParam(Arrays.asList(1,2,3,4));
for(User user:users) {System.out.println(user);
}
}
/**
* 动态 sql 学习 ---foreach 标签使用(新增)*/
@Test
public void insertMultiUsers() throws IOException {List<User> users = new ArrayList<User>();
users.add(new User(6,"陈大小姐"));
users.add(new User(7,"少主"));
users.add(new User(8,"天龙人"));
int count = userMapper.insertMultiUsers(users);
System.out.println("成功插入"+count+"条记录");
}
@Test
public void getUserByArrayList() {int[] ids = new int[] {1,3,6,9};
List users = userMapper.getUserByArrayList(ids);
for (Object user:users)
{System.out.println(user);
}
}
@Test
public void getUserByMapTest() {final List ids = new ArrayList();
ids.add(1);
ids.add(2);
ids.add(3);
ids.add(6);
ids.add(7);
ids.add(9);
Map params = new HashMap();
params.put("ids", ids);
List users = userMapper.getUserByMap(params);
for (Object user : users)
System.out.println(user);
}
}
github 代码
个人网站