注:本文章基于尚硅谷Springboot高级特性相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!
首先要明白什么是缓存?
缓存是分布式系统中的重要组件,主要解决数据库数据的高并发访问问题。
缓存优势:
为了提高服务器性能,减少数据库压力,提高用户体验
对于SpringBoot缓存管理:
Spring支持透明的向应用程序中添加缓存并对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法中,从而减少操作数据的次数。同时不会对程序本身造成任何干扰。
了解了缓存的一些相关信息,接下来进行基础环境的搭建:
基础环境搭建
1.首先准备数据库,创建spring_cache的数据库并创建相关的表;
2.创建Springboot项目,引入相关的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 加入数据库相关依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
因为是web项目,所以需要引入web的启动依赖,其次是mysql数据库的连接依赖和数据库操作工具mybatis。
3.创建Bean类
首先是Department类:
//getter/setter,构造器方法省略,后面可以原生代码生成或者lombok注解
public class Department {
private Integer id;
private String departmentName;
}
然后是Employee类:
public class Employee {
private Integer id;
private String lastname;
private String email;
private Integer gender; //性别 1男 0女
private Integer dId;
}
4.编写mapper层:
mapper层注意要使用@Mapper注解,将其加入容器中,并表明其为一个映射接口;如果感觉每一个mapper文件都需要加一个@Mapper注解麻烦的话,可以在启动类中加入@MapperScan注解扫描指定的mapper文件。
EmployeeMapper:
@Mapper
public interface EmployeeMapper {
// 根据id查询员工信息
@Select("SELECT * FROM employee WHERE id =#{id}")
public Employee getEmpbyId(Integer id);
// 修改员工信息
@Update("UPDATE employee SET lastname=#{lastname},gender=#{gender},d_id=#{dId} WHERE id=#{id}")
public void updateEmp(Employee employee);
// 删除员工信息
@Delete("DELETE FROM employee WHERE id =#{id}")
public void deleteEmpById(Integer id);
// 插入员工信息
@Insert("INSERT INTO employee(lastname,email,gender,d_id) VALUES(#{lastname},#{email},#{gender},#{dId})")
public void insertEmployee(Employee employee);
}
DepartmentMapper 文件和EmployeeMapper文件类似,我们后面测试只用到EmployeeMapper,所以这里只对它进行展示;
5.在配置文件中对数据源进行配置:
spring.datasource.url=jdbc:mysql://localhost:3306/spring_cache?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyD
atetimeCode=false&serverTimezone=GMT%2B8
//这里对数据库的驱动进行配置,适用于mysql5以上的版本,低版本驱动要换一个
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=#{你数据库的用户名}
spring.datasource.password=a#{你数据库的密码}
#开启驼峰命名法
mybatis.configuration.map-underscore-to-camel-case=true
这里特别要注意的是一定要开启驼峰命名法,因为数据库的表中含有下划线字段,从后台进行数据查询时,含有下划线的字段要转换为无符号字段,所以这里要开启驼峰命名,与Bean类中的字段进行对应,
6.以上配置都完成以后,就可以编写测试类进行测试了,看能否与后台数据库进行交互;
@Test
void contextLoads() {
Employee empbyId = employeeMapper.getEmpbyId(1);
System.out.println(empbyId);
}
运行结果如下图所示:
以上就说明数据连接成功了,能够与后台数据进行交互了;
这样基本环境的核心功能就完成了,接下来可以编写Service和Controller的相关功能,使环境更加完善;
7.功能完善:
编写服务层:
增加一个输出语句,当调用此业务层时,就会在控制台上输出相关信息
@Service
public class EmployeeService {
@Autowired
EmployeeMapper employeeMapper;
public Employee getEmp(Integer id){
System.out.println("现在开始查询"+id+"号员工信息");
Employee emp = employeeMapper.getEmpbyId(id);
return emp;
}
}
编写Controller层:
当使用Get请求访问指定路径时,就会将id值传到getEmployee方法中,然后调用Service层中的方法,进行查询;
@RestController
public class EmployeeController {
@Autowired
EmployeeService employeeService;
@GetMapping("/emp/{id}")
public Employee getEmployee(@PathVariable("id") Integer id){
Employee emp = employeeService.getEmp(id);
return emp;
}
}
运行结果如下图所示:
至此,基本的SpringBoot数据交互以及缓存学习的基础环境就搭建好了,后面将会继续更新Springboot高级特性的学习!!!
如果您感觉内容还不错,后面将会更新更过的优质资源噢!!!
一键三连不迷路!!!!!