`

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

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

分享到:
评论
6 楼 angviza 2011-10-11  
Mybatis3加spring怎么做批处理啊,求教
5 楼 dongwei_6688 2010-12-27  
askjsp 写道
dongwei_6688 写道
askjsp 写道
基本上都是原话,没怎么见作者自己的观点。实话


的确,呵呵,我应该注明【翻译】才是
当初因为没有中文版自己就试着翻译了,后来有了中文版,就终止了。


呵呵,原来是翻译啊,我当初也没看仔细,现在才看到,SORRY

不错!

共同学习啊。
4 楼 askjsp 2010-12-09  
dongwei_6688 写道
askjsp 写道
基本上都是原话,没怎么见作者自己的观点。实话


的确,呵呵,我应该注明【翻译】才是
当初因为没有中文版自己就试着翻译了,后来有了中文版,就终止了。


呵呵,原来是翻译啊,我当初也没看仔细,现在才看到,SORRY

不错!
3 楼 dongwei_6688 2010-12-09  
askjsp 写道
基本上都是原话,没怎么见作者自己的观点。实话


的确,呵呵,我应该注明【翻译】才是
当初因为没有中文版自己就试着翻译了,后来有了中文版,就终止了。
2 楼 askjsp 2010-12-02  
基本上都是原话,没怎么见作者自己的观点。实话
1 楼 azheng270 2010-08-23  
spring下事务管理的配置应该怎么配呢?

相关推荐

    mybatis-3-user-guide

    MyBatis是一个流行的Java持久层框架,它支持普通的SQL查询、存储过程和高级映射。它简化了数据库编程,消除了几乎所有的JDBC代码以及参数的设置和结果集的检索。MyBatis使用简单的XML或注解来配置和映射原生信息,将...

    Mybatis Jar包

    Mybatis是一个第一流的持久层框架,它支持定制化SQL、存储过程以及高级映射。Mybatis消除了几乎所有的JDBC代码和手动设置参数以及检索结果集。Mybatis可以通过简单的XML或注解进行配置,将原生类型、Map接口和Java ...

    API MyBatis3

    **API MyBatis3**是MyBatis框架的第三次重大版本更新,它是一个优秀的持久层框架,主要用于简化Java开发中的数据库操作。MyBatis3在原有的基础上进行了许多优化和改进,提高了开发效率并增强了可扩展性。这篇博客...

    尚硅谷-张晓飞-Mybatis源码

    "MyBatis-3-User-Guide-Simplified-Chinese.pdf" 是Mybatis官方中文用户指南,这是了解Mybatis的权威资料。该文档会详细介绍Mybatis的安装、配置、基本用法,以及高级特性如参数映射、结果映射、一对一和一对多关联...

    mybatis-3.0.5-bundle及其中文文档

    在学习MyBatis的过程中,中文帮助文档《MyBatis-3-User-Guide-Simplified-Chinese.pdf》是非常重要的参考资料。这份文档详细介绍了MyBatis的安装、配置、API使用、最佳实践等内容,对于初学者和有经验的开发者来说都...

    Mybatis简单示例

    其次,"Mybatis_P1"可能是一个部分示例代码或者项目的第一部分,通常包含以下内容: 1. **配置文件**:mybatis-config.xml,这是Mybatis的全局配置文件,其中包含了数据源、事务管理器等信息。 2. **Mapper接口**:...

    支持多数据库的ORM框架ef-orm.zip

    实际性能测试表明,EF的大部分操作都要快于Hiberante和MyBatis, 部分操作速度甚至数十倍于上述框架。 EF在极限插入模式下,甚至刷新了每秒10万条写入的记录。远远超过了其他框架。 一个初步的性能测试:测试代码...

Global site tag (gtag.js) - Google Analytics