Mybatis Oracle批量添加

 !!!Oracle的批量插入与mysql不一样!!! 

mapper接口

    /**
     * CBD批量入库
     * @param exdBizReportCBDList
     * @return
     */
    int batchInsert(@Param("exdBizReportCBDList")Set<ExdBizReportCBD> exdBizReportCBDList);

xml文件

    <insert id="batchInsert">
        insert into
       exd_biz_report_cbd(ID,CBD_CODE,CBD_NAME,AREA_CODE,CBD_CITY_LEVEL,MEMO,DR,CREATE_USER,CREATE_TIME,UPDATE_USER,UPDATE_TIME)
        <foreach collection="exdBizReportCBDList" item="exdBizReportCBD" separator="union all" open="(" close=")">
            select
            #{exdBizReportCBD.id,jdbcType=VARCHAR},
            #{exdBizReportCBD.cbdCode,jdbcType=NULL},
            #{exdBizReportCBD.cbdName,jdbcType=NULL},
            #{exdBizReportCBD.areaCode,jdbcType=NULL},
            #{exdBizReportCBD.cbdCityLevel,jdbcType=NULL},
            #{exdBizReportCBD.memo,jdbcType=NULL},
            #{exdBizReportCBD.dr},
            #{exdBizReportCBD.createUser},
            #{exdBizReportCBD.createTime},
            #{exdBizReportCBD.updateUser,jdbcType=NULL},
            #{exdBizReportCBD.updateTime}
            from dual
        </foreach>
    </insert>

注意,插入Null提示无效字符 111

网上说有两种解决方案

  1. 在插入语句中的字段的表达式括号内加入jdbc类型
#{exdBizReportCBD.cbdCode,jdbcType=NULL}
  1. 在Mybatis全局配置文件中加入setting;

    jdbcTypeForNull

    <settings>
       <setting name="jdbcTypeForNull" value="NULL" />
    </settings>
    

    第二种方法,我想在application.yml中设置,没效果,暂时使用第一种方式

在Spring Boot项目中整合MyBatis框架和Oracle数据库时,批量插入操作通常涉及到以下几个步骤: 1. **配置数据源**:在Spring Boot的`application.properties`或`application.yml`文件中配置Oracle的数据源,包括URL、用户名和密码。 ```properties spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/SID spring.datasource.username=your_username spring.datasource.password=your_password ``` 2. **添加依赖**:在`pom.xml`文件中引入MyBatisOracle JDBC驱动相关的依赖。 ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc11</artifactId> </dependency> ``` 3. **创建Mapper接口**:在`src/main/java/mapper`目录下创建一个Mapper接口,并定义批量插入的方法,例如使用`insertList`方法。 ```java @Mapper public interface YourMapper { void insertList(List<YourEntity> entities); } ``` 4. **编写XML映射文件**(如果你使用的是MyBatis XML映射方式):在`resources/mapper`目录下创建对应的XML文件,定义SQL插入语句。 ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.yourpackage.YourMapper"> <insert id="insertList" parameterType="java.util.List"> INSERT INTO your_table (column1, column2) VALUES <foreach item="item" index="index" collection="list" open="(" separator="),(" close=")"> (:column1, :column2), </foreach> </insert> </mapper> ``` 5. **在Service或Repository中调用批量插入**:注入Mapper对象,然后通过Mapper的`insertList`方法执行批量插入。 ```java @Autowired private YourMapper yourMapper; public void batchInsert(List<YourEntity> entities) { yourMapper.insertList(entities); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值