SpringBoot整合JdbcTemplate
参考文章
主要内容
- JdbcTemplate其实就是用来操作数据库的,是最基本的Spring JDBC模板,是对JDBC很轻的封装,具有较高的执行效率(基于jdbc的数据操作要比hibernate那些效率都高,尤其批量处理),一般用于系统数据库并发操作压力大的项目中。
- Spring数据访问模板:在数据库操作过程中,有很多重复工作,如事务控制、资源管理和异常处理等,Spring的模板类封装了这些固定部分。
- 主要包含以下四类方法:
- execute():执行任何sql语句,一般用于执行ddl语句。
- update()、batchUpdate():执行(批量执行新增、修改、删除语句。
- query()、queryForXxx():执行查询语句。
- call():执行存储过程、函数等语句;当然,前面的三种方法其sql语句都可以带函数。
- 参考文章
首先操作数据库需要添加以下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
在application.properties中配置数据源
spring.datasource.url = jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8 spring.datasource.username = root spring.datasource.password = root spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring-boot-starter-jdbc默认使用tomcat-jdbc数据源,推荐使用其他数据源尤其是阿里巴巴的数据池管理,请额外添加以下依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.19</version> </dependency>
- 连接池详情参见笔记:连接池
- 然后在Application.java配置DataSource,这里介绍两种方式
第一种:application.properties只配置jdbc驱动,数据池配置则全写在入口类
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } //Environment这个类是用来加载application.properties文件中的属性的 @Autowired private Environment env; //destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用. @Bean(destroyMethod = "close") public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(env.getProperty("spring.datasource.url")); //引用配置文件的变量 dataSource.setUsername(env.getProperty("spring.datasource.username"));//用户名 dataSource.setPassword(env.getProperty("spring.datasource.password"));//密码 dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); dataSource.setInitialSize(2);//初始化时建立物理连接的个数 dataSource.setMaxActive(20);//最大连接池数量 dataSource.setMinIdle(0);//最小连接池数量 dataSource.setMaxWait(60000);//获取连接时最大等待时间,单位毫秒。 dataSource.setValidationQuery("SELECT 1");//用来检测连接是否有效的sql dataSource.setTestOnBorrow(false);//申请连接时执行validationQuery检测连接是否有效 dataSource.setTestWhileIdle(true);//建议配置为true,不影响性能,并且保证安全性。 dataSource.setPoolPreparedStatements(false);//是否缓存preparedStatement,也就是PSCache return dataSource; } }
第二种:在application.properties中写全部配置,在入口类用@Configu