SpringData简介
对于数据访问层,无论是SQL还是NoSQL,在SpringBoot 底层都是采用SpringData来进行封装的。
官网地址:https://spring.io/projects/spring-data
使用IDEA构建项目时,我们可以勾选SpringData相关依赖。
如上图界面所示,Spring提供了很多工具供我们使用,它封装了大量的模板,在Template Engines
选项中可以勾选需要的模板引擎依赖,IDEA会自动帮我们导入。
JDBC我们选择了Spring Data JDBC,对应的依赖为spring-boot-start-data-jdbc
,它本质上和spring-boot-start-jdbc
依赖是一样的,点击依赖,我们发现它的底层使用的还是spring-boot-start-jdbc
依赖。
与此同时,可以发现SpringBoot2.x默认的数据源是HikariCP
,其maven依赖如下:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.2</version>
<scope>compile</scope>
</dependency>
我们还导入了MySQL驱动,需要注意的是MySQL驱动如果不指定版本号,默认使用8.0版本,其maven依赖如下:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
如果不想使用默认版本,加上version即可。
集成JDBC
导入数据库
1、创建springboot数据库。
CREATE DATABASE /*!32312 IF NOT EXISTS*/`springboot`
/*!40100 DEFAULT CHARACTER SET utf8 */;
2、创建员工表,插入若干数据。
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;
3、创建部门表,插入若干数据。
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;
创建项目
1、导入JDBC配置和MySQL驱动。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2、编写配置文件,注意MySQL8.0以上需要配置时区。
spring:
datasource:
username: root
password: 123456
#注意MySQL8.0以上需要配置时区
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
小技巧:如果记不清楚url,可以在IDEA的Database窗口中测试连接一下,测试成功后下方会显示完整的数据库连接地址。
3、测试连接。
@SpringBootTest
class SpringBootDataDemoApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
//查看默认数据源 class com.zaxxer.hikari.HikariDataSource
System.out.println(dataSource.getClass());
Connection connection=dataSource.getConnection();
//connection代表数据源 HikariProxyConnection@64068997 wrapping com.mysql.cj.jdbc.ConnectionImpl@2ae62bb6
System.out.println(connection);
//真实开发更多会去使用数据源
connection.close();
}
}
自动配置核心类
DataSourceCon