整合jdbc
1.需要导入两个启动器,一个是jdbc的启动器用于整合jdbc,一个是mysql-connector-java,用于连接数据库
<!--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>
2.在SpringBoot的application.properties中配置相关的数据源信息
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatistest?serverTimezone=CTT&useSSL=false&useUnicode=true&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
3.实验测试
@SpringBootTest
class SpringbootDataApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
//查看数据源
System.out.println(dataSource.getClass());
}
}
说明:我们可以发现SpringBoot2.3.4的底层jdbc默认的是com.zaxxer.hikari.HikariDataSource
@RestController
public class testController {
@Autowired //jdbc模板里面封装了许多方法
JdbcTemplate jdbcTemplate;
@GetMapping("/getList")
public List<Map<String,Object>> getList(){
String sql = "select * from mybatistest.user";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps;
}
@GetMapping("/addUser")
public String add(){
String sql = "insert into mybatistest.user(id,name,password) values (10,'小时','xs123456')";
//模板自动进行了事务处理
jdbcTemplate.update(sql);
return "add ok";
}
}
实验结果:
说明:JdbcTemplate中有封装了许多方法(如下图),我们就不在需要每次与数据库交换都要去getCollection等繁琐操作,就连增删改操作的事务处理,springboot已经帮我们封装好了自动完成。我们只需写上正确的sql语句,并调用相对应的方法即可完成。
部分源码:
整合Druid
Druid是阿里巴巴开发的数据库连接池,可以监控数据库访问性能,获得SQL执行日志等功能。
1.在整合jdbc的基础上导入依赖
<!--阿里Druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
2…在SpringBoot的application.properties中配置相关的数据源信息和配置Druid基本属性
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatistest?serverTimezone=CTT&useSSL=false&useUnicode=true&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource #将默认配置类型改为Druid
druid:
# 初始化连接池个数
initialSize: 5
# 最小连接池个数——》已经不再使用,配置了也没效果
min-idle: 1
# 最大连接池个数
max-active: 20
# 配置获取连接等待超时的时间,单位毫秒,缺省启用公平锁,并发效率会有所下降
max-wait: 60000
# 监控统计用的filter:stat
# 日志用的filter:log4j
# 防御sql注入的filter:wall
filters: stat,wall
# 开启监控
stat-view-servlet:
enabled: true
login-username: admin
login-password: 123456
其他配置可查看相关文档druid–github
3.测试查看当前数据源
@SpringBootTest
class SpringbootDataApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
//查看数据源
System.out.println(dataSource.getClass());
}
}
说明:配置了type后我们可以使用其他的Druid数据源com.alibaba.druid.pool.DruidDataSource
4.测试监控功能
地址栏输入http://localhost:8080/druid,可以跳转到druid监控的登录页面,这里的用户和密码是在application.yml中的spring.datasource.druid.stat-view-servlet.login-username和spring.datasource.druid.stat-view-servlet.login-password的值。此页面是阿里巴巴Druid自带写好的。
整合MyBatis
1.需要导入两个启动器,一个是jdbc的启动器用于整合jdbc,一个是mysql-connector-java,用于连接数据库。同时导入一个整合mybatis的依赖
<!--mybatis,mybatis自写的-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!--jdbc,Spring官方-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--数据库连接,Spring官方-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
mybatis-spring-boot的官方文档
2.在SpringBoot的application.properties中配置相关的数据源信息
spring.datasource.url=jdbc:mysql://localhost:3306/mybatistest?serverTimezone=CTT&useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
3.在pojo层编写实体类User
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private String password;
}
4.在Mapper层写UserMapper接口
@Mapper
@Repository
public interface UserMapper {
//查询所有用户
List<User> getUserList();
}
5.在Mapper层中编写UserMapper.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bilysen.mapper.UserMapper">
<select id="getUserList" resultType="User">
select * from mybatistest.user
</select>
</mapper>
6.在SpringBoot的application.properties中整合MyBatis配置
#整合mybatis,mybatis-application.properties
#使用别名
mybatis.type-aliases-package=com.bilysen.pojo
#配置mapper文件路径
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
7.编写Controller层并进行测试
@RestController
public class UserController {
@Autowired
UserMapper userMapper;
@GetMapping("/getList")
public List<User> getList(){
List<User> users = userMapper.getUserList();
return users;
}
}