当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

MyBatis3 User Guide 第一部分

发表于: 2010-07-05   作者:dongwei_6688   来源:转载   浏览次数:
摘要:     用iBatis已经很久一段时间了,最近得知iBatis 更名为MyBatis了,而且做了更新,为了方便自己,也为了方便同行,所以从今天开始陆续的翻译MyBatis3 User Guide。时间关系,可能翻译周期会稍长。水平有限,难免会有翻译的不准确的地方,希望不要误人子弟,呵呵。   声明:文章内容只作为学习和交流使用,不得用于商业转载,如需使

    用iBatis已经很久一段时间了,最近得知iBatis 更名为MyBatis了,而且做了更新,为了方便自己,也为了方便同行,所以从今天开始陆续的翻译MyBatis3 User Guide。时间关系,可能翻译周期会稍长。水平有限,难免会有翻译的不准确的地方,希望不要误人子弟,呵呵。

 

声明:文章内容只作为学习和交流使用,不得用于商业转载,如需使用,请通过站内短信与本人联系,获得许可。

 

MyBatis 是什么?(What is MyBatis?)

 

    MyBatis 是第一个类级别的持久层框架,同时支持用户自定义SQL(custom SQL),存储过程(stored procedures)和高级映射(advanced mappings)。MyBatis 消除了几乎全部的JDBC代码(个人理解,这里指的是那些通用的获取Connection,创建Statement等的代码),以及需要手动进行参数设置,和需要手动从结果集中获取数据的代码。MyBatis 可以用非常简单的XML 或者注解(Annotations) 进行配置,可以将原始类型(primitives)、Map 接口(Map interfaces)和Java POJO(Plain Old Java Objects)映射为数据库中的记录。

 

准备开始

    每个MyBatis应用都以SqlSessionFactory实例为中心。SqlSessionFactory实例可以从SqlSessionFactoryBuilder对象获得。SqlSessionFactoryBuilder可以通过Configuration类或从XML配置构建SqlSessionFactory实例。

 

从XML中构建SqlSessionFactory对象

    从XML文件中构建SqlSessionFactory实例非常的简单。推荐从classpath中加载配置,但其实你可以使用任何一种Reader实例,包括从字符串表示的文件路径或者以file://开头的URL表示的路径形式。MyBatis 内置了一个工具类--Resources,这个类包含了很多方法,可以让你从classpath或者其他位置加载资源时相对容易一些。

String resource = "org/mybatis/example/Configuration.xml"; 
Reader reader = Resources.getResourceAsReader(resource); 
sqlMapper = new SqlSessionFactoryBuilder().build(reader);

 

    XML配置文件中包含了MyBatis的核心系统设置,包括用以获取数据库链接的DataSource,包括用来进行事务范围界定和控制的TransactionManager。完整的XML配置会在本文的后面给出,这里只给出一个简单的示例:XML配置文件中包含了MyBatis的核心系统设置,包括用以获取数据库链接的DataSource,包括用来进行事务范围界定和控制的TransactionManager。完整的XML配置会在本文的后面给出,这里只给出一个简单的示例:

<?xml version="1.0" encoding="UTF-8" ?> 
<!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"> 
      <transactionManager type="JDBC"/> 
      <dataSource type="POOLED"> 
        <property name="driver" value="${driver}"/> 
        <property name="url" value="${url}"/> 
        <property name="username" value="${username}"/> 
        <property name="password" value="${password}"/> 
      </dataSource> 
    </environment> 
  </environments> 
  <mappers> 
    <mapper resource="org/mybatis/example/BlogMapper.xml"/> 
  </mappers> 
</configuration>

    该XML配置文件还有许多东西可配置,上面的这个示例只给出了最关键的那部分。需要注意的是XML的头部,会以此来验证XML配置的有效性。environment这个标签包含了事务管理和连接池的一些环境配置。mappers标签包含了一组映射关系,这些XML文件包含了sql代码和一些映射关系的定义。

 

不用XML也可以构建SqlSessionFactory对象

    如果你更喜欢直接用java代码进行配置,而不太喜欢用XML的方式,或者用你自己写的配置构建程序,MyBatis提供了一个完整的Configuration类,它提供了一种和XML方式完全等效的方式。

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource(); 
TransactionFactory transactionFactory = new JdbcTransactionFactory(); 
Environment environment = new Environment("development", transactionFactory, dataSource); 
Configuration configuration = new Configuration(environment); 
configuration.addMapper(BlogMapper.class); 
SqlSessionFactory sqlSessionFactory =  new SqlSessionFactoryBuilder().build(configuration); 

     需要注意的是,这种方式,配置中增加了一个映射类(mapper class)。映射类采用SQL Mapping注解,从而避免了使用XML文件。然而因为Java注解的一些限制和MyBatis映射的复杂性,基于XML的映射依然是一些最高级的映射所必须的方式(比如:嵌套的关联映射,Nested Join Mapping)。基于这个原因,MyBatis会自动搜索并加载已经存在的同等XML文件(这种情况下,会从classpath中加载BlogMapper.xml,并且取名为BlogMapper.class)。这部分之后会进行详述。

 

从SqlSessionFactory中获取SqlSession对象

     现在你已经可以获得SqlSessionFactory对象了,就像这部分的标题一样,你可以获取SqlSession对象了。SqlSession完全包含了你所需要和数据库进行sql交互的每一个方法。你可以用SqlSession对象直接去执行一个已经映射了的SQL语句,例如:

SqlSession session = sqlMapper.openSession(); 
try { 
  Blog blog = (Blog) session.selectOne( 
    "org.mybatis.example.BlogMapper.selectBlog", 101); 
} finally { 
  session.close(); 
}

     采用这种方式,对MyBatis以前版本的用户来说是很熟悉的,但现在有一种更加直观的方式。使用接口(例如:BlogMapper.class),它可以更恰当的描述该条sql的参数以及返回值,现在你可以用更加清晰的,以及类型安全的代码来执行了,而且参数不再是字符串,返回值也不用再进行强制转换。如下所示:

SqlSession session = sqlSessionFactory.openSession(); 
try { 
  BlogMapper mapper = session.getMapper(BlogMapper.class); 
  Blog blog = mapper.selectBlog(101); 
} finally { 
  session.close(); 
}

      现在,让我们继续探索正在做的这些操作的更加确切的含义吧。

MyBatis3 User Guide 第一部分

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
特此声明,以下文章出自 http://jdee.sourceforge.net/jdedoc/html/jde-ug/jde-ug.html http://dand
JBoss AOP - User Guide The Case For Aspects 1.0 Table of Contents Preface 1. What Is Aspect-O
Now we can start a new process instance using the id we defined in the process definition (se
Installation Configuration Set user name and email Add SSH keys Repository Create New Reposit
5.4的有中文,下载见附件 有总比没有看,大部分都看得懂,凑合看吧 原文网址:http://www.blogjava.
FFT IP core的总体架构分析:FFT分为fixed transform size architectture 和 variable streaming ar
3.8.9. Tasks(任务) A task represents work that needs to be done by an external entity, such a
ps:由于篇幅问题,这篇博客主要介绍数据挖掘标准化流程中的project understanding问题,剩下的5个
♣ 第一阶段目标 能把计算的功能封装起来,通过测试程序和API接口测试其简单的加法功能。 ♣ 第二阶
在New Project对话框中,选择Visual C#和Silverlight for Windows Phone模板。在中部区域,选择Win
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号