DataSourceUtils.getConnection (jdbcTemplate.getDataSource ()) фиксации (). Не работает, т.е. не может совершить - PullRequest
0 голосов
/ 10 июня 2019

Я новичок в шаблоне JDBC и пытаюсь использовать подготовленный оператор для вставки данных в базу данных, используя отключенный режим автоматической фиксации для достижения высокой производительности, но в конце я не могу зафиксировать транзакцию.Пожалуйста, предложите правильный подход или ссылку, которая может решить мою проблему.

Заранее спасибо ...

SpringjdbcApplication.java

@SpringBootApplication
public class SpringjdbcApplication 
{
    public static void main(String[] args) 
    {
        ApplicationContext context  = SpringApplication.run(SpringjdbcApplication.class, args);
        SampleService service = context.getBean(SampleService.class);

        List<Batch> batchList = new ArrayList<>();
        batchList.add(new Batch("A","B"));
        batchList.add(new Batch("B","B"));
        batchList.add(new Batch("C","B"));
        batchList.add(new Batch("D","B"));
        batchList.add(new Batch("E","B"));
        System.err.println("The number of rows inserted = "+service.singleInsert(batchList));
        System.err.println("The count of batch class is = "+service.getCount());
    }

}

SampleConfiguration.java

@Configuration
public class SampleConfiguration 
{
    @Bean
    public DataSource mysqlDataSource() 
    {
        HikariConfig config= new HikariConfig();
        config.setDriverClassName("ClassName");
        config.setJdbcUrl("URL");
        config.setUsername("User");
        config.setPassword("Password");
        config.setMinimumIdle(600);
        config.setMaximumPoolSize(30);
        config.setConnectionTimeout(251);
        config.setMaxLifetime(250);
        config.setAutoCommit(false);
        return new HikariDataSource(config);
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource)
    {
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;
    }

}

Batch.java

@Entity
public class Batch implements Serializable 
{

    private static final long serialVersionUID = -5687736664713755991L;

    @Id
    @Column(name="field1")
    private String field1;

    @Column(name="field2")
    private String field2;

        ....... getter, setter and constructor
}

SampleService.java

@Service
public interface SampleService 
{
    public int singleInsert(List<Batch> batchList);
}

SampleServiceImpl.java

@Service
public class SampleServiceImpl implements SampleService 
{

    @Autowired
    JdbcTemplate jdbcTemplate;
    @Override
    public int singleInsert(List<Batch> batchList) 
    {
        for(Batch i:batchList)
        {
            jdbcTemplate.update("insert into batch values(?,?)",i.getField1(),i.getField2());
        }

        try
        {
            DataSourceUtils.getConnection(jdbcTemplate.getDataSource()).commit();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return 1;
    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...