使用spring jdbcTemplate将数据插入多个表

仍然在学习

我正在使用java,spring jdbc template将n条记录插入两个表中。像这样

假设daos.xml配置正确。

ApplicationContext ctxt = new ClassPathXmlApplicationContext("daos.xml");
JdbcTemplate template = (JdbcTemplate) ctxt.getBean("jdbcTemplate");

final List<Person> list = new ArrayList<>();
        final List<Role> roles = new ArrayList<>();
        for(int i =1; i<=100; i++){
            Person item = new Person();
            item.setFirstName("Naveen" + i);
            item.setLastName("kumar" + i);
            item.setDescription("D" + i);
            list.add(item);

            Role role = new Role();
            role.setName("Admin");
            role.setCode("c"  + i);
            roles.add(role);

        }

String sql = "insert into person(first_name, last_name, description) values(?,?,?)";

            int[] arr = template.batchUpdate(sql, new BatchPreparedStatementSetter() {

                        @Override
                        public void setValues(PreparedStatement ps, int i) throws SQLException                             {
                            Person person = list.get(i);
                            ps.setObject(1, person.getFirstName());
                            ps.setObject(2, person.getLastName());
                            ps.setObject(3, person.getDescription());
                        }

                        @Override
                        public int getBatchSize() {
                            return list.size()
                        }
                    });

我还配置了事务管理器。

所以我的问题是如何使用批处理将数据同时插入人和角色表。因为人可以扮演角色。当我插入人时,需要将角色ID一起插入。在这种情况下,人员插入查询将如下所示。

String sql = "insert into person(first_name, last_name, description, role_id) values(?,?,?, ?)";

我要成批执行。因为在我的情况下,我有至少1万个人要使用文件进行解析。因此,这可能是性能杀手,因为我将角色插入表中而不是将角色插入表中,然后他们再次插入人。

钉枪

您可以使用多通道语句和LAST_INSERT_ID()MySql函数:

String sql = "insert into role(name, code) values(?,?);" +
    "insert into person(first_name, last_name, description, role_id) values(?,?,?,(SELECT LAST_INSERT_ID()));";

int[] arr = template.batchUpdate(sql, new BatchPreparedStatementSetter() {

    @Override
    public void setValues(PreparedStatement ps, int i) throws SQLException {
        Role role = roles.get(i);
        Person person = list.get(i);
        ps.setObject(1, role.getName());
        ps.setObject(2, role.getCode();
        ps.setObject(3, person.getFirstName());
        ps.setObject(4, person.getLastName());
        ps.setObject(5, person.getDescription());
    }

    @Override
    public int getBatchSize() {
        return list.size()
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PHP将数据插入多个表

来自分类Dev

PreparedStatement:如何使用JDBC将数据插入多个表中

来自分类Dev

如何使用Django Orm将数据插入多个表

来自分类Dev

如何使用auto_increment主键列将多个数据插入到表中?

来自分类Dev

使用一种形式将数据插入到多个表中

来自分类Dev

如何使用Java在Hibernate中一次将数据插入到多个表中

来自分类Dev

使用codeigniter以单一形式将多个数据插入mysql表中

来自分类常见问题

使用查询将数据插入临时表

来自分类Dev

使用Ansible将数据插入mysql表

来自分类Dev

使用表格将数据插入php表

来自分类Dev

使用Java将数据插入表中

来自分类Dev

使用队列将数据插入表

来自分类Dev

MYSQL使用索引表将数据插入表

来自分类Dev

2要求:1)用FORALL替换多个FOR循环2)在将数据插入表中时使用IF-THEN-ELSE条件

来自分类Dev

使用列名参数将数据插入数据库表

来自分类Dev

使用columnText将表插入多个PDF页面

来自分类Dev

使用C#将多个参数值插入sqlite表

来自分类Dev

使用索引将多个数组的值插入表中

来自分类Dev

如何使用Spring Boot CRUD API使用一个POST端点在多个表中插入数据

来自分类Dev

使用spring的jdbcTemplate和存储过程将byte []插入blob字段

来自分类Dev

如何使用Spring Boot Crudrepository将数据插入同一数据库的2个表中?

来自分类Dev

尝试使用php将数据插入MySQL表的问题

来自分类Dev

使用LINQ查询将多行插入数据库表

来自分类Dev

如何使用R将数据插入SQL Server表?

来自分类Dev

我无法使用insert all将数据插入表中

来自分类Dev

使用python循环将数据插入sql表

来自分类Dev

使用MySQL将数据插入表时出错

来自分类Dev

使用外键将XML数据插入SQL表

来自分类Dev

使用today()函数将数据插入表中

Related 相关文章

  1. 1

    使用PHP将数据插入多个表

  2. 2

    PreparedStatement:如何使用JDBC将数据插入多个表中

  3. 3

    如何使用Django Orm将数据插入多个表

  4. 4

    如何使用auto_increment主键列将多个数据插入到表中?

  5. 5

    使用一种形式将数据插入到多个表中

  6. 6

    如何使用Java在Hibernate中一次将数据插入到多个表中

  7. 7

    使用codeigniter以单一形式将多个数据插入mysql表中

  8. 8

    使用查询将数据插入临时表

  9. 9

    使用Ansible将数据插入mysql表

  10. 10

    使用表格将数据插入php表

  11. 11

    使用Java将数据插入表中

  12. 12

    使用队列将数据插入表

  13. 13

    MYSQL使用索引表将数据插入表

  14. 14

    2要求:1)用FORALL替换多个FOR循环2)在将数据插入表中时使用IF-THEN-ELSE条件

  15. 15

    使用列名参数将数据插入数据库表

  16. 16

    使用columnText将表插入多个PDF页面

  17. 17

    使用C#将多个参数值插入sqlite表

  18. 18

    使用索引将多个数组的值插入表中

  19. 19

    如何使用Spring Boot CRUD API使用一个POST端点在多个表中插入数据

  20. 20

    使用spring的jdbcTemplate和存储过程将byte []插入blob字段

  21. 21

    如何使用Spring Boot Crudrepository将数据插入同一数据库的2个表中?

  22. 22

    尝试使用php将数据插入MySQL表的问题

  23. 23

    使用LINQ查询将多行插入数据库表

  24. 24

    如何使用R将数据插入SQL Server表?

  25. 25

    我无法使用insert all将数据插入表中

  26. 26

    使用python循环将数据插入sql表

  27. 27

    使用MySQL将数据插入表时出错

  28. 28

    使用外键将XML数据插入SQL表

  29. 29

    使用today()函数将数据插入表中

热门标签

归档