22.0、springboot-回顾整合JDBC的使用
简介:
对于数据库访问层,无论是SQL(关系型数据库)还是NOSQL(非关系型数据库),SpringBoot底层都是采用Spring Data的方式进行统一处理。
首先要在pom.xml中引入JDBC和MySQL的两个依赖:
<!--JDBC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--MySQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
创建一个application.yaml文件中配置如下内容:
spring:
datasource:
username: root
password: root
# 如果这里时区报错在数据库名?后加上serverTimezone=UTC即可解决
url: jdbc:mysql://localhost:3306/jdbcmysql?useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
我们可以在测试类中用DataSource接口中的getClass()去可以查看到默认的数据源是hikari,这个数据源目前相比较其他来说是最快的
在springboot中我们可以看到有大量的xxxtemplate这些都是springboot已经帮我们装配好的模板bean,拿来即用
在springboot-autoconfiguration中可以找到一个jdbc的文件夹下有一个叫做JdbcTemplateAutoConfiguration点进去可以看到有一个被@Bean注释的类叫做JdbcTemplate我们可以直接使用。
接下来我们用JdbcTemplate来回顾一下如何操作数据库:创建一个MySqlController.java
package com.hkl.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
public class MySqlController {
@Autowired
private JdbcTemplate jdbcTemplate;
@RequestMapping("/selectall")
public List<Map<String,Object>> selectall() {
String sql = "select * from user";
List<Map<String,Object>> listobject = jdbcTemplate.queryForList(sql);
return listobject;
}
@RequestMapping("/addone")
public String add() {
String sql = "insert into user(username,user,password) values('小澜','1303','13421356')";
jdbcTemplate.update(sql);
return "add-OK";
}
@RequestMapping("/modifyuser/{user}")
public String modify(@PathVariable("user")String user){
String sql = "update jdbcmysql.user set username=?,password=? where user="+user;
//数据封装
Object o[] = new Object[2];
o[0] = "123132132";
o[1] = "zzzzzzz";
jdbcTemplate.update(sql,o);
return "modify-OK";
}
@RequestMapping("/delete/{user}")
public String delete(@PathVariable("user")String user) {
String sql = "delete from user where user="+user;
jdbcTemplate.update(sql);
return "delete-OK";
}
}
以上操作完全没有用到Dao层Service层只用到了Controller层来对数据库进行操作。