mysql mapper foreach_springboot结合MyBatis中使用foreach

本文介绍了如何在SpringBoot项目中结合MyBatis使用Foreach标签进行SQL动态构建。从查询到插入操作,展示了Foreach在处理list、array和Map参数时的应用,并提供了测试代码示例。
摘要由CSDN通过智能技术生成

废话少说,直接建项目上代码

先建一个springboot web项目或者模块,目录结构如下

683694f706d099708eb6629f6e791fbf.png

在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参数

select * from t_user

#{item}

使用foreach批量插入用户

insert into t_user(id,name)

values

(#{user.id},#{user.name})

使用foreach接收array数组

select * from t_user where id in

#{item}

使用foreach接收Map

resultType="cn.niit.mybatisforeach.pojo.User">

select * from t_user where id in

#{item}

UserMapper.java

@Mapper

@Component

public interface UserMapper {

/**

* 多个参数查询user集合

*/

List getUsersByListParam(@Param("list") List list);

/**

* 使用foreach批量插入

*/

int insertMultiUsers(@Param("users") List 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 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 users = new ArrayList();

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);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值