已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 MyBatis配置详解与API介绍 本章内容 uMybatis的结构与原理 uMybatis配置文件详解 uSQL映射文件详解 uMybatis API介绍 本章目标 u理解mybatis的运行流程 u掌握mybatis的配置 u掌握mybatis的映射文件 u理解mybatis中的重要的类 Mybatis的结构与原理 uMyBatis执行总体流程: (1)加载配置 (2)SQL解析 (3)SQL执行 (4)结果映射 MyBatis功能架构 uAPI接口层:提供给外部使用的接口API,开发人员通过这些本地API 来操纵数据库。接口层一旦接收到调用请求就会调用数据处理层来完 成具体的数据处理。 u数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果 映射处理等。其主要的目的是根据调用的请求完成一次数据库操作。 u基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配 置加载和缓存处理,这些都是共用的资源,将他们抽取出来作为最基 础的组件。为上层的数据处理层提供最基础的支持。 MyBatis配置文件 u配置文件的结构 配置文件的元素properties u该元素是外部化的、可替代的属性,这些属性也可以配置在典型的Java 属性配置文件中,或者通过properties元素的子元素来传递。例如: u其中的属性值就可以在整个配置文件中使用,使用可替换的属性来实现 动态配置。例如: Settings u该元素是极其重要的参数设置,它们会修改MyBatis在运行时的行为 方式。 typeAliases u类型别名即为Java类型命名一个短的名称。它仅同XML配置有关,只 用于减少类完全限定名的多余部分。 typeHandlers u无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一 个值时,类型处理器均被用于将获取的值以合适的方式转换成Java类型 。 / ExampleTypeHandler.java public class ExampleTypeHandler implements TypeHandler public void setParameter(PreparedStatement ps, int i, Object parameter,JdbcType jdbcType) throws SQLException ps.setString(i, (String) parameter); public Object getResult(ResultSet rs, String columnName) throws SQLException return rs.getString(columnName); public Object getResult(CallableStatement cs, int columnIndex) throws SQLException return cs.getString(columnIndex); environments uMyBatis可以配置多种环境。这便于将SQL映射应用于多种数据库之 中。 transactionManager u在MyBatis中,有两种事务管理器类型(即type=”JDBC|MANAGED” ) (1)JDBC:该配置直接简单地使用了JDBC的提交和回滚设置。它依赖于从数据源 得到的连接来管理事务范围。 (2)MANAGED :该配置几乎无用。它从来不提交或回滚一个连接,且它会让容 器来管理事务的整个生命周期(如Spring或JEE应用服务器的上下文)。默认情 况下,它会关闭连接。然而一些容器并不希望这样,因此,如果需要从连接中停止 它,则需要将closeConnection属性设置为false。 dataSource udataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象 的资源。 u内建数据源类型(即type=”?”)有以下三种: (1)UNPOOLED (2)POOLED (3)JNDI mappers u既然MyBatis的行为已经由上述元素配置完毕,那么我们现在要定义 SQL映射语句。这些语句简单阐述了MyBatis要从哪里寻找映射文件 ,其余的细节便在每个SQL映射文件中。 SQL映射的XML文件 uSQL映射文件包括以下几个很少的顶级元素(按照它们应该被定义的 顺序排序): ncache:配置给定命名空间的缓存。 ncache-ref:从其他命名空间引用缓存配置。 nresultMap:最复杂,也是最有力量的元素,用于描述如何从数据库结果集 中加载对象。 nsql:可重用的SQL块,也可以被其他语句引用。 ninsert:映射插入语句。 nupdate:映射更新语句。 ndelete:映射删除语句。 nselect:映射查询语句。 select u查询语句是使用MyBatis时最常用的元素之一。当从数据库中取出数据 时,会发现将数据存储在数据库中是很有价值的,所以许多应用程序 的查询操作相较更改数据操作更多。 SELECT * FROM PERSON WHERE ID = #id u该语句被称为selectPerson,使用一个int(或Integer)类型的参数, 并返回一个HashMap类型的对象,其中的键是列名,值是列对应的值 。 Select中的属性 属性 描述 id 在命名空间中唯一的标识符,可以被用于引用 该语句。 parameter Type 将会传入该语句的参数类的完全限定名或别名 。 resultType 从该语句中返回的期望类型的类的完全限定名 或别名。 resultMap 命名引用外部的resultMap。 flushCach e 将其设置为true,无论语句什么时候被调用, 都会导致缓存被清空。默认值为false。 useCache 将其设置为true,将会导致本条语句的结果被 缓存。默认值为true。 timeout 该设置驱动程序等待数据库返回请求结果。 fetchSize 暗示驱动程序每次批量返回的结果行数。默认 不设置(驱动自行处理) statement Type STATEMENT、PREPARED或CALLABLE的 一种。 resultSetT ype FORWARD_ONLY|SCROLL_SENSITIVE|SCR OLL_INSENSITIVE中的一种。默认不设置( 驱动自行处理)。 insert into Author (id,username,password,email,bio) values (#id,#username,#password,#email,#bio) update Author set username = #username, password = #password, email = #email, bio = #bio where id = #id delete from Author where id = #id insert、update和delete u数据修改语句insert、update和delete在它们的实现中非常相似 insert、update和delete的属性 属性 描述 id 在命名空间中唯一的标识符,可以被用于引 用该语句。 parameterTyp e 将会传入该语句的参数类的完全限定名或别 名。 flushCache 将其设置为true,无论语句什么时候被调用 ,都会导致缓存被清空。默认值为false。 timeout 该设置驱动程序等待数据库返回请求结果, 并抛出异常时间的最大等待值。默认不设置 (驱动自行处理)。 statementTyp e STATEMENT、PREPARED或CALLABLE 的一种。用于方便MyBatis选择使用 Statement、PreparedStatement或 CallableStatement。默认值为PREPARED。 useGenerated Keys (仅对insert有用)通知MyBatis使用JDBC的 getGeneratedKeys方法来取出由数据(如 MySQL和SQL Server的数据库管理系统的自 动递增字段)内部生成的主键。默认值为 false。 keyProperty (仅对insert有用)标记一个属性,MyBatis 会通过getGeneratedKeys或insert语句的 selectKey子元素设置其值。默认不设置。 sql u该元素可以被用于定义可重用的SQL代码段,可以包含在其他语句中。 如: id,username,password 上述SQL片段可以被包含在其他语句中。如: select from some_table where id = #id resultMap uresultMap元素是MyBatis中最重要、最强大的元素。 u解决列名与属性名称不匹配的问题: u其引用语句使用resultMap属性即可(注意,我们去掉了resultType属 性)。例如: select user_id, user_name, hashed_password from some_table where id = #id Mybatis的范围与生命周期 uSqlSessionFactoryBuilder:该类可以被实例化、使用和丢弃。 uSqlSessionFactory:一旦被创建,SqlSessionFactory实例会一直 存在于应用程序执行期间。 uSqlSession:每个线程都应该有自己的SqlSession实例。 u映射器实例:映射器是创建绑定映射语句的接口。映射器接口的实例 可以从SqlSession中获得。从技术上而言,当被请求时,任意映射器 实例的最宽范围和SqlSession是相同的。 SqlSession session = sqlSessionFactory.openSession(); try mapper = session.getMapper(BlogMapper.class); / do work
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婴儿急救技术:窒息与烫伤应对
- 新生儿急救指南:呛奶、窒息黄金处理时间
- 成本体系的标准化建设路径
- 2025 三年级数学上册长方形拼图周长课件
- 2025 三年级数学上册万以内减法差的验证课件
- 妇产科护理中的心理护理评估工具与应用
- 医学中医护理健康宣教案例分析课件
- 中药局部内给药案例分析课件
- 护理人力配置规划的评估指标体系构建
- 急诊科突发传染病应急成本动态管控
- CCP点的确认和验证记录
- 武汉城市介绍旅游攻略PPT模板
- 液压电梯监督检验自检报告书资料
- 直升机结构与系统版
- 专业标准与课程标准
- 新生儿疾病诊疗规范诊疗指南诊疗常规2022版
- 临床伦理决策与卫生法1
- GB/T 18376.1-2001硬质合金牌号第1部分:切削工具用硬质合金牌号
- 工业管道安装作业指导书
- 2023年深圳市南山区网格员招聘笔试模拟试题及答案解析
- 恩诺沙星缓释注射液的研制及在猪体内的药动学研究幻灯片
评论
0/150
提交评论