介绍
介绍
在 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;
}
}