自定义批量插入oracle数据库目前我采用的有三种写法,今天主要就是要谈一谈union all这种写法的问题。话不多说,直接上代码
第一种写法
配置文件:
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
auto-mapping-behavior: full
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
jdbc-type-for-null: 'null'
mapper-locations: classpath*:mapper/**/*Mapper.xml
import com.lindl.business.entity.DbTest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface DbTestMapper {
int batchInsert(@Param("list") List<DbTest> list);
}
mapper.xml
<insert id="batchInsert">
insert into DB_TEST(ID, CREATE_TIME)
<foreach collection="list" index="index" item="item" separator="union all">
(select #{item.id}, #{item.createTime} from dual)
</foreach>
</insert>
controller
@Resource
DbTestMapper dbTestMapper;
@GetMapping("/test")
public String test() {
List<DbTest> list = new ArrayList<>();
list.add(DbTest.build("13", null));
list.add(DbTest.build("14", new Date()));
list.add(DbTest.build("15", null));
list.add(DbTest.build("16", new Date()));
list.add(DbTest.build("17", null));
list.add(DbTest.build("18", new Date()));
dbTestMapper.batchInsert(list)