用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();
}
现在,让我们继续探索正在做的这些操作的更加确切的含义吧。
分享到:
相关推荐
2. **MyBatis 3 User Guide Simplified Chinese** 这份PDF文档是MyBatis 3的简体中文用户指南,涵盖了MyBatis的核心概念、配置、映射文件、API使用方法等。通过阅读,你可以了解如何创建SqlSessionFactory、...
MyBatis 3 User Guide Simplified Chinese.pdf MyBatis 3 User Guide Simplified Chinese.pdf
MyBatis是一个流行的Java持久层框架,它支持普通的SQL查询、存储过程和高级映射。它简化了数据库编程,消除了几乎所有的JDBC代码以及参数的设置和结果集的检索。MyBatis使用简单的XML或注解来配置和映射原生信息,将...
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...
什么是 MyBatis?\ 5 入门\ 5 从 XML 中构建 SqlSessionFactory \ 5 不使用 XML 构建 SqlSessionFactory\ 6 从 SqlSessionFactory 中获取 SqlSession\ 6 探究已映射的 SQL语句 \ 7 命名空间的一点注释 \ 8 ...
总的来说,MyBatis 3提供了一种强大且灵活的方式来处理数据库操作,其简化的中文用户指南对于中国开发者来说是一份宝贵的资源,帮助他们快速理解和应用这个框架。通过深入学习和实践,开发者可以充分利用MyBatis的...
1. **从XML中构建SqlSessionFactory**: 这种方式通常涉及到创建一个mybatis-config.xml配置文件,其中包含数据库连接信息、映射文件的位置等。配置文件中,你可以定义数据源、事务管理器以及其他全局设置。 2. **不...
MyBatis 是一个流行的 Java 持久层框架,它提供了对象关系映射(ORM)的灵活实现。它避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的麻烦。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口...
- **概述**:Mapper XML 文件是MyBatis的核心组成部分之一,用于定义SQL语句和结果映射规则。 - **命名空间**:每个Mapper XML文件都有一个唯一的命名空间,通常与对应的接口全限定类名一致。 - **SQL语句标签**:如...
MyBatis 是一款深受开发者喜爱...通过阅读《MyBatis-3-User-Guide-Simplified-Chinese》这份文档,开发者可以系统地了解MyBatis的各个部分,掌握如何有效地使用MyBatis来处理数据库操作,从而提升开发效率和代码质量。
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...
MyBatis 3 User Guide Simplified Chinese.
spring mybatis shiro 共6天 8部分 第1部分 spring mybatis shiro 共6天 8部分 第1部分
这份"MyBatis_3_User_Guide.zip"压缩包内包含的"MyBatis_3_User_Guide.pdf"文档,是MyBatis 3的用户指南,它全面解析了MyBatis框架的核心功能和使用方法。以下是一些主要知识点的详细说明: 1. **配置文件**:...
MyBatis3_用户指南--MyBatis-3-User-Guide-zh_CN.pdf 非常实用
### MyBatis-3-User-Guide 知识点概览 #### 一、MyBatis简介 在《MyBatis-3-User-Guide》文档中,首先介绍了MyBatis的基本概念及其重要性。MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射...
这个过程是MyBatis集成到项目中的第一步,为后续的数据库操作打下基础。 其次,MyBatis的核心概念之一是SqlSessionFactory,每个基于MyBatis的应用都是以一个SqlSessionFactory的实例为中心的。SqlSessionFactory...
通过阅读"MyBatis 3 User Guide Simplified Chinese.pdf"和"MyBatis-3.0.3-User-Guide.pdf"这两份文档,开发者可以深入了解MyBatis 3的各个功能和最佳实践,从而更高效地进行数据库操作。这份指南覆盖了从基础概念到...