MyBatis.pptx

上传人:b****1 文档编号:1382751 上传时间:2022-10-21 格式:PPTX 页数:189 大小:11.69MB
下载 相关 举报
MyBatis.pptx_第1页
第1页 / 共189页
MyBatis.pptx_第2页
第2页 / 共189页
MyBatis.pptx_第3页
第3页 / 共189页
MyBatis.pptx_第4页
第4页 / 共189页
MyBatis.pptx_第5页
第5页 / 共189页
点击查看更多>>
下载资源
资源描述

MyBatis.pptx

《MyBatis.pptx》由会员分享,可在线阅读,更多相关《MyBatis.pptx(189页珍藏版)》请在冰豆网上搜索。

MyBatis.pptx

内容概要,一、MyBatis简介,二、MyBatis-HelloWorld三、MyBatis-全局配置文件与核心API四、MyBatis-映射文件五、MyBatis-动态SQL六、MyBatis-缓存机制七、MyBatis-Spring整合八、MyBatis-逆向工程九、MyBatis-工作原理十、MyBatis-插件开发,1.Mybatis简介,持久层,所谓“持久层”,是指在系统逻辑层面上,专注于实现数据持久化的一个相对独立的领域(Domain)一个完善的持久化层应该能达到以下目标:

代码的可重用性高,能完成所有数据库的访问操作可以支持多种数据库平台具有相对独立性,当持久层的实现发生变化时,不影响上层的实现,持久化,狭义的理解,“持久化”指将域对象永久保存至数据库中广义的理解,“持久化”包括与数据库相关的各种操作保存:

将域对象永久保存至数据库中更新:

更新数据库中域对象的状态删除:

从数据库中删除一个域对象加载:

根据特定的OID,将一个域对象从数据库加载至内存查询:

根据特定的查询条件,将符合查询条件的一个或多个域对象从数据库加载至内存,JDBC实现查询分析我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤:

加载JDBC驱动建立并获取数据库连接创建JDBCStatements对象设置SQL语句的传入参数执行SQL语句并获得查询结果对查询结果进行转换处理并将处理结果返回释放相关资源(关闭Connection,关闭Statement,关闭ResultSet),1,从JDBC到MyBatis,第一步优化:

连接获取和释放数据库连接的获取和关闭我们可以使用数据库连接池来解决资源浪费的问题。

通过连接池就可以反复利用已经建立的连接去访问数据库了。

减少连接的开启和关闭的时间。

可以通过DataSource进行隔离解耦,我们统一从DataSource里面获取数据库连接,DataSource具体由DBCP实现还是由容器的JNDI实现都可以,所以我们将DataSource的具体实现通过让用户配置来应对变化。

1,从JDBC到MyBatis,第二步优化:

SQL统一存取我们使用JDBC进行操作数据库时,SQL语句基本都散落在各个JAVA类中,这样有三个不足之处:

可读性很差,不利于维护以及做性能调优改动Java代码需要重新编译、打包部署不利于取出SQL在数据库客户端执行(取出后还得删掉中间的Java代码,编写好的SQL语句写好后还得通过号在Java进行拼凑)可以将这些SQL语句统一集中放到配置文件或者数据库里面(以key-value的格式存放)。

然后通过SQL语句的key值去获取对应的SQL语句。

既然我们将SQL语句都统一放在配置文件或者数据库中,那么这里就涉及一个SQL语句的加载问题。

1,从JDBC到MyBatis,第三步优化:

传入参数映射和动态SQLkey-value的Map,解析的时候根据变量名的具体值来判断JSTL中的标签SQL解析器,1,从JDBC到MyBatis,第四步优化:

结果映射和结果缓存需要返回什么类型的对象。

需要返回的对象的数据结构怎么跟执行的结果映射,这样才能将具体的值赋值到对应的数据结构上进而考虑对SQL执行结果的缓存来提升性能,1,从JDBC到MyBatis,第五步优化:

解决重复SQL语句问题SQL抽象SQL引用,1,从JDBC到MyBatis,MyBatis是支持定制化SQL、存储过程以及高级,映射的优秀的持久层框架。

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

MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录.,什么是MyBatis,MyBatis历史,原是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode,随着开发团队转投GoogleCode旗下,iBatis3.x正式更名为MyBatis,代码于2013年11月迁移到Github(下载地址见后)。

iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。

iBatis提供的持久层框架包括SQLMaps和DataAccessObjects(DAO),为什么要使用MyBatis?

MyBatis是一个半自动化的持久化层框架。

JDBC,SQL夹在Java代码块里,耦合度高导致硬编码内伤,维护不易且实际开发需求中sql是有变化,频繁修改的情况多见,Hibernate和JPA,长难复杂SQL,对于Hibernate而言处理也不容易(需要学习HQL)内部自动生产的SQL,不容易做特殊优化(学了HQL优化效果也不见得好,而且学习成本很高)。

基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。

导致数据库性能下降。

(想部分映射还需要HQL),对开发人员而言,核心sql还是需要自己优化,sql和java编码分开,功能边界清晰,一个专注业务、,一个专注数据。

