Spring Data
对于数据访问层,无论是sql 还是nosql, springboot底层都是通过springdata来进行封装的
SpringData也是和springBoot,springcloud齐名的项目
使用idea构建项目的时候可以选择springdata:
这里面封装了大量的模板,就是xxxTemplate
工具:供我们使用,里面封装了带昂的模板,
xxxTemplate:
集成jdbc
1.创建一个springboot项目: 按照上面的依赖创建
spring-boot-starter-data-jdbc:里面导入了jdbc的配置,还导入了HiKari数据源,这个是springboot默认的数据源
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.springdata</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springdata</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId> 默认是8.0.19的
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.在数据库中创建一个springboot数据库,然后创建相应的表:
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
`id` int(3) NOT NULL AUTO_INCREMENT COMMENT '部门id',
`department_name` varchar(20) NOT NULL COMMENT '部门名字',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8;
/*Data for the table `department` */
insert into `department`(`id`,`department_name`) values (101,'技术部'),(102,'销售部'),(103,'售后部'),(104,'后勤部'),(105,'运营部');
/*Table structure for table `employee` */
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`id` int(5) NOT NULL AUTO_INCREMENT COMMENT '雇员id',
`last_name` varchar(100) NOT NULL COMMENT '名字',
`email` varchar(100) NOT NULL COMMENT '邮箱',
`gender` int(2) NOT NULL COMMENT '性别1 男, 0 女',
`department` int(3) NOT NULL COMMENT '部门id',
`birth` datetime NOT NULL COMMENT '生日',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1006 DEFAULT CHARSET=utf8;
/*Data for the table `employee` */
insert into `employee`(`id`,`last_name`,`email`,`gender`,`department`,`birth`) values (1001,'张三','24736743@qq.com',1,101,'2020-03-06 15:04:33'),(1002,'李四','24736743@qq.com',1,102,'2020-03-06 15:04:36'),(1003,'王五','24736743@qq.com',0,103,'2020-03-06 15:04:37'),(1004,'赵六','24736743@qq.com',1,104,'2020-03-06 15:04:39'),(1005,'孙七','24736743@qq.com',0,105,'2020-03-06 15:04:45');
3.使用idea连接数据库:
1、选择数据源
在IDEA中新建一个Java工程后,最右侧侧边栏会有个 Database
标签,点击此标签,然后点击+
按钮
,选择Data Source
,选择MySQL
,如果是其他数据源,选择其他对应按钮即可。过程如下图所示。
2、下载驱动
如下图是下载好MySQL驱动的情况。如果是第一次进入此界面并且没有驱动,IDEA会在Driver处提示没有下载对应数据库类型的驱动,直接点击,就会自动下载,稍作等待后,结果显示为MySQL,若点击此标签,可以对MySQL的驱动文件进行进一步配置。
注意:mysql8的话需要配置时区,就是红框标注的哪些,这个区域可以手写的
3、配置账户、密码信息
如上图所示,需要填写数据库账户信息,这里我的用户名User为root,由于是本地数据库,所以Host填写为localhost,端口Port为3306,Password填写用户名对应的密码即可,Database可以填写想连接的数据库名,也可以暂时不填,待连接上后再设置。填写以上所有信息后,点击Test Connection
按钮,如果显示成功Successful,说明连接成功,点击OK
按钮,配置完成。
4、查看、修改数据库
- 连接到数据库后,在
Database
标签下,可以查看数据库结果,如下图所示,可以看到testjdbc库下有两张表,分别是emp_table 和 t_user,并且能看到表的列信息。如下图所示。
- 点击表名或者列名,就可以查看表信息,也可以修改表信息,如下图所示。
连接到MySQL数据库
1.编写配置文件:
spring:
datasource:
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
2.编写test类:
@SpringBootTest
class SpringdataApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
System.err.println(dataSource.getClass());
Connection connection = dataSource.getConnection();
System.err.println(connection);
//真实开发需要使用数据源,
connection.close();
}
}
结果
class com.zaxxer.hikari.HikariDataSource
2020-03-16 23:18:57.891 INFO 520 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2020-03-16 23:18:57.893 WARN 520 --- [ main] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2020-03-16 23:18:59.075 INFO 520 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
HikariProxyConnection@1846435308 wrapping com.mysql.cj.jdbc.ConnectionImpl@48a663e9
表明springboot默认的数据源就是Hikari
自动配置核心类
DataSourceConfiguration: 自动配置的数据源
DataSourceAutoConfiguration:自动配置类
DataSourceProperties: 配置文件绑定类
Hikari
号称当前java web速度最快的数据源,和Druid相比,效率更高一点
不同的数据源拥有不同的配置
使用JDBC操作数据库
JDBCTemplate:封装了一些常用的操作,并且会自动的提交事务
@RestController
@RequestMapping("/jdbcTest")
public class JDBCController {
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/getList")
public List<Map<String ,Object>> userList(){
String sql = "select * from employee";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps;
}