原文地址:http://blog.csdn.net/liuziyingbeidou/article/details/53561792
此处主要针对execute和batchUpdate中部分内容说明。
针对大数据量的插入推荐使用批量插入以便提高性能,经过实战说明JdbcTemplate批量插入效率高于循环单条插入。
JdbcTemplate继承JdbcAccessor类与JdbcOperations接口;其中JdbcAccessor类设置数据源,JdbcOperations定义方法JdbcTemplate来实现。
1. JdbcTemplate主要提供以下五类方法:
-
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
-
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
-
query方法及queryForXXX方法:用于执行查询相关语句;
-
call方法:用于执行存储过程、函数相关语句。
2. maven中添加相应模块
<!--mysql 驱动-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!--支持jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
#mysql数据源
spring.datasource.url=jdbc:mysql://192.168.*.*:3306/venus_spb?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=****
spring.datasource.password=*****
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
4. Service类中注入JdbcTemplate实例
@Service
public class UserServiceImpl implements UserService {
//JdbcTemplate注入实例
@Resource
private JdbcTemplate jdbcTemplate;
}
5. 实例说明
5.1 查询返回实体List
@Override
public List<UserDto> queryUsers() {
RowMapper<UserDto> rm = BeanPropertyRowMapper.newInstance(UserDto.class);
List<UserDto> userList = jdbcTemplate.query("select * from vns_user",rm);
//userList = jdbcTemplate.queryForList("select * from vns_user",UserDto.class);
return userList;
}
特别说明:使用queryForList查询出现异常,是因为UserDto.class自动编入一列导致与实际列数不符
{
"timestamp": 1481377345590,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.jdbc.IncorrectResultSetColumnCountException",
"message": "Incorrect column count: expected 1, actual 4",
"path": "/venus/user/getUserList"
}
5.2 批量插入
方法1:
@Override
@Transactional
public Integer batchInsertUsers(List<UserDto> listUser) {
String sql = "insert vns_user(u_code,u_name,u_age) values(?,?,?)";
jdbcTemplate.batchUpdate(sql,new BatchPreparedStatementSetter()
{
public void setValues(PreparedStatement ps, int i)throws SQLException
{
String code = listUser.get(i).getuCode();
String name=listUser.get(i).getuName();
int age=listUser.get(i).getuAge();
ps.setString(1,code);
ps.setString(2, name);
ps.setInt(3, age);
}
public int getBatchSize()
{
return listUser.size();
}
});
return 0;
}
方法2:
@Override
@Transactional
public Integer batchInsertUsers(List<UserDto> listUser) {
String sql = "insert vns_user(u_code,u_name,u_age) values(?,?,?)";
jdbcTemplate.batchUpdate(sql,setParameters(listUser));
return 0;
}
/**
* 设置参预置数
* @param listUser
* @return
*/
private List<Object[]> setParameters(List<UserDto> listUser){
List<Object[]> parameters = new ArrayList<Object[]>();
for (UserDto u : listUser) {
parameters.add(new Object[] { u.getuCode(),u.getuName(),u.getuAge()});
}
return parameters;
}
相关推荐
简单介绍如何使用Spring Boot使用JdbcTemplate与MySQL进行数据库操作
Spring boot,事物,拦截器,servlet 自动装配,数据源
配制Spring事务和JdbcTemplate使用 配制Spring事务和JdbcTemplate使用
使用Spring的JdbcTemplate调用Oracle的存储过程
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物。本文重点给大家介绍spring boot 使用JdbcTemplate访问数据库,需要的朋友可以参考下
1.6 Spring Boot使用别的json解析框架 1.7 全局异常捕捉 1.8 Spring Boot datasource - mysql 1.9 JPA - Hibernate 1.10 使用JPA保存数据 1.11 使用JdbcTemplate 1.12 Spring Boot修改端口号 1.13 Spring Boot配置...
Spring Boot中的JdbcTemplate与MySQL集成
8. Spring boot 使用 JdbcTemplate 保存数据 9. Spring boot 常用配置 10. Spring boot 静态资源处理 11. Srping boot 实现任务调度 12. Spring boot 普通类调用 Bean 13. spring boot 使用模板引擎 14. Spring...
主要给大家介绍了如何通过5分钟快速学会spring boot整合JdbcTemplate的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot整合JdbcTemplate具有一定的参考学习价值,需要的朋友们下面来一起...
https://blog.csdn.net/u012081441/article/details/80746538
JdbcTemplate 是在JDBC API基础上提供了更抽象的封装,并提供了基于方法注解的事务管理... 通过使用SpringBoot自动配置功能并代替我们自动配置beans,下面给大家介绍spring boot中使用JdbcTemplate相关知识,一起看看吧
--演示了如何在Spring Boot里面使用日志配置,以及logback,log4j2等日志的使用 23 Spring Boot 监控和度量47:09 --Spring Boot内置的监控点、自定义的监控状况检查、自定义度量统计,输出等等 24 Spring Boot ...
本文介绍在Spring Boot基础下配置数据源和通过 JdbcTemplate 编写数据访问的示例。感兴趣的朋友跟随脚本之家小编一起学习吧
本篇文章主要介绍了Spring Boot中使用jdbctemplate 操作MYSQL数据库实例,具有一定的参考价值,有兴趣的可以了解一下。
- chapter9-2-1:[Spring Boot中使用Dubbo进行服务治理] - chapter9-2-2:[Spring Boot与Dubbo中管理服务依赖] ### Spring Cloud构建微服务架构 由于Spring Cloud偏宏观架构,Spring Boot偏微观细节,内容上越来越...
一套完成的使用Idea开发环境,采用springboot、jdbcTemplate实现的mysql读取webService完成程序。其中,封装了数据读、写、删除的各种操作;访问webservice时,需要使用token认证。 一套很实用、很难得的的基于java...
│ 03 多维配置:如何使用 Spring Boot 中的配置体系?.mp4 │ 05 自动配置:如何正确理解 Spring Boot 自动配置实现原理?.mp4 │ 06 基础规范:如何理解 JDBC 关系型数据库访问规范?.mp4 │ 07 数据访问:...
spring boot + JdbcTemplate 使用druid数据源
Spring Boot中使用JdbcTemplate Spring Boot MyBatis配置Druid多数据源 Spring Boot JdbcTemplate配置Druid多数据源 Spring Boot AOP记录用户操作日志 Spring Boot中使用thymeleaf Spring Boot中使用Redis缓存数据 ...