oracle 使用mybatis批量插入
时间: 2023-08-09 07:11:11 浏览: 212
Mybatis支持Oracle批量插入。可以使用Mybatis的<foreach>标签来实现。需要在SQL语句中加入 <foreach> 标签来遍历需要插入的数据列表,并使用bind标签来绑定参数。 例如:
```
<insert id="insertUsers" parameterType="java.util.List">
insert into user (name, age) values
<foreach collection="list" item="user" separator=",">
(#{user.name}, #{user.age})
</foreach>
</insert>
```
其中,list就是需要插入的数据列表,user是遍历的对象,可以在里面获取对应的name和age参数。
注意:oracle 数据库不支持批量插入,可以通过使用一个for循环把所有的数据插入到数据库中。
相关问题
oracle 整合 mybatis 批量插入数据
要使用Oracle和Mybatis进行批量插入数据,可以使用以下步骤:
1. 配置Mybatis的批处理功能。在Mybatis的配置文件中,添加以下配置:
```
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="false" />
<setting name="aggressiveLazyLoading" value="false" />
<setting name="multipleResultSetsEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<setting name="useGeneratedKeys" value="false" />
<setting name="autoMappingBehavior" value="PARTIAL" />
<setting name="defaultExecutorType" value="SIMPLE" />
<setting name="defaultStatementTimeout" value="25" />
<setting name="safeRowBoundsEnabled" value="false" />
<setting name="mapUnderscoreToCamelCase" value="false" />
<setting name="localCacheScope" value="SESSION" />
<setting name="jdbcTypeForNull" value="NULL" />
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
<setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver" />
<setting name="callSettersOnNulls" value="false" />
<setting name="logImpl" value="STDOUT_LOGGING" />
<setting name="configurationFactory" value="org.apache.ibatis.session.ConfigurationFactory" />
<setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumOrdinalTypeHandler" />
<setting name="defaultObjectFactory" value="org.apache.ibatis.reflection.factory.DefaultObjectFactory" />
<setting name="defaultObjectWrapperFactory" value="org.apache.ibatis.reflection.wrapper.DefaultObjectWrapperFactory" />
<setting name="useActualParamName" value="true" />
<setting name="returnInstanceForEmptyRow" value="false" />
<setting name="jdbcTypeNameGuessing" value="false" />
<setting name="mapJavaTypeToDbType" value="true" />
<setting name="localCacheEnabled" value="true" />
<setting name="batch" value="BATCH" />
</settings>
```
2. 在Mybatis的Mapper文件中,定义批量插入的SQL语句。例如:
```
<insert id="batchInsert" parameterType="java.util.List">
insert into table_name (column1, column2, column3) values
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2}, #{item.column3})
</foreach>
</insert>
```
3. 在Java代码中,使用Mybatis的批量插入功能进行数据插入。例如:
```
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
MyMapper mapper = sqlSession.getMapper(MyMapper.class);
List<MyObject> list = new ArrayList<>();
// add data to list
mapper.batchInsert(list);
sqlSession.commit();
sqlSession.close();
```
注意事项:
- Oracle数据库需要设置参数才能支持批量插入功能。在JDBC连接字符串中添加参数“oracle.jdbc.batchUpdateBehavior=2”即可。
- 批量插入数据时,需要注意每次插入的数据量不能太大,否则可能会导致数据库响应变慢。可以根据实际情况调整每次插入的数据量。
oracle mybatis 批量插入
在MyBatis中执行批量插入操作可以提高数据库的效率,以下是Oracle MyBatis批量插入的实现方法:
1. 在mapper.xml中定义批量插入语句,如下:
```xml
<insert id="batchInsert" parameterType="java.util.List">
insert into table_name (column1, column2, column3)
values
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2}, #{item.column3})
</foreach>
</insert>
```
2. 在Java代码中调用批量插入方法,如下:
```java
List<Entity> list = new ArrayList<>();
// 添加数据到list中
int count = sqlSession.insert("batchInsert", list);
sqlSession.commit();
```
在以上代码中,通过调用`batchInsert`方法实现批量插入操作。`parameterType`参数指定了传入的参数类型为`java.util.List`类型,`list`是一个包含要插入的实体数据的`List`对象。在批量插入语句中,使用了`foreach`标签遍历`list`中的数据,将每行数据插入到数据库中。
最后,调用`sqlSession.commit()`方法提交事务,将数据插入到数据库中。
阅读全文
相关推荐














