Mybatis 中文API

4星(超过85%的资源)
所需积分/C币:46 2013-01-21 11:39:17 527KB PDF
1
收藏 收藏
举报

mybatis文档中有关于mybatis中的一些基本的配置信息的介绍,在数据库表的查询配置中,关于多表的联合查询,在文档中也有其配置的关键配置代码
MyBatis3用户指南中文版 第一章什么是 MyBatis MyBatis世界上流行最广泛的SQL噢射框榘,由 Clinton Begin在2002年创建,其后,捐献给了 Apache 基金会,成立了迅atis项目。2010年5月,将代码库迁致 Google Code,并更名为 My Batis。 关于以前的版本,请访问ht/ ibatis.apache.orgl 关于更名后最新的版木,请访问:htp/code.google.comp/meat MyBatis是一个可以自定义SαL、冇储过稈和高级映射的持久层框架。 My Batis摒除了大部分的JDBC 代码、于工设萓参数和结果集重获。 My Batis只使用简单的XML和注解来配和映射基本数据类型、 Map接口和POJO到数据库记录。 曾令祝 3 MyBatis3用户指南中文版 第二章入门 每一个 My Batis应该都是以一个 Sqisession Factory实例为中心。一个 Sqlsession Factory实例可以使用 Sqisession Factory Builder来创造。从配置类中创造的定制 Sqlsession Factory Builder实例,可以使用XML 配置文件来生成一个 SqIsession Factory实例。 从XML中创造 Sqlsession Factory 从ⅩML文件中创造 SqlsessionFactory实例是非常简单的。推荐使用一个类路径资源来进行配置,你也 可以使用一个 Reader实例,甚至使用URL路径。 MyBatis有一个 Resources通用类,类中有许多方法可以简单地从类路径和其他地址中加载資源。 String resource -"org/mybatis/example/Configuration. xml"; Reader reader Res ources. getResourceAs Reader(resource)i sglMapper= new sql SessionFactoryBuilder().build(reader) XML文件包含了许多 My Batis的核心设置,包括一个获取数据库连接( Connection)实例的数据源 ( Datasource,和一个决定事务作用域和操作的 TransactionManager全部的XML配置文件的内容将在 以后提到,先给出一个简单的样子。 <?ml version="1. 0 encoding=UTF-8?> < DOCTYPE confiquration PUBLIC -//mybatis. org//DTD Config 3.0//EN Whttp://mybatis.org/atd/mybatis-3-config.dtd> <confiquration> environments default=level opment>> Environment id=development"> <transactionManager type=UDBC"/> <datasource type=POClED> <property name=driver value=sidriver7> <property name=url" value="surl]/> <property name="username value="s (username)"/> <property name="password" value='s (password]"/> </dataSource> </environment.> </environments> <mappers> <mapper resource=org/mybatis/example/BlogMapperxm1"/> </mappers> </configuration> XML配置文件中还有其它许多内容,上面的例子只是指出了最重要的部分。注意这个XML的标头,需 要一个DTD验证文档。 environment项里包含了事务管理和连接池的环境配置。mapρers项中包含了 系列SQL语句映射定义的XML文件。 曾令祝 MyBatis3用户指南中文版 、不使用XML文件新建 Sqlsession Factory 如果你更想直接使用Java语言而不是XMIL来生成这些配置,更或者你想使用自己的配置生成器, My Batis 提供了一个完整的配置类来完成XML文件一样的配置。 Datasource dataSource- BlcgDataSourceFactory getBlog Datasource()i Transactionfactory transaction Factory new Jabc TransactionFactory()i environment. environment. new Environment ("development, transactionFactory, datasource) Confiquration confiquration Configuration(environment) configuration. adaMapper(blog Mapper. class)i salsession Factory sql Sessionfactory new SalSessionFactoryBuilder().build(configuration)i 这个配置里,加载了一个映射类。昳射类是包含了S①L映射注解的Java类,可以用来取代XML。然而 由于Java注解的一些限制和 My Batis映射的复杂性,一些高级的映射还是要用XML来配置,比如嵌套 映射等。由于这个原因, My Batis会自动查找和加载已经存在的XML。比如说上面的代码, Blog Mapper. xml 将会被类路径中 Blog Mapper. class如载。以后会详细讨论这些。 三、使用 Sqlsession Factory获取Sq」 session 假设你有一个 Sqlsession Factory,你就可以来获取一个 Sqlsession实例, SqIsession包含了针对数据厍执 行语句的每一个方法。你可以直接使用 Sqlsession执行已经映射的每一个SQL语句。比如: Syl Session session sqlMapper openSession()i try blogblog =(blog) session. select( rg. Imybatis. example. Blog Mapper. selectBlog", 101)i s inally session. close()i 述步骤对于使用 My Batis的h一个版本(即迅 Batis2)的用户来说比较熟悉。现在,有一个更加清晰的 方式。使用一个有正确参数和返回值的接口,你就可以更加清晰和安全地编写代码,从而避免出错。像 这样 SylSession session =sql SessionFactory. openSession()i tr BlogMapper mapper session. getMapper(BlogMapper class)i Blog blog map per. selectBlog(101)i s inally i session. close(i 现在,让我们开始探究一下步骤的执行细节 1令祝 5 MyBatis3用户指南中文版 四、探究SQL映射语句 对丁上面所说的,你可能很好奇 Sqlsession或 Mapper类具体是什么执行的。这是一个很复杂的话题, 如果要讨论,可能要用占据这个文档的绝大部分。为了给你一个执行过程的概括,现在给出两个例子。 在上面的例子中,语句己经由ⅹML或注解所定义。我们先来看一下XML,以前, My Batis提供的的所 有特性,都是基于XML的映射语句来实现。如果你以前使用过 MyBatis,那你对这些概念会非常熟悉 但是ⅹML的映射配置文档有了诈多改进,以后将会变得越来越简单清晰。下面这个基于XML映射语句 可以完成上面的 SqIsession调用。 <?xml version=1.0 encoding=UTF-8?> DOCTYPE mapper PUBLIC -//mybatis. org//DTD Mapper 3.0/EN" http://mybatis.org/dtd/mybatis-3-mapper.dtd> <mapper namespace= org. mybatis. example. Blog Mapper> <select id="selectBlog parameter Type=int" resultType="Blog"> select from Blog where id =idh </se⊥ect> </mapper> 虽然这个简单的例子有点生涩,但是却非常简约。你可以定义多个文件,也可以在一个ⅩML文件里定 义任意个映射语句,这样可以省去XML标头。文件的其它部分,都是自身的描述。它定义了一个 org. mybatis. example. Blog Mapper命名空间,在这个空间里再定义了一个 sclect Blog语句。也可以使用 org. mybatis. example. Blog Mapper. selectBlog全名称来调用。我们可以将这样来调用上面这个文件 B⊥ogb⊥og=(B⊥og) session.se⊥ect org. mybatis. example. Blog Mapper. select Blog", 101)i 这和调用一个普通的JAVA类非常相似。这个名字可以直接映射为一个与命名空间相同名称的 Mapper 类,语句名对应类的方法名,参数和返回值也相对应。你可以用下列语句简单地针对 Mapper接口进行 调用,代码如下: BlogMapper mapper session. getMapper(BlogMapper class)i blog blog mapper select Blog(101)i 第二和方式有许多优点。一、它不依赖字符串,可以减少出错。二、如果你的ⅠDE有代码自动完成功能 你可以很快导航到你的SQL语句(因为心经转化为方法名)。三、你不再需要设定返回值类型,因为接 限定了返回值和参数。 还有一个关」 Mapper类的技巧。它们的映射语句完全不需要使用XML来配置,可以使用JAVA注解方 式来取代。比如,上面的XML语句可以替换为: pac kage org. mybatis campli public interface BlogMapper i @select("select From blog Where id =tidy") Blog selectBlog(int id) 1令祝 MyBatis3用户指南中文版 注解是非常简单明了的,但是JAVA注解既有局限性,在语句比较复杂的情况下又比较容易混乱。所以, 如果你的语句比较复杂,最好还是使用XML来映射语句。 这主要取决于你和你的项目团队,决定哪个史适合于你,主妟还是以稳健为主。也就是说,你不需要制 约于哪一种方式,你可以很容易的把注解转为XML,也可以把XML转化为注解。 五、作用域和生命周期 哩解作用域和生命周期类非常重要,如果使用不当,会造成各种各样的冋题。 1. SqlSession Factory Builder 这个类可以被初始、使用和丢弃,如果你已经创建好了一个 SqIsession Factory后就不用再保留它。因此, Sqlsession Factory Builder的最好作用域是方法体内,比如说定义一个方法变量。你可以重复使用 Sqlsession Factory Builder生成多个 SqIses sion Factory实例,但是最好不要强行保留,因为ⅹML的解析资 源要用来做其它更重要的事。 2. SqlSessionFactory ∏创建, Sqises sion Factory就会在整个应用过程中始终存在。所以没有理由去销毁和再创建它,一个 应用运行中也不建议多次创建 SqlsessionFactory如果貞的那样做,会显得很拙劣。因此 SqIses Fac tory 最好的作用域是 Application。可以有多种方法实现。最简单的方法是单例模式或者是静态单例模式。然 而这既不是广泛赞成和好用的。反而,使用 Google Guice或 Spring来进行依赖反射会更好。这些框架允 许你生成管理器来管理 SqIsession Factory的单例生命周期。 3. Sqisession 何个线程都有自己的 Sqlsession实例, Sqlsession实例是不能被共享,也是不是线程安全的。因此最好 使用 Request作用域或者方法体作用域。不要使用类的静态变量来引用一个 Sqisession实例,甚至不要 使用类的一个实例变更来引用。永远不要在一个被管理域中引用 Sqlsession,比如说在 Servlet中的 Httpsession中。如果你正在使用WBB框架,应该让 Sqlsession跟随HIP请求的相似作用域。也就是 说,在收到一个HTP请求过后,打开 SqIsession,等返川一个同应以后,立马关掉这个 SqISession。关 闭 Sqlsession是非常重要的。你必要确保 Sqisession在fnl!方法体中正常关闭。可以使用下面的标 准方式来关闭 SalSession session sqlSessionFactory opensession()i //do work s Finally i session. close(i 曾令祝 7 MyBatis3用户指南中文版 使用这种模式来贯穿你的所有代码,以确保所有数据库资源都被完全关闭。[这是假定不是使用你自己的 数据库连接,而是使用 My Batis来管理你的数据库连接资源 Mapper实例 Mapper是一种你创建的用于绑定映射语句的接口。 Mapper接口的实例是用 SqIsession来获得的。同样, 从技术上来说,最广泛的 Mapper实例作用域像 Sqlsession一样,使用请求作用域。确切地说,在方法 被调用的时候调用 Mapper实例,然后使用后,就自动销毁掉。不需要使用明确的注销。当一个请求执 行正确无误的时候,像Sqsεsion一样,你可以轾而易举地操控这一切。保持简单性,保持 Mapper在 方法休作用域内。下面演示了如果来操作: SqlSession session sqlSession F'actory. opensession()i try i BlogMapper mapper session. getMapper(BlogMapper class)i // do work }三ina11y{ session. close() 1令祝 8 MyBatis3用户指南中文版 第三章 Mapper的XML配置文件 Mapper的ⅹML配置文件包含一些设置和属性,用于增强 My Batis的动作。文档的深层次结果如 configuration properties settings typeAliases -- type Handler objectFactory plugins environments environment transaction Manager dataSource mappers 、属性( properties) JAVA属性文件就可以配置直观的、可代替的属性,或者是属性项的子项。比如: <properties resource=org/mybatis/example/config. properties"> <property name="username" value=dev user"/> <property name="password" value=F2Fa3! 33TYyg"/> </properties 通过动态配置,这些属性都可以用替换整个文件的值。例如: <data source type=POOLED"> <property name="driver value=si driver)/> <property name=url value="S(url]/> <property name="username"value="s[username)"/> <property name="password" value=password)"/> </dataSource> 例子中的 username和 pass word将被属性文件中设置的值所替换, driver和vale属性也将被 config. properties文件中值所替换,这为配置提供了多种选择。 属性值也可以设入到 SqIsession builder. builde(方法中,例如: Sa_Session Factory factory sqlSession FactoryBui lder build(reader, props)i //..Or SqlSession factory factory sqlSession FactoryBuilder build(reader, envi ronment, props)i 曾令祝 MyBatis3用户指南中文版 如果一个属性项在多个地方出现,那 MyBatis将按以下顺序加载 属性文件中的属性项首先被读取 在类路径或URL资源中读取的属性项第二顺序加载,并∏可以覆盖第一顺序加载的值 在方法体中给定的参数值最好加载,但是以后覆盖上述两种加载的值。 也就是说,最高级別的属性值是方法体中设定的参教值,接下来是类路径和URL,最后才是属性文件 二、设置( settings) 这是 My Batis修改操作运行过程细节的重要的步骤。下方这个表格描述了这些设置项、含义和默认值。 设置项 描述 允许值 默认值 cache Enabled 对在此配置文件下的所有 cache进行全 true false true 局性开/关设置。 lazyloadingenabled 全局性设置懒加载。如果设为‘关’, true false true 则所有相关联的都会被初始化加载。 ggressive Lazy loading 当设置为‘开’的时候,懒加载的对象 true false true 可能被任何懒属性全部加载。否则,每 个属性都按需加载。 multipleresult Sets Enabled 允许和不允许单条语句返回多个数据|tue|fase 集(取决于驱动需求) usecolumnLabel 使用列标签代替列名称。不用的驱动器| true false true 有不同的作法。参考一下驱动器文档, 哎者用这两个不同的选项进行测试一 useGeneratedKeys 允许JDBC生成主键。需要驱动器支持, true false False 如果设为了true,这个设置将强制使用 被生成的主键,有一些驱动器不兼容不 过仍然可以执行 auto Mapping Behavior 指定 My Batis是否并且如何来白动映射NONE PARTIAL 数据表字段与对象的属性。 PARTIAL| PARTIAL 将只自动映射简单的,没有嵌套的结FULL 果。FULL将自动映射所有复杂的结果 default Executor Type 配置和设定执行器, SIMPLE执行器执 SIMPLE SIMPLE 行其它语句。 REUSE执行器可能重复 REUSE 使用 prepared statements语句, BATCH BATCH 执行器可以重复执行语句和批量更新。 default statementTimcout 设置一个时限,以决定让驱动器等待数正整数 Not set 据库回应的多长时间为超时 (null) 下面列出关于设置的完整例子: <settings> <setting name="cache Enabled" value=true/> <setting name=nlazyLoadingEnabled" value="true"/ <setting name="multipleResultsetsEnabled" value="true"/> 曾令祝 10

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
C区小小虫 中文的,非常不错
2015-01-16
回复
不会编程的小菜 内容详细!排版也不错
2014-08-03
回复
皓12 不错,介绍的特别详细。
2014-07-23
回复
dxp33 可以很方便的查看API
2014-06-21
回复
zhuliyy 很好的资源,很详细
2014-06-19
回复
hc258258 很好的资源,可以转为word文档,资料也不错,中文的,介绍的很清晰
2014-05-13
回复
阿轮_ 不错,是中文的帮助文档
2014-04-14
回复
xue811 不错,方便查找!
2013-05-08
回复
ym11701180 还不错正需要呢
2013-03-29
回复
ppppp11 内容不错 排版也很好
2013-03-01
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
Mybatis 中文API 46积分/C币 立即下载
1/0