MyBatis3.2.2中文官方文档

所需积分/C币:12 2017-08-22 21:06:12 576KB PDF
3
收藏 收藏
举报

MyBatis3.2.2中文官方文档
My Batis用户指南中文版 version 3.2.2 简介 什么是 My Batis? My Batis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。 My Balis消除了几乎所有 的JDBC代码和参数的手工设置以及结果集的检索。 My Batis使用简单的ⅫML或注解用于配置和原始 映射,将接口和Java的POJ0s( Plan old Java0 bjects,普通的Java对象)映射成数据库中的记 录 Help make this documentation better 如果你发现了本文档的遗漏之处,或者丢失 My Batis特性的说明吋,那么最好的方法就是了解下这 个遗漏之处然后把它记录下米 Sources of this manual are available in xdoc format at project s gitHub. Check them out, update them and send your patch to the tracker 你也是本文栏的最佳作者,其他用广也会来阅读它的 关于翻译 My Batis3的用户指南翻译由南磊完成,若对翻译质量有仼何意见和建议,请联系 lanlei1987@gail.com,愿和大家共同提高,共同进步。 入门 每一个 My Batis的应用程序都以一个 SqlsessionFactory对象的实例为核心。 Sqlsessionfactory对象的实例可以通过 SqlsessionFactory Bui lder对象来获得。 SqlsessionFactoryBuilder对象可以从ⅩML配置文件,或从 Configuration类的习惯准备的实 例中构建Sq1 SessionFactory对象。 从XML中构建Sq1 SessionFactory 从ⅪM文件中构建 SalsessionFactory的实例非常简单。这里建议你使用类路径下的资源文件来 配置,但是你可以使用任意的 Reader实例,这个实例包括由文字形式的文件路径或URL形式的文件 略径file://来创建。 My Batis包含了一些工具类,称作为资源,这些工具类包含一些方法,这些方法 使得从类路径或其他位置加载资源文件更加简单。 Copyright o 2010-2013 My Batis. org. All Rights Reserved 3/79 My Batis用户指南中文版 version 3.2.2 String resource=orgmybatis/example/ mybatis-config xml InputStream inputStream- Resources. getResourceAsStream(resource) sqlsessionFactory= new Sql Session Factory Bui l der (. bui ld (inputStream) λⅦL配置文件包含对 MyBatⅰs系统的核心设置,包含获取数据库连接实例的数据源和决定事务范围和 控制的事务管理器。关于XML配置文件的详细内容可以在文档后面找到,这里给出一个简单的示例: Pxml version="1.0 encoding="UTF-8?> K! DOCTYPE configuration PUBLIC -// mybatis. org//DTD Config 3. 0//EN http://mybatis.org/dtd/mybatis-3-config.dtd> <configuration> Environments default="development"> Environment id="development <transaction Manager type="jDBC"/> datasource type-POolED> Property name="driver" value=sIdriverl"/> property name -"" value-slurl/> Property name="username"value="s username"/> <property name=password"value=password"/> datasource) K/environment> </environments> mappers> er resource=orgmybatis/example/BlogMapper xm1/> mappers> </configuration> 当然,ⅩML配置文件中还有很多可以配置的,在上面的小例指出的则是最关键的部分。要注意XML 头部的声明,需要用来验证XM文档正确性。 environment元素体中包含对事务管理和连接池的环境 配置。 mappers元素是包含所有 mapper映射器)(的列表,这些 mapper的XML文件包含SQL 代码和映射定义信息。 不使用XML构建Sq1 SessionFactory 如果你喜欢从Java程序而不是ⅪⅦ文件中直接创建配置实例,或创建你自己的配置构建 器, My Batis也提供完整的置类,提供所有从ⅫML文件中加载配置信总的选项。 DataSource dataSource= BlogDataSourceFactory getBlogDataSource O TransactionFactory transactionFactory new Jdbc TransactionFactory( Environment environment new Environment("development", transactionFactory, dataSource Configuration configuration new Configuration(environment) configuration. addMapper(blogMapper. class) SqlsessionFactorysqlSessionFactory new SqlSessionFactory Builder(. build(configuration) 注意这种情况下配置是添加映射类。怏射类是Java类,这些类包含SQL怏射语句的注解从而避免了 Copyright o 2010-2013 My Batis. org. All Rights Reserved My Batis用户指南中文版 version 3.2.2 XL文件的依赖,ⅪML映射仍然在大多数高级映射(比如:嵌套Join映射)时需要。出于这样的原 因,如果存在XⅦL配置文件的话, MyBatis将会自动查找和加载一个对等的XM文件(这种情况下, 基于类路径下的B1 gaPper. class类的类名,那么 BlogMapper.xm1将会被加载)。后面我们会了 解更多。 从 SqlsessionFactory中获取 Sqlsession 现在,我们已经知道如何获取 SqlsessionFactory对象了,基于同样的启示,我们就可以获得 Sqlsession的实例了。Sq1 Session对象完全包含以数据库为背景的所有执行SQL操作的方法。 你可以用 Sqlsession实例来直接执行已映射的SQL语句。例如 Sqlscssion scssion= salScssionFactory opcnScssion) blog blog=(Blog) scssion. sclcctOnc("org. mybatis cxamplc. BlogMappor sclcctBlog", 101) finally scssion. closc( 这种方法起到的作用,和我们使用之前的 My Batis版本是相似的,现在有一种更简沽的方法。使用合 理描述参数和SQL语句返回值的接口(比如 BlogMapper. class),这样现在就可以至此那个更简单, 史安全的代码,没有容易发生的字符串文字和转换的错误。 例如: SqlScssion scssion= salScssionFactory openScssion( tr BlogMapper mapper= session. getMapper (BlogMapper class blog blog= mapper. selectBlog(101) finally i session. close o 现在我们来探究一下这里到底执行了什么 探究已映射的SQL语句 这甲你也许想知道通过 Sylsession和 Mapper对象到底执行了什么操作。已映射的SQL语句是一 个很大的主题,而且这个主题会贯穿本文档的大部分内容。为了给出一个宏观的慨念,这里有一些示例 上面提到的任何一个示例,语句是通过XML或注解定义的。我们先来看看XML。使用基」XML的映 射语言,在过去的几年中使得 My Batis非常流行,他为 My Batis提供所有的特性设置。如果你以前用 过 My Batis,这个概念应该很熟悉了,但是XML映射文件也有很多的改进,后面我们会详细来说。这里 给出一个基于ⅩML映射语句的示例,这些语句应该可以满足上述示例中Sq1 Session对象的调用 K?xml version="1. 0 encoding="UTF-8?> K! DOCTYPE mapper PUBLIC -//my batis. org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd Copyright o 2010-2013 My Batis. org. All Rights Reserved 5/79 My Batis用户指南中文版 version 3.2.2 Mapper name space="org. mybatis. example. BlogMapper lect id-selectBlog htert sultry Blo select * k from blog where id=#id mapper> 这个简单的例子中看起来有很多额外的东西,但是也相当简洁了。你可以在一个单独的ML映射文件 中定义很多的映射话句,除XM头部和文档类型声明之外,你可以得到很多方便之处。在文件 的剩余部分是很好的自我解释。在命名空间 “com. mybatis. example. BlogMapper”中,它定义了一个名为“ selectblog”的映射语句,这样它 允许你使用完全限定名“org. mybatis. example. BlogMapper. selectblog”来调用映射语句,我 们下面示例中所有的写法也是这样的 blog blog =(Blog) session. selectOne(org. mybatis. example. BlogMapper selectBlog, 101) 要注意这个使用完全限定名调用Java对象的方法是相似的,这样做是有原因的。这个命名可以直接给 相同命名空间下的的映射类,使用一个名称,参数和返回值和已映射的查询语句都一样的方法即可。 这就允许你非常容易地调用映射器接口中的方法,这和你前面看到的是一样的,下面这个示例中它又出 现了。 BlogMapper mapper session. getMapper(BlogMapper. class) blog blog= mapper. selectBlog(101) 第二种方式有很多有点,首先它不是基于文字的,那就更安全了。第二,如果你的ⅠDE有代码补全功能 那么你可以利用它来操纵已映射的SQL语句。第三,不需要强利类型转换,同时 BlogMapper接口可 以保持简洁,返回值类型很安全(参数类型也很安全)。 重要命名空间的一点注释 命名空间在之前版夲的 My Batis中是可选项,非常混乱也没有帮助。现在,命名空间是必须的,而且 有一个日的,它使用更长的完全限定名来隔离语句 命名空间使得接凵绑定成为可能,就像你看到的那样,如果之前不了解,那么现在你就会使用它们了,你应 该按照下面给出示例的来练习,以免改变自己的想法。使用命名空间,并将它放在合适的Java包空间 之下,将会使你的代码变得简清,在很长的时间内提高 My Batis的作用。 命名解析:为了减少输入量, aBatis对所有的命名配置元素使用如卜的命名解析规则,包括语句,结 果映射,缓存等 直接查找完全限定名(比如“com. mypackage. My Mapper. selecta1 hings”,如果)发现 就使用。 短名称(比如“ selectAllThings”)可以用来引用任意含糊的对象。而如果有两个或两个以 上的(比如“com.foo. selectAllThings”和“com.bar. selectAllThings”),那么就 会得到错误报告,说短名称是含糊的,因此就必须使用完全限定名。 Copyright o 2010-2013 My Batis. org. All Rights Reserved My Batis用户指南中文版 version 3.2.2 如 BlogMapper这样的怏射器类来说,还有个妙招。它们中间怏射的语句可以不需要在ⅩML中来写, 而可以使用Java注解来替换。比如,上面的XML示例可以如下来替换 package org. mybatis example; public interface BlogMapper @Select( seleCT FROM blog Where id=#id") Blog selectBlog(int id) 对于简单话句来说,使用注解代码会更加清晰,然而Java注解对于复杂语句来说就会混乱,应该限制 使用。因此,如果你不得不做复杂的事情,那么最好使用ⅩML来映射语句。 当然这也取决于你和你的项目闭队的决定,看哪种更這合你来使用,还有以长久方式来使用映射语句的 重要性。乜就是说,不要将自己局限在一种方式中。你可以轻松地将注解换成ⅪML映射语句,反之亦然。 范围和生命周期 解我们目前凵经讨论过的不同范围和生命周期类是很重要的。不止确的使用它们会导致严重的并发 问题。 SqlsessionFactoryBuilder 这个类可以被实例化,使用和丢弃。一旦你创建了 Sqlsessionfactory后,这个类就不需要存在了。 因此 SqlsessionFactoryBuilder实例的最佳范围是方法范围(也就是木地方法变量)。你可以重 用 SalsessionFactory Builder来创建多个 SqlsessionFactory实例,但是最好的方式是不需 要保持它一直存在来保证所有XML解析资源,因为还有更重要的事情要做。 SqlsessionFactory 旦被创建, SqlsessionFactory应该在你的应用执行期间都存在。没有理由来处理或重新创建它。 使用 SylsessionFactory的最佳实践是在应用运行期间不要重复创建多次。这样的操作将被视为是 非常糟糕的。因此 SqIsession Factory的最仕范围是应用范围。有很多方法可以做到,最简单的 就是使用单例模式或者静态单例模式 Sqlsession 每个线程都应该有它自己的Sq1 Session实例。 Sqlsession的实例不能被共享,也是线程不安全的。 因此最佳的沱围是诮求或方法范围。绝对不能将 Sqlsession实例的引用放在·个类的静态宇段甚至 是实例字段中。也绝不能将 Sqlsession实例的引用放在任何类型的管理范围中,比如 Serlvet 架构中的 Httpsession。如果你现在正用任意的Web框架,要考虑 Sqlsession放在一个和HTP 请求对象相似的范围内。换句话说,基于收到的HTP请求,你可以打开了一个 Sqlsession,然后返回 响应,就可以关闭它了。关闭 Session很重要,你应该确保使用 finally块来关闭它。下面的示例就 是·个确保 Sqlsession关闭的基本模式 Copyright o 2010-2013 My Batis. org. All Rights Reserved 7/79 My Batis用户指南中文版 version 3.2.2 Sqlsession session sqlSession Factory. openSession) // do work s finall session. close 在你的代码中一贯地使用这种模式,将会保证所有数据库资源都正硝地关闭(假设你没有通过你自己的 连接关闭,这会给 MyBatis造成一种迹象表明你要自u管理连接资源) Mapper实例 映射器是你创建绑定映射语句的接口。映射器接口的实例可以从 Sqlsession中获得。那么从技术上 来说,当被请求时,任意映射器实例的最宽范围和 Sqlsession是相同的。然而,映射器实例的最佳范 围是方法范围。也就是说,它们应该在使用它们的方法中被请求,然后就抛弃掉。它们不需要明确地关闭, 那么在请求对象中保留它们也就不是什么问题了,这和 Sylsession相似。你也许会发现,在这个水平 上管理太多的资源的话会失控。保持简单,将映射器放在方法范围内。下面的示例就展示了这个实践 SqlSession session= salSessionFactory openSession O try i BlogMapper mapper session getMapper(blogMapper. class) // do work finally I session. close( Ei* Object lifecycle and Dependency Injection Frameworks Dependency injection frameworks can create thread safe, transactional Sqlsessions and mappers and inject them directly into your beans so you can just forget about their lifecycle. You may want to have a look at My Batis-Spring or MyBatis-Guice sub-projects to know more about using My Batis with Di frameworks XML映射配置文件 Ⅵ aBatis的ⅫⅦ配置文件包含了影响 My Batis行为甚深的设置和属性信息。XML文档的高层级结 构如下 con figuration配置 properties属性 settings设置 typeAliases类型命名 Copyright o 2010-2013 My Batis. org. All Rights Reserved 8/ My Batis用户指南中文版 version 3.2.2 LypeHandlers关型处理器 objectFactory对象工 plugins插件 enviroη ments环境 environment环境变量 transactionManager事务管理器 datasource数据源 databaseldProvider chinese? mappers映射器 properties 这些是外部化的,可膂代的属性,这些属性也可以配置在典型的Java属性配置文件中,或者通过 properties元素的子元素米传递。例如 Properties resource="org/ mybatis/example/ config. properties> <property name-"username value-"dev user"/ Property name="password" value="F2Fa3! 33TYyg /> K /properties> 其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。比如: <dataSource type=" POOLED property name="" value=$Driver/ <propcrty name="url" valuc="Furl property name="username" value="$username//> <property name="password" valuc=Password! "/ K/dataSource) 这个例子中的 username和 password将会由 properties元素中设置的值来膂换。 driver和 urⅠ属性将会从包含进来的 config. properties文件中的值来晳换。这里提供很多配置的选项。 属性也可以被传递到 SylsessionBuilder. build(方法中。例如 SqlSessionFactory factory- sql Factory Builder. build(reader, props) Or,,, SqlsessionFactory factory sqlSession Fac tory Builder, build (reader, environment, props 如果在这些地方,属性多于一个的话, My Batis按照如下的顺序加载它们 在 properties元素体内指定的属性首先被读取。 从类路径下资源或 properties元素的url属性中加载的属性第二被读取,它会覆盖已经存 在的完仝一样的属性 作为方法参数传递的属性最后被读取,它也会覆盖任一已经存在的完全一样的属性,这些属性可 Copyright o 2010-2013 My Batis. org. All Rights Reserved My Batis用户指南中文版 version 3.2.2 能是从 propertles元素体内和资源/url属性中加载的。 因此,最高优先级的属性是那些作为方法参数的,然后是资源/ur1属性,最后是 properties元素 中指定的属性。 settings 这些是极其重要的调整,它们会修改 My Batis在运行时的行为方式。下面这个表格描述了设置信息, 它们的含义和默认值。 设置参数 描述 有效值 默认值 这个配置使仝局的映 cacheEnabled 射器启用或禁用缓true| alse true 存 全局启用或禁用延迟 lazyLoadingEnabled 加载。当禁用时,所 有关联对象都会即时 true false true 加载。 当启用时,有延迟加 载属性的对象在被 aggressiveLazyLoading 调用时将会完全加载 任意属性。否则,每 true false true 种属性将会按需要加 载 允许或不允许多种结 果集从一个单独的 ultipleresultsetsenabled 语句中返回(需要适 true false true 合的驱动) 使用列标签代替列名。 不同的驱动在这方 usecolumnLabe l 便表现不同。参考 驱动文档或充分测 true false true 试两种方法来决定所 使用的驱动。 允许JDBC支持生成 的键。需要适合的 驱动。如果设置为 true则这个设置强 usegeneratedKeys 制生成的键被使用 true false False 尽管一些驱动拒绝兼 容但仍然有效(比如 Derby) autoMappingbehavior 指定 MyBatis如何NONE PARTIAL 自动映射列到字段/ PARTIAL 属性。 PARTIAL只FULL Copyright o 2010-2013 My Batis. org. All Rights Reserved 10/79

...展开详情
试读 79P MyBatis3.2.2中文官方文档
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
MyBatis3.2.2中文官方文档 12积分/C币 立即下载
1/79
MyBatis3.2.2中文官方文档第1页
MyBatis3.2.2中文官方文档第2页
MyBatis3.2.2中文官方文档第3页
MyBatis3.2.2中文官方文档第4页
MyBatis3.2.2中文官方文档第5页
MyBatis3.2.2中文官方文档第6页
MyBatis3.2.2中文官方文档第7页
MyBatis3.2.2中文官方文档第8页
MyBatis3.2.2中文官方文档第9页
MyBatis3.2.2中文官方文档第10页
MyBatis3.2.2中文官方文档第11页
MyBatis3.2.2中文官方文档第12页
MyBatis3.2.2中文官方文档第13页
MyBatis3.2.2中文官方文档第14页
MyBatis3.2.2中文官方文档第15页
MyBatis3.2.2中文官方文档第16页

试读结束, 可继续读4页

12积分/C币 立即下载 >