MyBatis的优势,支持ORM支持动态SQL外部化SQL语句封装SQL语句,去哪里找MyBatis?

https:

/,Mybatis目录结构,下载得到Mybatis压缩包之后解压:

依赖的第三方jar包(非必须),核心jar包,官方文档,二、MyBatis-HelloWorld,HelloWorld操作步骤,1.新建Java工程,导入Mybatis的jar包和log4j的jar包,拷贝log4j配置文件到工程类路径根路径下。

2.新建数据表和对应的实体类。

3.创建Mybatis全局配置文件和SQL映射文件,根据实体类完成SQL映射文件的书写,然后将映射文件注册到全局配置文件中。

4.编写并测试代码,观察控制台输出的结果。

创建测试表,工程结构,创建实体类,MyBatis操作数据库,1、创建MyBatis全局配置文件,MyBatis的全局配置文件包含了影响MyBatis行为甚深的设置(settings)和属性(properties)信息、如数据库连接池信息等。

指导着MyBatis进行工作。

我们可以参照官方文件的配置示例。

MyBatis操作数据库,2、创建SQL映射文件,映射文件的作用就相当于是定义Dao接口的实现类如何工作。

这也是我们使用MyBatis时编写的最多的文件。

测试,1、根据全局配置文件,利用,SqlSessionFactoryBuilder创建SqlSessionFactory,2、使用SqlSessionFactory获取sqlSession对象。

一个,SqlSession对象代表和数据库的一次会话。

使用SqlSession根据方法id进行操作,HelloWorld-接口式编程,创建一个Dao接口修改Mapper文件测试,使用SqlSession获取映射器进行操作,HelloWorld操作步骤总结,1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象,有数据源和一些运行环境信息。

2、sql映射文件;配置了每一个sql,以及sql的封装规则等。

3、将sql映射文件注册在全局配置文件中4、写代码:

1)、根据全局配置文件得到SqlSessionFactory;2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查,一个sqlSession就是代表和数据库的一次会话,用完关闭3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。

sql都是保存在sql映射文件中的。

三、MyBatis-全局配置文件与核心API,MyBatis核心对象,每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。

SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得。

SqlSessionFactoryBuilder对象可以从XML配置文件,或从Configuration类的习惯准备的实例中构建SqlSessionFactory对象。

MyBatis核心对象,有了SqlSessionFactory对象,就可以获得SqlSession的实例了。

SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法。

你可以用SqlSession实例来直接执行已映射的SQL语句。

理解MyBatis核心对象的不同范围和生命周期是很重要的。

不正确的使用它们会导致严重的并发问题。

MyBatis核心对象,SqlSessionFactoryBuilder这个类可以被实例化,使用和丢弃。

一旦你创建了SqlSessionFactory后,这个类就不需要存在了。

因此SqlSessionFactoryBuilder实例的最佳范围是方法范围(也就是本地方法变量)。

你可以重用SqlSessionFactoryBuilder来创建多个SqlSessionFactory实例。

SqlSessionFactory一旦被创建,SqlSessionFactory应该在你的应用执行期间都存在。

没有理由来处理或重新创建它。

使用SqlSessionFactory的最佳实践是在应用运行期间不要重复创建多次。

这样的操作将被视为是非常糟糕的。

因此SqlSessionFactory的最佳范围是应用范围。

有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。

MyBatis核心对象,SqlSession每个线程都应该有它自己的SqlSession实例。

SqlSession的实例不能被共享,也是线程不安全的。

因此最佳的范围是请求或方法范围。

绝对不能将SqlSession实例的引用放在一个类的静态字段甚至是实例字段中。

也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Serlvet的HttpSession。

如果你现在正用任意的Web框架,要考虑SqlSession放在一个和HTTP请求对象相似的范围内。

换句话说,基于收到的HTTP请求,你可以打开了一个SqlSession,然后返回响应,就可以关闭它了。

关闭SqlSession很重要,你应该确保使用finally块来关闭它。

SqlSession,SqlSession可以直接调用方法的id进行数据库操作,但是我们一般还是推荐使用SqlSession获取到Dao接口的代理类,执行代理对象的方法,可以更安全的进行类型检查操作,添加配置文件自动提示,打开全局配置文件自动提示,configuration配置properties属性settings设置typeAliases类型命名typeHandlers类型处理器objectFactory对象工厂plugins插件environments环境environment环境变量transactionManager事务管理器dataSource数据源databaseIdProvider数据库厂商标识mappers映射器,MyBatis-全局配置文件MyBatis的配置文件包含了影响MyBatis行为甚深的设置(settings)和属性(properties)信息。

文档的顶层结构如下:

如果属性在不只一个地方进行了配置,那么MyBatis将按,照下面的顺序来加载:

在properties元素体内指定的属性首先被读取。

然后根据properties元素中的resource属性读取类路径下属性文件或根,据url属性指定的路径读取属性文件,并覆盖已读取的同名属性。

最后读取作为方法参数传递的属性,并覆盖已

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1