`

MyBatis

阅读更多

MyBatis简介

数据层的开发就提供了大量的第三方开发框架:EJB(Entity Bean)、JDO、Hibernate、IBatis、JPA、MyBatis、...

ORMapping 翻译中文的意思就是“对象-关系映射”它的核心在于:希望可以通过对象变化来实现数据库的操作,(对象操作 = 数据库操作)而对于ORMapping开发框架最初的实现就是JDBC

对于常见的ORMapping开发组件,有如下几个:

<!--[if !supportLists]-->1、<!--[endif]-->Hibernate(冬眠),保持了长达十年的数据层开发霸主地位,

* Hibernate设计理论来源是EJB技术,

* 开发的配置文件异常的复杂,而且异常的多。

* 提供了良好的缓存处理机制,包括一级缓存,二级缓存处理。

* 可以实现良好的数据库移植性开发;

面试题:HibernateMyBatis区别?

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框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    MybatisGenerate_代码生成_tkMybatis_mybatisgenerate_mybatis_

    MybatisGenerate是一个强大的工具,主要用于自动化生成Mybatis相关的代码,以提高开发效率并减少手动编写重复性工作的负担。这个工具是基于tk.mybatis框架的,它整合了Mybatis的优秀特性,使得开发者能够更加便捷地...

    mybatis的中文api文档

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...

    mybatis3.5.7.zip

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...

    mybatis-3-mybatis-3.2.6

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、...

    mybatis中文离线文档

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...

    高效数据脱敏工具 - MyBatis-Cipher,基于MyBatis的数据库敏感信息加密解密方案

    项目名称:MyBatis-Cipher - 高效数据脱敏工具 项目简介: MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行...

    【狂神说】mybatis学习总结笔记(全)PDF格式文档 MyBatis.pdf

    MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...

    mybatisx.zip

    这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    MyBatis-Plus入门+MyBatis-Plus文档手册 中文pdf高清版.rar

    mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...

    IDEA的MyBatis插件两个

    本篇文章将详细介绍两个针对MyBatis框架的IntelliJ IDEA插件——MyBatisCodeHelper-Pro和MybatisX,它们都是为了提升MyBatis开发体验而设计的。 首先,我们来看MyBatisCodeHelper-Pro。这款插件是专为MyBatis开发者...

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...

    MyBatis3官方中文文档

    MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...

    MyBatis入门到精通

    MyBatis是一款强大的Java持久层框架,它将SQL与Java代码分离,使开发者可以更方便地操作数据库。这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. *...

    MyBatis入门.pdf

    MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...

    MyBatis-3.4.6.zip

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    MyBatis-Plus 的官方示例(mybatis-plus-samples-master.zip)

    本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...

    基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密

    "基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...

Global site tag (gtag.js) - Google Analytics