同福

JdbcTemplate学习笔记

介绍

介绍

在 Java 里用 JdbcTemplate 对象来操作 MySQL 数据库

使用

依赖

加入下面的依赖项

<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

@RequestMapping("/jdbc")
public String responseJdbc() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost: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
##############################################################################

sql.mysql.jdbc-url=jdbc:mysql://localhost:3306/test
sql.mysql.username=root
sql.mysql.password=123456
sql.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的控制类

@Configuration
public class JdbcConfigureController {

    @Bean(name = "mysqlDS")
    @Qualifier("mysqlDS")
    @ConfigurationProperties("nosql.mysql")
    public DataSource mysqlDS() {

        return DataSourceBuilder.create().build();
    }

    @Bean(name = "mysqlJT")
    public JdbcTemplate mysqlJT(
            @Qualifier ("mysqlDS") DataSource dataSource
    ) {

        return new JdbcTemplate(dataSource);
    }
}

直接调用

我们需要在控制器类里注入JdbcTemplate

然后就可以直接调用了

@RestController
public class TestController {

    @Autowired
    @Qualifier("mysqlJT")
    JdbcTemplate mysqlJT;

    @RequestMapping("/test")
    public String responseTest() {
        String test = mysqlJT.queryForObject("select userName from users where userId = 123", String.class);

        return test;
    }
}

传递调用

我们需要在控制器类里注入JdbcTemplate

@RestController
public class TestController {

    @Autowired
    @Qualifier("mysqlJT")
    JdbcTemplate mysqlJT;

    @RequestMapping("/test")
    public Test responseTest() {
        Test test = new Test(mysqlJT);

        return test;
    }
}

然后就可以在 Test 里调用了

public class Test {
    JdbcTemplate mysqlJT;

    private String content;

    public Test(JdbcTemplate uMysqlJT) {
        mysqlJT = uMysqlJT;
        this.content = mysqlJT.queryForObject("select userName from users where userId = 123", String.class);
    }

    public String getContent() {
        return content;
    }
}