JPA 执行单条和多条Insert插入语句(MySQL、Oracle)
1 实现代码public class Test{@PersistenceContextprivate EntityManager entityManager;public insert() {String insertSql="insert into test(id) values('1'),('2');"Query query = this.entityManager.createNativeQ
·
1 执行单条Insert语句
1.1 MySQL
由于executeUpdate()语句只能执行一行语句,可以使用insert into tablename(...) values(...),(...)格式将多行insert into语句变为一行。
public class Test{
@PersistenceContext
private EntityManager entityManager;
public insert() {
String insertSql="insert into test(id) values('1'),('2');"
Query query = this.entityManager.createNativeQuery(insertSql);
query.executeUpdate();
}
}
1.2 Oracle
由于executeUpdate()语句只能执行一行语句,可以使用insert all into tablename(...) values(...) tablename(...) values(...) select 1 from DUAL;
格式将多行insert into语句变为一行。
public class Test{
@PersistenceContext
private EntityManager entityManager;
public insert() {
String insertSql="insert all into test(id) values('1') into test(id) values('2') select 1 from DUAL;"
Query query = this.entityManager.createNativeQuery(insertSql);
query.executeUpdate();
}
}
2 执行多条Insert语句
2.1 Oracle
由于executeUpdate()语句只能执行一行语句,需要使用begin ... end;语句才行执行多条Insert语句。
public class Test{
@PersistenceContext
private EntityManager entityManager;
public insert() {
String insertSql="begin insert into test(id) values('1');insert into test(id) values('2'); end;"
Query query = this.entityManager.createNativeQuery(insertSql);
query.executeUpdate();
}
}
2 注意
1、executeUpdate()语句只能执行一行语句,不能执行多行语句,如果需要执行多条语句,只能将多条语句变为一条,或者使用begin .. end;语句才能执行多条语句(仅供参考)。
2、如果是Oracle进行批量插入操作时,多条Insert into语句执行效率会比insert all into tablename(...) values(...) select 1 from DUAL;执行效率高。
更多推荐
已为社区贡献37条内容
所有评论(0)