使用JDBC操作数据库(JdbcTemplate)
7.1 工程文件中追加使用JDBC的依赖包:pom.xml
<!-- 导入使用JDBC访问数据库的依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MySQL依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
添加上述配置后保存,STS会自动下载对应的包文件。
7.2 配置数据源
application.properties配置MySQL数据源。
server.servlet.context-path=/gavin
server.port=9001
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://rm-wz98XXXXuo.mysql.rds.aliyuncs.com:3306/usermng?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
spring.datasource.username=gavin
spring.datasource.password=gavinpw
注意:现在有些文章中可能存在记述错误的地方。
spring.datasource.driverClassName
如果设定为:com.mysql.jdbc.Driver
,会引起编译错误,给出的提示中已经说明了修改方法,将ClassName变更为:com.mysql.cj.jdbc.Driver
。
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
全局配置文件 application.properties中spring.datasource下只配置了数据库地址、连接驱动、账号、密码,默认使用的是HikariDataSource数据源(com.zaxxer.hikari.HikariDataSource
)。
7.3 代码测试
创建一个UserController来进行相应的测试。
package com.gavinbj.confmng.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gavinbj.confmng.persistence.entity.UserInfo;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
JdbcTemplate jdbcTemplate;
/**
* TODO:此处为了方便在浏览器确认,直接使用GET插入固定数据,主要为了体现JDBC的操作方式
*/
@GetMapping("/save")
public String saveUserInfo() {
String sqlInsert = "INSERT INTO user_info (`user_id`, `user_name`, `introduce`, `mobilephone`, `email`, `birthday`, `gender`) VALUES ('gavin', '盖文', '大学教授', '13940981276', '[email protected]', '2019-10-07', '男')";
int rows = jdbcTemplate.update(sqlInsert);
return "执行成功,添加" + rows + "行";
}
@GetMapping("/{userId}")
public UserInfo getUserById(@PathVariable("userId") String userId) {
String sql = "SELECT * FROM user_info WHERE user_id = ?";
UserInfo user = jdbcTemplate.queryForObject(sql, new Object[] { userId },
new BeanPropertyRowMapper<>(UserInfo.class));
return user;
}
}
插入成功后,进行检索,检索结果如下:
{
"userId": "gavin",
"userName": "盖文",
"introduce": "大学教授",
"mobilephone": "13940981276",
"email": "[email protected]",
"birthday": "2019-10-06T16:00:00.000+0000",
"gender": "男"
}