公司内部培训mybatis3课件_第1页
公司内部培训mybatis3课件_第2页
公司内部培训mybatis3课件_第3页
公司内部培训mybatis3课件_第4页
公司内部培训mybatis3课件_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MyBatisMyBatis 是支持普通 SQL查询,存储过程等一个轻量级的ORM中间件 。一、myBatis框架概述与传统的 JDBC 开发相比, MyBatis 消除了几乎所有的代码和参数的手工设置。MyBatis 使用简单的 XML 或注解方式,用于配置和原始映射,将接口和 Java 的POJOs(Plan Old Java Objects,普通的 Java对象)映射成数据库中的记录。 二、mybatis 与 hibernate 比较Hibernate基本上可以自动生成。其对数据库结构提供了较为完整的封装 开发效率上, 如果使用纯面向对象方式Hibernate 比较快,但如果以HQL其他

2、方式相差不多。可维护性方面, mybatis框架是以sql的开发方式,可以进行细粒度的优化 。Hibernate自动生成的sql效果不理想。三、Mybatis开始3.1 SqlSessionFactory String resource = org/mybatis/example/Configuration.xml; Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, props); 3.2 调用sq

3、lSqlSession session = sqlMapper.openSession(); try Blog blog = (Blog) session.selectOne( selectBlog, 101); finally session.close(); 3.3Mybatis的文件组成1 Configuration.xml2 Mapper.xml1 Configuration.xml系统的核心设置,包含获取数据库连接实例的数据源和决定事务范围和控制的事务管理器1.1 Configuration.xml简单的示例1.1.1 配置数据源 1.1.2告诉MyBatis到哪里去找相关映射文件

4、/ Using url fully qualified paths 2 Mapper.xml定义具体SQL映射语句的文件2.1 Mapper.xml简单的示例 SELECT * FROM PERSON WHERE ID = #id 2.2 输入属性参数parameterType 将会传入这条语句的参数类的完全限定名或别名。 2.3 输出属性参数resultType或resultMap,但不能同时使用resultType 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。resultMap 命名引用外部的resultMap。返回map是

5、MyBatis最具力量的特性,对其有一个很好的理解的话,许多复杂映射的情形就能被解决了。2.4 resultMap 2.5 使用上的区别resultType select id, username, hashedPassword from some_table where id = #id select user_id as “id”, user_name as “”, from some_table where id = #id resultMap 引用它的语句使用resultMap属性就行了(注意我们去掉了resultType属性)。比如: select user_id,

6、 user_name, hashed_password from some_table where id = #id 2.6 resultMap一对一、多对一 resultMap一对多 2.6 其他 delete id=insertAuthor arameterType=domain.blog.Author flushCache=true statementType=PREPARED 2.7可重用的SQL代码段 id,username,password 这个SQL片段可以被包含在其他语句中,例如: select from some_table where id = #id 2.8 动态SQL

7、MyBatis的一个强大的特性之一通常是它的动态SQL能力。如果你有使用JDBC或其他相似框架的经验,你就明白条件地串联SQL字符串在一起是多么的痛苦,确保不能忘了空格或在列表的最后省略逗号。动态SQL可以彻底处理这种痛苦。 通常使用动态SQL不可能是独立的一部分,MyBatis当然使用一种强大的动态SQL语言来改进这种情形,这种语言可以被用在任意映射的SQL语句中。 例子 SELECT * FROM BLOG WHERE state = ACTIVE AND title like #title 处理了一个臭名昭著的动态SQL问题 state = #state AND title like #

8、title AND title like # 四 缓存机制Mapper.xml单独配置 select*fromUSER 使用其他缓存机制五 事务机制SqlSessionFactory SqlSessionFactory有六个方法可以用来创建SqlSession实例。通常来说,如何决定是你选择下面这些方法时: SqlSession openSession(ExecutorType execType) SqlSession openSession(ExecutorType execType, boolean autoCommit) SqlSession openSession

9、(ExecutorType execType, Connection connection) Configuration getConfiguration(); 默认的openSession()方法没有参数,它会创建有如下特性的SqlSession: 会开启一个事务(也就是不自动提交) 连接对象会从由活动环境配置的数据源实例中得到。 事务隔离级别将会使用驱动或数据源的默认设置。 预处理语句不会被复用,也不会批量处理更新。 这些方法大都可以自我解释的。开启自动提交,传递“true”给可选的autoCommit参数。提供自定义的连接,传递一个Connection实例给connection参数。注意没有覆盖同时设置Connection和autoCommit两者的方法,因为MyBatis会使用当前connection对象提供的设置。MyBatis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论