JdbcTemplate的入门及配置

首先我们来介绍一下什么是jdbcTemplate,从名字上就能看出,就是jdbc的模版类,实际上本质上就是用java实现一个jdbc连接,只是因为这个是由Spring进行封装的,所以他们取名为jdbcTemplate,于是可以简单理解为,spring帮我们封装了jdbc,我们只需要配置,就可以直接进行使用。

这里说一句题外话,spring是目前java项目中,使用最广的技术。作为一名普通的java开发,我们总是希望能了解最底层,最基础的技术,但是如果你将身份换到老板或者架构师,他们最大的希望是能够迅速进行开发,避免重复性的工作量,以最低的成本去实现最大的效率。所以市面上现在流行或者曾经流行过的技术,其本质都是封装,封装重复性的代码,尽量让开发者把关注点放到业务逻辑上。spring的流行,就是因为他封装的太好,并且还时刻在更新,就比如我们今天介绍的jdbcTemplate。

首先我们来介绍java提供的连接jdbc的方式,这也是最基础的方式,希望我们在享受spring带来遍历的同时,也要有时间去务实基础,这样我们才能越来越优秀。

// 获取连接
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD)// 获取queryRunner对象
QueryRunner qr = new QueryRunner();
// 准备hander : beanHander或beanListHander
BeanListHandler<People> beanList = new BeanListHandler<>(People.class);
// 准备SQL
String sql = "select * from table";
//执行sql
List<Product> list = qr.query(conn, sql, beanList);
for(Product product : list) {
	System.out.println(product);
}
//依次关闭连接
conn.close();

每次和数据库的建立连接都会消耗很多的资源,所以我们需要一种机制,放置很多连接,如果需要我们就去取一个连接,不用了就把连接放回去,这个就是所谓的池机制,比如常用的线程池,http连接池,,数据库的就叫数据库连接池。目前我知道的连接池有c3p0连接池,dbcp连接池,Druid连接池(由阿里巴巴提供的,据我了解是目前算除了spring外应用比较广的)。这里我们就不展开说了。

接下来到重点了,我们如何配置并使用Spring提供的jdbcTemplate呢


先介绍一种最标准的写法,不管是多数据源或者单数据源时,都可以使用


pom依赖

<!-- MySQL连接 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
<!-- jdbcTemplate -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.1.2.RELEASE</version>
</dependency>

配置文件:application.properties中进行相关配置,我们先配两个不同的数据源

#常用数据库配置
spring.datasource.primary.url=jdbc:mysql://localhost:3306/test01
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
#非常用数据库的配置
spring.datasource.second.url=jdbc:mysql://localhost:3306/test02
spring.datasource.second.username=root
spring.datasource.second.password=root
spring.datasource.second.driver-class-name=com.mysql.jdbc.Driver

代码中进行配置
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

// 表明这是一个配置文件,需要在启动时优先加载
@Configuration
public class JdbcContext {

    /**
     * 常用数据库配置
     */
    @Bean(name = "primaryDataSource") // bean的名称,可以在注入的时候进行匹配
    @ConfigurationProperties(prefix = "spring.datasource.primary") // 配置文件的前缀,会去主动读取此前缀开头配置的数据
    public DataSource primaryDataSource() {
        // 这样我们就已经能读取常用数据库的配置了
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource primaryDataSource) {
        // 这里使用@Qualifier的作用是为了指定注入那个dataSource,其实如果dataSource和jdbc在同一个类里的话,直接调用方法也行
        // return new JdbcTemplate(primaryDataSource());
        return new JdbcTemplate(primaryDataSource);
    }

    /**
     * 非常用数据库配置
     */
    @Bean(name = "secondDataSource") // bean的名称,可以在注入的时候进行匹配
    @ConfigurationProperties(prefix = "spring.datasource.secoinnd") // 配置文件的前缀,会去主动读取此前缀开头配置的数据
    public DataSource secondDataSource() {
        // 这样我们就已经能读取非常用数据库的配置了
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondJdbcTemplate")
    public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDataSource") DataSource secondDataSource) {
        return new JdbcTemplate(secondDataSource);
    }

}

使用
@Qualifier("primaryJdbcTemplate") // bean的名称
private JdbcTemplate primaryJdbcTemplate;

@Qualifier("secondJdbcTemplate")
private JdbcTemplate secondJdbcTemplate;

// 接下来jdbcTemplate就会进行自动注入了,然后我们直接拿对象操作就行了




接下里给大家介绍一个稍微高级一点的写法,每次注入的时候,我们都需要进行@Qualifier指定名称,很麻烦,所以我们可以使用@Primary注解,此注解的意思是可以在@Autowired根据类型注入时,默认使用哪个类型注入,就不用@Qualifier专门进行指定了,但是要注意,同一个类型,只能有一个primary。有时间了我会专门写一篇博客给大家分享一下这个。


好了,今天太晚了,明天我再给大家分享jdbcTemplate如何使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值