在mapper映射文件中批量插入数据的sql语句该怎么写?以及怎样在sql语句中接收list集合参数?

在mapper映射文件中批量插入数据的sql语句该怎么写?

单条数据插入的好好的,为什么要突然变成批量插入的呢?

为什么需要批量插入数据呢?因为加入你现在有一个100次的循环,每次循环你都需要往数据库里面插入一条数据,那么这样你连接数据库的次数就太多了,这样是比较耗费资源的,所以我们能不能一次性的批量地往数据库中插入所有的数据呢?这样我们只连接一次数据库就行了,节省资源,也可以提高速度。

怎样写批量插入

动态代理接口中传递的参数是一个list集合,如下图:

在这里插入图片描述

mapper映射文件中的插入语句如下图:

在这里插入图片描述

上面插入多条数据的时候需要用到标签去遍历动态代理接口中传递来的list集合参数,separator的作用是设置分隔符,也就是每遍历完集合中的一个元素会写一个分隔符,最后的格式也就是下面的这样,如下:

insert into budget_execution
(...),
(...),
(...)

collection的值就是动态代理接口中传递的参数的名字,因为这里的动态代理接口中传递的参数名字是"list",所以这里的collection的值也是"list"。其中集合中的每个元素是通过item设置的值接收的,这里也就是说i就代表集合中的元素,open和close的作用是:对遍历结果加上前后缀,比如我们现在循环遍历集合结束了,最后的遍历结果就是insert into Xxx values
(…),(…),(…)
这样我们是不需要对遍历结果(…),(…),(…)加上前后缀的,因为它满足我们插入sql语句的格式,因为我们此时把open和close的值都设置成""空字符串就行了。
但是如果要是查询sql语句的时候,传递了一个list集合参数,那么我们在sql语句中该怎么遍历list集合中的元素呢?如下图:

在这里插入图片描述
上图中的collection的值是reportIds,这是因为查询的动态代理接口里面传递过来的list集合的参数名字是reportIds。这里通过separator设置的分隔符也是逗号,那么遍历完所有的集合元素之后的结果如下:
select distinct category_id
from budget_report_category
where report_id in
reportId1,reportId2,reportId3…
这样肯定是不行的,因为这样的话sql语句会出现错误,所以我们必须要在前后都加上一个小括号,而小括号就是通过open和close来的值来加的,open表示对循环结果的前面加上一个东西,close表示对循环结果的后面加上一个东西,这里的open="(",close=")",那么最终的sql语句的形式如下:
select distinct category_id
from budget_report_category
where report_id in
(reportId1,reportId2,reportId3…)
这样就满足sql语句的规范了。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Spring Boot 项目连接 SQL Servermapper 可以通过使用 MyBatis 或者 JPA 等框架来实现。 MyBatis 的配置步骤如下: 1. 在项目引入 MyBatis 的依赖。 2. 配置数据源。 3. 在 mapper 接口声明映射SQL 语句。 4. 在对应的 XML 文件 SQL 语句。 5. 在 Application 类配置 MyBatis。 JPA 的配置步骤如下: 1. 在项目引入 JPA 的依赖。 2. 配置数据源。 3. 创建 Entity 类,用于映射数据库的表。 4. 创建 Repository 接口,用于操作数据库。 5. 在 Application 类启用 JPA。 请注意,上述配置步骤仅是大致步骤,具体的配置方式可以参考官方文档。 ### 回答2: 在Spring Boot项目连接SQL Server时,需要进行一些配置和编相关的Mapper。 首先,添加SQL Server依赖项。在pom.xml文件,添加以下依赖项: ```xml <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>7.4.1.jre11</version> </dependency> ``` 接下来,在application.properties文件配置数据源信息: ```properties spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=mydatabase spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.datasource.username=sa spring.datasource.password=your_password ``` 请将上述配置的URL、用户名和密码替换为真实的SQL Server连接信息。 然后,创建一个Mapper接口,用于书数据库的操作方法。例如,我们创建一个UserMapper接口: ```java @Repository public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User getUserById(Integer id); @Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})") @Options(useGeneratedKeys = true, keyProperty = "id") void insertUser(User user); @Update("UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}") void updateUser(User user); @Delete("DELETE FROM users WHERE id = #{id}") void deleteUser(Integer id); } ``` 在上述示例,@Select、@Insert、@Update和@Delete是MyBatis框架提供的注解,用于执行SQL语句。其,@Options注解用于生成自增的主键值。 最后,通过在Service文件注入UserMapper,并调用其方法来实现对数据库的访问。 以上是在Spring Boot项目连接SQL ServerMapper的编方法。根据实际情况,需要根据数据库表结构和需求编相应的SQL语句。 ### 回答3: 在Spring Boot项目连接SQL Servermapper可以按照以下步骤进行编。 首先,确保你的Spring Boot项目已经添加了SQL Server的依赖,例如在pom.xml文件加入以下依赖: ``` <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> </dependency> ``` 接下来,在application.properties(或application.yml)文件配置SQL Server的连接信息,例如: ``` spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=your_database_name spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver ``` 然后,创建一个数据访问接口(通常以Mapper结尾),并在接口定义需要的数据操作方法。例如: ```java @Repository public interface YourMapper { @Select("SELECT * FROM your_table") List<YourEntity> getAllData(); } ``` 注意:需要添加`@Repository`注解来声明这是一个Spring组件。 最后,你可以在需要使用Mapper的地方通过依赖注入的方式来使用该Mapper。例如,在Service层或Controller层: ```java @Service public class YourService { private final YourMapper yourMapper; public YourService(YourMapper yourMapper) { this.yourMapper = yourMapper; } public List<YourEntity> getAllData() { return yourMapper.getAllData(); } } ``` 这样,你就可以在Spring Boot项目连接SQL Server并通过Mapper进行数据访问了。当然,如果有其他特殊的需求,你还可以在Mapper接口定义更多的数据操作方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr-X~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值