1、创建测试表,create table test_batch(id number, v_date date)
2、先看插入原始表数据select t.*, rowid from test_day t
3、批量插入测试数据,insert into test_batch select * from test_daycommit
4、查询表的记录,select t.*, rowid from test_batch t可以发现数据一致。批量添加数据完成。
一对多,其实并不一定要做约束,我更倾向于业务上的一对多。\x0d\x0a一对多的基本概念是。子表依赖于主表的主键。每条主表的记录,会对应子表上一到多条记录。\x0d\x0a\x0d\x0a主键是基于本表字段的约束,是唯一约束。\x0d\x0a外键是子表基于主表主键的约束,不是唯一约束,但要求必须主表有相应的记录,子表才可以插入数据。使用List集合形式的参数的批量 *** 作如果使用List集合来进行批量 *** 作,首先要把待添加的数据与实体类对应(一个实体类通常对应数据库里的一张表, 下面的例子中Actor类就是一个实体类, 它对应了数据库中的 "t_actor"数据表).
比如"t_actor"数据表中有id,first_name,last_name三个字段, 那么对应Actor类就要有id, firstName, lastName属性, 且都得有getter, setter方法.
spring jdbc core 包中提供了一个SqlParamterSource 对象,这个对象用于SQL语句参数的设置.
使用SqlParameterSourceUtils.createBatch这个方法,把javabean(即上面说的实体类)的list 转化成array,spring会循环的进行取值;
public class JdbcActorDao implements ActorDao { private NamedParameterTemplate namedParameterJdbcTemplate public void setDataSource(DataSource dataSource) { this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource)} public int[] batchUpdate(final List<Actor>actors) { SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(actors.toArray()) int[] insertCounts = namedParameterJdbcTemplate.batchUpdate( "INSERT INTO t_actor (id,first_name,last_name) VALUES(:id,:firstName, :lastName )",batch) return insertCounts} // ... additional methods}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)