日志:117 评论:13
北京, 西城
【Java】JdbcTemplate学习笔记

介绍

介绍

使用

依赖

加入下面的依赖项

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
    <version>2.1.7.RELEASE</version>
</dependency>

直接调用

我们可以通过代码直接调用 JdbcTemplate

新版本的 Spring 需要把 com.mysql.jdbc.Driver 换成 com.mysql.cj.jdbc.Driver

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class JdbcController {
	
	public String Test() {
		DriverManagerDataSource dataSource = new DriverManagerDataSource();
		dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://10.16.1.101:3306/test");
		dataSource.setUsername("root");
		dataSource.setPassword("123456");
		
		JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
		String sql = "select userName from users where userId = 123";

		return jdbcTemplate.queryForObject(sql, String.class);
	}
}

配置

配置数据源

在 application.properties 设置配置项

##############################################################################
# mysql
##############################################################################

spring.mysql.url=jdbc:mysql://localhost:3306/test
spring.mysql.username=root
spring.mysql.password=123456
spring.mysql.driver-class-name=com.mysql.cj.jdbc.Driver

关闭自动配置

系统会自动载入默认数据源,建议关闭它

在 Application.java 里引入

import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

在 Application.java 的启动对象前面加上

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

建立Jdbc控制器

我们建立一个用来通过JdbcTemplate来连接mysql的控制类

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.jdbc.DataSourceBuilder;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;

@Configuration
public class JdbcConfigureController {
	
    @Bean(name = "mysqlDS")
    @Qualifier ("mysqlDS")
    @ConfigurationProperties("spring.datasource.mysql")
    public DataSource mysqlDS() {
		
        return DataSourceBuilder.create().build();
    }
	
    @Bean(name = "mysqlJT")
    public JdbcTemplate mysqlJT(
            @Qualifier ("mysqlDS")
            DataSource dataSource) {
		
        return new JdbcTemplate(dataSource);
    }
}

在启动类里注入

我们需要在启动类里注入这个控制器的JdbcTemplate

然后通过参数的方式传递给逻辑对象Test

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;

import com.example.demo.controller.JdbcConfigureController;
import com.example.demo.model.Test;

@RestController
public class TestController {
	
    @Autowired
    @Qualifier ("mysqlJT")
    JdbcTemplate jdbc;
	
    @RequestMapping("/test")
    public Test dealTest(@RequestParam(value="name", defaultValue="World") String name) {
        Test test = new Test(jdbc);
        
        return test;
    }
}

调用