公司内部培训mybatis

上传人:tia****nde 文档编号:70771323 上传时间:2019-01-18 格式:PPT 页数:33 大小:1.25MB
返回 下载 相关 举报
公司内部培训mybatis_第1页
第1页 / 共33页
公司内部培训mybatis_第2页
第2页 / 共33页
公司内部培训mybatis_第3页
第3页 / 共33页
公司内部培训mybatis_第4页
第4页 / 共33页
公司内部培训mybatis_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《公司内部培训mybatis》由会员分享,可在线阅读,更多相关《公司内部培训mybatis(33页珍藏版)》请在金锄头文库上搜索。

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

2、HQL其他方式相差不多。 可维护性方面, 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、);,3.2 调用sql,SqlSession session = sqlMapper.openSession(); try Blog blog = (Blog) session.selectOne( “selectBlog“, 101); finally session.close(); ,3.3Mybatis的文件组成,1 Configuration.xml 2 Mapper.xml,1 Configuration.xml,系统的核心设置,包含获取数据库连接实例的数据源和决定事务范围和控制的事务管理器,1.1 Configuration.xml简单的示例,1.1.1 配置数据源 ,1.1.

4、2告诉MyBatis到哪里去找相关映射文件, / 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 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。 r

5、esultMap 命名引用外部的resultMap。返回map是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 “role.name”, from some_table where id = #id ,resultMap, 引用它的语句使用resultMap属性就行了(注意

6、我们去掉了resultType属性)。比如: select user_id, 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片段可以被包含在其他语句中,例

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

8、itle ,处理了一个臭名昭著的动态SQL问题, state = #state AND title like #title AND title like #author.name ,四 缓存机制,Mapper.xml单独配置 , select * from USER ,使用其他缓存机制,五 事务机制,SqlSessionFactory SqlSessionFactory有六个方法可以用来创建SqlSession实例。通常来说,如何决定是你选择下面这些方法时:,SqlSession openSession(ExecutorType execType) SqlSession openSession

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号