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(); 
}

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

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records. Contents What is MyBatis? .. 5 Getting Started ...... 5 Building SqlSessionFactory from XML ............. 5 Building SqlSessionFactory without XML ........ 6 Acquiring a SqlSession from SqlSessionFactory ............. 6 Exploring Mapped SQL Statements . 7 A Note about Namespaces........... 8 Scope and Lifecycle .......... 9 Mapper Configuration XML  10 properties ........ 11 settings ............ 12 typeAliases ...... 13 typeHandlers ... 14 objectFactory .. 15 plugins ............. 16 environments .. 17 transactionManager .... 18 dataSource .. 19 mappers .......... 21 SQL Map XML Files ............. 21 select  22 insert, update, delete ...... 24 sql ..... 26 Parameters ...... 26 MyBatis 3 - User Guide 5 November 2010 4 resultMap ........ 28 Advanced Result Mapping ......... 30 id, result ...... 32 Supported JDBC Types  33 constructor .. 33 association .. 34 collection ..... 37 discriminator .............. 40 cache  41 Using a Custom Cache . 43 cache-ref ......... 44 Dynamic SQL ....... 44 if ....... 44 choose, when, otherwise  45 trim, where, set .............. 45 foreach ............ 47 Java API  49 Directory Structure ........ 49 SqlSessions ...... 50 SqlSessionFactoryBuilder ........... 50 SqlSessionFactory....... 52 SqlSession .... 54 SelectBuilder ....... 60 SqlBuilder ............ 63
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值