首页 > 其他分享 >MyBatis

MyBatis

时间:2022-10-02 14:33:28浏览次数:80  
标签:缓存 数据库 Redis 二级缓存 MyBatis 数据

*本人刚刚学完 MyBatis ,于是想浅显的总结一下。如有错误,麻烦各位大佬们在评论区指出,谢谢。*

最开始认识 MyBatis这个单词,是在学习MySQL的时候看到的。那个时候完全不知道这个是什么,现在略知一二的我来说说:

 

MyBatis

MyBatis 就是一个框架,什么框架呢?是一个半自动化的ORM框架 (Object Relationship Mapping) -->对象关系映射。我们原来使用JDBC操作数据库 , 有很多重复代码块 。比如 : 数据取出时的封装 , 数据库的建立连接等等... , 通过框架可以减少重复代码,提高开发效率 。 MyBatis 干嘛用呢?MyBatis 就是帮助程序猿将数据存入数据库中 , 和从数据库中取数据 。其实所有的事情,不用 MyBatis 依旧可以做到,只是用了它,所有实现会更加简单!(在B站看过狂神的人,都应该觉得这段句话很熟悉吧。)

什么是 Mybatis?

  • MyBatis 是一款优秀的持久层框架

  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程

  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。

  • MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyBatis 。

既然都说到Mybatis框架了,那必要提一下Hibernate框架啦~

Hibernate和Mybatis的区别

MyBatis的缓存

为了提高性能,用户第一次读到的数据会存到缓存中,如果想第二次获取该数据,可以从缓存中直接获取,就不需要再次跑去数据库中查询这条数据。 MyBatis提供查询缓存,用于减轻数据库压力,提高性能。MyBatis提供了一级缓存和二级缓存。

想要更好的了解什么是MyBatis的一级缓存和二级缓存可以去看看 这位大佬这位大佬,我浅显的理解就是,一级缓存是默认缓存数据库的,而二级缓存是需要开启才能缓存一级缓存的。在没有开启二级缓存的时候,需要查询数据时,首先要经过一级缓存,如果一级缓存中没有这条数据,就进入到数据库中;如果开启了二级缓存,数据的查询就首先要进入二级缓存,再到一级缓存,最后是数据库。

都说到二级缓存了,那就说说Redis、EhCache 和Memcached。因为MyBatis自带的二级缓存太菜了,不太能满足现在的缓存需求,所以就出现了这三个“男高音”来方便我们的缓存技术。

Redis和Memcached都是非关系型数据库(NoSQL)中。

Memcached和Redis的区别

  • redis: 支持比较多的数据类型(String/list/set/sortset/hash),redis支持集合计算的(set类型支持),每个key最大数据存储量为1G,redis是新兴的内存缓存技术,对各方面支持不完善,支持持久化操作。

  • memcache:老牌的内存缓存技术,对相关领域支持比较丰富,window和linux都可以使用,各种框架(tp/yii等等)都支持使用,session的信息可以非常方便的保存到该memcache中,每个key保存的数据量最大为1M,支持的数据类型比较单一,就是String类型,不支持持久化。

两者的相同之处在于把数据保存在内存中。

Ehcache 和 Redis的区别

  • Ehcache(分布式缓存)直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。

  • Redis(集中式缓存也可以分布式缓存)是通过socket访问到缓存服务,效率比ecache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。

如果是单个应用或者对缓存访问要求很高的应用,用ehcache。如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。

既然有了Redis,那就随便说说MySQL吧。

MySQL是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。

Redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限。

正是因为它们的优势不同,所以一般在搭建一个项目的时候,MyBatis是和MySQL搭配一起使用的,根据项目的大小和内容来决定是否要加入第三方jar(Redis、Ehcache和Memcache)来优化性能。

*以上只是我对MyBatis粗略的认识,如果有不对的方法,麻烦各位大佬在评论区指出,谢谢~*

*想转载的,请私信我,经本人同意后,方可转载!*

标签:缓存,数据库,Redis,二级缓存,MyBatis,数据
From: https://www.cnblogs.com/duhengerhou/p/16748726.html

相关文章

  • MyBatis
    MyBatis1、搭建MyBatis1.1环境配置与工程<dependencies><!--Mybatis核心--><dependency><groupId>org.mybatis</groupId><artifactId>my......
  • Mybatis使用注解方式插入数据后 返回自增长的主键值
    需求:插入数据时不插入主键,让主键自增,但是需要知道插入的数据主键是啥。注意:insert方法的返回值,表示成功添加的条数,和主键ID无关实现:添加注解@Options()示例@Insert(......
  • mybatis-spring的pom.xml
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • Springboot整合Redis作为Mybatis的二级缓存
    参考原文:https://juejin.cn/post/6971740313501368356一级缓存是:sqlSession,sql建立连接到关闭连接的数据缓存二级缓存是:全局的缓存准备配置启动类添加注解:@EnableC......
  • 【mybatis框架学习】三、invoke方法逻辑编排
    上一篇一直有提高一个词,编排。都说编程,编程,编排也就容易理解了。 像我们常用的框架,spring、mybatis,都是将一些固有的流程,简化,抽象,编排起来,在留有可拓展的接口之后,全部......
  • 【mybatis框架学习】一、序言
    相关内容需要基本的mybatis框架使用经验,不会过多赘述基本常识性的内容。关于mybatis的使用,概括来讲就是:配置jdbc连接信息、配置sql语句、定义mapper接口、定......
  • mybatis puls学习笔记(二)
    mapperpackagecom.ychen.mybatis.mapper;importcom.baomidou.mybatisplus.core.conditions.Wrapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom......
  • Mybatis plus代码生成器
    案例一demo为​​chenx/mybatisplus-demo​​​​参考​​​​案例​​项目初始结构数据库新建表项目配置启动CodeGenerator类中的main方式,输入表名,生成代码案例二demo为​......
  • Mybatis plus案例
    前言当表名为user时,会多生成2个实体类正常情况下生成的类测试是否可以直接在当前​​mybatis代码生成器的项目​​中开发启动项目后测试,发现当前项目只能用来生成代码即使项......
  • mybatis plus 项目模板
    前言​​案例地址​​项目搭建新建1个springboot项目,导入所需依赖点击查看详情<dependencies><dependency><groupId>org.springframework.boot</groupId>......