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;执行效率高。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