廢話少說,直接建項目上代碼
先建一個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);
}
}