MyBatis简介
数据层的开发就提供了大量的第三方开发框架:EJB(Entity Bean)、JDO、Hibernate、IBatis、JPA、MyBatis、...
ORMapping :翻译中文的意思就是“对象-关系映射”它的核心在于:希望可以通过对象变化来实现数据库的操作,(对象操作 = 数据库操作)而对于ORMapping开发框架最初的实现就是JDBC。
对于常见的ORMapping开发组件,有如下几个:
<!--[if !supportLists]-->1、<!--[endif]-->Hibernate(冬眠),保持了长达十年的数据层开发霸主地位,
* Hibernate设计理论来源是EJB技术,
* 开发的配置文件异常的复杂,而且异常的多。
* 提供了良好的缓存处理机制,包括一级缓存,二级缓存处理。
* 可以实现良好的数据库移植性开发;
面试题:Hibernate与MyBatis区别?
Hibernate的开发依然需要传统的JDBC那样编写数据层开发实现,而MyBatis不需要你去编写数据层,只要你有接口,自动实现数据层开发。
Hibernate适合于可移植性开发环境,MyBatis没有此项功能。
<!--[if !supportLists]-->2、<!--[endif]-->配置项目开发环境
在MyBatis里面有一个综合配置文件(mybatis.cfg.xml),相当于进行MyBatis所有核心内容的设置操作,包括:
* 缓存配置
* 数据库的连接配置(如果基于Spring管理,可以免除此配置);
* 类别名配置;
* 相关的资源文件映射配置(一张表一个资源文件)。
Mybatis.cfg.xml:关于“<dataSource type=”POOLED”>”说明,表示数据库的连接类型:
* “POOLED”:表示所有的数据库的连接使用数据库连接池进行保存,性能是最好的;
* “JNDI”:直接使用服务器上配置高的数据库的连接池来惊醒数据库连接
* “UNPOOLED”:不使用数据库连接池,每次需要都要创建新的连接池,性能很差。
关于<datasSource type=“jdbc”/>的说明:有两种事物控制;
* “jdbc”:此操作表示使用JDBC来实现数据库的事物控制,也是唯一可选的事物控制
* “MANAGER”:什么都不做,既不提交事务也不回滚事务,操作会有容器来完成。
<!--[if !supportLists]-->4、<!--[endif]-->利用MyBatis实现CRUD
所有数据表的CRUD控制都是有SqlSession接口负责完成的,
Public int insert(String statement) 直接到用配置文件中的增加操作,不传递任何参数 |
Public int insert(String statement,Object parameter) 直接调用配置文件中的增加操作,需要传递参数(都是VO类) |
Public int update(String statement) 数据修改处理 |
Public int update(String statement)数据修改处理,不传递参数 |
Public int update(String statement,Object parameter) 直接调用配置文件中的增加操作,(传递参数,都是VO类) |
Public int delete(String statement) 删除数据操作, |
Public int delete(String statement,Object parameter) 直接调用配置文件中的增加操作,(传递参数,都是VO类) |
所有数据查询处理方法都在SqlSession接口中定义了:
对于数据查询操作分为两种:
* 情况一:查询单个数据操作,这个时候数据可以以VO的形式返回;
* 情况二:查询全部数据,回返的是一组数据。
Public <E> List<E> selectList(String statement) 查询全部数据 |
Public <E> List<E> selectList(String statement,Object parameter) 查询全部数据,同时设置查询参数, |
Public <T> T selectOne(String statement) 查询全部对象 |
Public <T> T selectOne(String statement,Object parameter) 查询一个对象,同时设置参数 |
在配置文件中有两种标记区别(News.xml文件“SQL”)
* ${}:表示该值不会变为“?”解析,而直接使用它的值
* #{}:表示该值最终解析的时候会变成“?”解析。
MyBatis缓存
缓存就是提升数据的查询性能。CPU所需要的数据通过内存取得,而内存的数据可以通过磁盘加载完成。
缓存分为两种:一级缓存(单个用户、SqlSession)、二级缓存(所有用户、SqlSessionFactory)。
当你使用了缓存的话,就意味着丧失了自动数据同步的功能支持。也就是说内存中的数据与数据表中的数据不可能一致。
一级缓存:
一级缓存指得是SqlSession一级的缓存处理,并且不管用户如何处理,一级缓存永远存在。
一级缓存永远存在,意味着你如果发出了10次的查询同一个ID数据的请求,那么整个JDBC也只会查询1次数据。
* 当查询同一条数据的时候,并且是SqlSession接口对象同时发出,最终数据库里面指查询了一次请求,而第二次并没有发出,引文它发现缓存中同样的数据存在。
* 当修改了第一次查询结果中的数据之后,随后第二次查询的结果里面的内容也会发生相应的改变,但是数据库只用并没有任何的变化。
二级缓存:
二级缓存默认是没有开启的。
如果想要启动二级缓存:mybatis.cfg.xml
<settings> <!-- 在本项目之中开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
在需要使用到的文件上进行相应的配置
<cache eviction="FIFO" flushInterval="10000" readOnly="true" size="512"/> * “evication=“FIOF””表示该缓存操作使用的算法,有如下几种模式
|- LRU(默认的):将最近不使用的对象进行清空;
|- FIFO:先进先出算法:默认会自动清除追早缓存的数据对象。
|- SOFT:软引用,让内存不足时,实行GC会立刻清除;
|- WEAK:弱应用,只要发生了GC,该缓存的对象就会被清空。
* “flushInterval="10000"”:缓存的刷新时间,单位为毫秒
* “readOnly="true"”:缓存永远做只读配置,千万不要做读、写配置;
* “size="512"”:占用的内存大小,默认是1024K。
如果想真正启动缓存:需要注意两点
* 第一个session必须关闭之后才会将内容写入到二级缓存之中,如果不关闭,缓存无法写入。
* 这个时候多个SqlSession对象共享一个缓存记录。
* 如果想进行缓存的实现,那么VO类一定要实现java.io.Serializable接口
* 缓存取消标记:useCache=“false”
<!--[if !supportLists]-->3、<!--[endif]-->动态SQL
在整个myBatis配置过程之中,所有要使用到的SQL语句都必须在相应的配置文件中进行定义。
在MyBatis中考虑到了开发中可能出现的各种情况,所以专门出现了动态SQL,也就是说在配置文件里可以实现判断、循环等处理
相关推荐
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
MybatisGenerate是一个强大的工具,主要用于自动化生成Mybatis相关的代码,以提高开发效率并减少手动编写重复性工作的负担。这个工具是基于tk.mybatis框架的,它整合了Mybatis的优秀特性,使得开发者能够更加便捷地...
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、...
MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
项目名称:MyBatis-Cipher - 高效数据脱敏工具 项目简介: MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行...
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...
这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...
本篇文章将详细介绍两个针对MyBatis框架的IntelliJ IDEA插件——MyBatisCodeHelper-Pro和MybatisX,它们都是为了提升MyBatis开发体验而设计的。 首先,我们来看MyBatisCodeHelper-Pro。这款插件是专为MyBatis开发者...
MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...
MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...
MyBatis是一款强大的Java持久层框架,它将SQL与Java代码分离,使开发者可以更方便地操作数据库。这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. *...
MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
MyBatis 官方中文文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置...
"基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...