SpringBoot数据访问——整合JDBC
1.导入依赖
pom.xml文件导入MySQL驱动和官方提供的jdbc启动器的依赖
<!-- jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MySQL 驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
2.配置数据源
在application.proterties或者新建一个application.yml配置文件,配置MySQL数据源:
默认的application.proterties
#mysql数据源配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://*.*.*.*:3306/数据库名称
spring.datasource.username=账号
spring.datasource.password=密码
yml格式:
#配置数据源
spring:
datasource:
username: 账号
password: 密码
url: jdbc:mysql://*.*.*.*:3306/数据库名称
driver-class-name: com.mysql.jdbc.Driver
3.测试数据连接
test包下的测试类编写相关代码,测试该数据连接:
测试默认情况下的数据源与连接
@SpringBootTest
class SpringbootJdbcApplicationTests {
//自动注入数据源
@Autowired
DataSource dataSource;
@Test
void contextLoads() {
System.out.println(dataSource.getClass());//输出默认数据源
Connection connection = null;
try {
connection = dataSource.getConnection();
System.out.println(connection);//输出该连接
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
测试结果:
默认以com.zaxxer.hikari.HikariDataSource连接池作为数据源
class com.zaxxer.hikari.HikariDataSource
连接的输出结果:
HikariProxyConnection@1730595945 wrapping com.mysql.jdbc.JDBC4Connection@4b6d92e
4.编写操作数据的相关代码
建立controller包,包下建立一个JdbcController类:写一个查询所有单词的控制器,数据已提前准备好。
以一个简单的查询操作为例子:
/**
* Springboot数据访问——整合基本JDBC
*/
@Controller
public class JdbcController {
@Autowired
JdbcTemplate jdbcTemplate;
//存储预返回页面的结果对象
private Map<String, Object> result;
@ResponseBody
@GetMapping("/findAllWord")
public Map<String, Object> findAllWord() {
result = new HashMap<>();
List<Map<String, Object>> mapList= jdbcTemplate.queryForList("SELECT ENGLISH,CHINESE FROM word");
result.put("data",mapList);
return result;
}
}
其中JdbcTemplate类是Spring框架对数据库的操作在jdbc上面做了深层次的封装。
主要方法有:
- execute方法:可以用于执行任何SQL语句,一般用于执行数据定义语言(DDL)语句;
- update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
- query方法及queryForXXX方法:用于执行查询相关语句;比如上述代码中的queryForList()方法
- call方法:用于执行存储过程、函数相关语句。
5. 测试接口
使用postman测试localhost:8080/findAllWord 请求方式GET 参数无