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