Mybatis 批量增加/更新/删除 操作,注意修改数据库配置url !!

本文介绍了在Mybatis中进行批量增加、更新和删除操作时,需要注意数据库URL中添加`allowMultiQueries=true`以避免SQL执行错误。同时,提到了结合动态SQL进行批量操作的方法。

Mybatis 批量增删改查CRUD操作

一个小坑,如果数据库配置不加上allowMultiQueries=true这个属性的话,执行时sql语句会报错!

Srping:
  datasource:
    url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true

结合动态sql 话不多说,直接上码
// 批量插入

  <insert id="insert" parameterType="java.util.List" >
    insert into t_flow (id, group_id, flow_content,
      flow_time)
    values
    <foreach collection="list" item="item" index="index" separator=",">
      (#{item.id,jdbcType=INTEGER},
      #{item.groupId,jdbcType=CHAR},
      #{item.flowContent,jdbcType=VARCHAR},
      #{item.flowTime,jdbcType=TIMESTAMP})
    </foreach>
  </insert>

//批量更新 (有则更新无则插入)

<insert id="insert" parameterType="java.util.List" >
    insert into t_flow (id, group_id, flow_content,
    flow_time)
    values
    <foreach collection="list" item="item" index="index" separator=",">
      (#{item.id,jdbcType=INTEGER},
      #{item.groupId,jdbcType=CHAR},
      #{item.flowContent,jdbcType=VARCHAR},
      #{item.flowTime,jdbcType=TIMESTAMP})
    </foreach>
    ON DUPLICATE KEY UPDATE
    group_id=VALUES(group_id),
    flow_content=VALUES(flow_content),
    flow_time=VALUES(flow_time)
  </insert>

//批量删除

 <delete id="delete" parameterType="java.util.List">
        delete from t_flow where id in
        <foreach item="item" collection="list" open="(" separator="," close=")">
            #{item.id,jdbcType=INTEGER}
        </foreach>
    </delete>

### MyBatis 数据库配置 URL 示例代码解析 在 Spring Boot 中使用 MyBatis 进行数据库开发时,`url` 是用于指定数据库连接地址的关键属性之一。以下是关于 `url` 属性的示例代码及其详细解析。 #### 1. Maven 依赖配置 为了确保项目能够正常运行,在项目的 `pom.xml` 文件中需引入必要的依赖项,包括 MyBatisMySQL 驱动程序[^1]: ```xml <dependencies> <!-- Spring Boot Starter for MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.0</version> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies> ``` #### 2. 数据库连接 URL 配置 在 Spring Boot 的 `application.properties` 或 `application.yml` 文件中,可以通过如下方式配置数据库连接的相关信息,其中 `spring.datasource.url` 定义了数据库的具体访问路径。 ##### **`application.properties` 示例** ```properties spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/my_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=your_password_here ``` ##### **`application.yml` 示例** ```yaml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/my_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: your_password_here ``` #### 3. URL 参数解析 上述配置中的 `jdbc:mysql://localhost:3306/my_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC` 可分为以下几个部分进行解释[^3]: - **`jdbc:mysql://`**: 表明使用的协议为 JDBC 并通过 MySQL 协议连接。 - **`localhost`**: 数据库服务器的主机名或 IP 地址。如果本地部署,则通常为 `localhost`。 - **`:3306`**: 默认的 MySQL 端口号。如果不是默认端口,请替换为此处的实际值。 - **`/my_database`**: 要连接的目标数据库名称。 - **`?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC`**: 后续附加的参数列表,具体含义如下: - **`useUnicode=true`**: 设置是否启用 Unicode 字符集支持。 - **`characterEncoding=utf8`**: 显式声明字符编码为 UTF-8。 - **`serverTimezone=UTC`**: 指定客户端与服务端的时间区域一致性问题,避免因时间戳引发异常。 #### 4. 注意事项 当配置完成后,还需注意以下几点以确保应用能顺利启动并连接到目标数据库: - 如果使用的是较新的 MySQL 版本(如 8.x),则需要显式指定驱动类名为 `com.mysql.cj.jdbc.Driver`[^2]。 - 对于某些特殊场景下的 SQL 查询优化,可以进一步调整其他可选参数,例如 `rewriteBatchedStatements=true` 来提升批量插入性能。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值