【SpringBoot】最通俗易懂的缓存机制学习(一)及SpringBoot整合MyBatis

注:本文章基于尚硅谷Springboot高级特性相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!

首先要明白什么是缓存?

缓存是分布式系统中的重要组件,主要解决数据库数据的高并发访问问题。

缓存优势:

为了提高服务器性能,减少数据库压力,提高用户体验

对于SpringBoot缓存管理:

Spring支持透明的向应用程序中添加缓存并对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法中,从而减少操作数据的次数。同时不会对程序本身造成任何干扰。

了解了缓存的一些相关信息,接下来进行基础环境的搭建:

基础环境搭建

1.首先准备数据库,创建spring_cache的数据库并创建相关的表;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUG9KbzIwMDE=,size_20,color_FFFFFF,t_70,g_se,x_16

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);
    }

运行结果如下图所示:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUG9KbzIwMDE=,size_20,color_FFFFFF,t_70,g_se,x_16

 以上就说明数据连接成功了,能够与后台数据进行交互了;

d1609584c121b954af15e9a28003d380.png

这样基本环境的核心功能就完成了,接下来可以编写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;


    }
}

运行结果如下图所示:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUG9KbzIwMDE=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUG9KbzIwMDE=,size_20,color_FFFFFF,t_70,g_se,x_16

 至此,基本的SpringBoot数据交互以及缓存学习的基础环境就搭建好了,后面将会继续更新Springboot高级特性的学习!!!


 如果您感觉内容还不错,后面将会更新更过的优质资源噢!!!

一键三连不迷路!!!!!

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PoJo123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值