diff --git a/src/site/zh/xdoc/factorybean.xml b/src/site/zh/xdoc/factorybean.xml index 74705ade1c..f9fe2e2a71 100644 --- a/src/site/zh/xdoc/factorybean.xml +++ b/src/site/zh/xdoc/factorybean.xml @@ -29,25 +29,25 @@

-在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 -MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来替代。 +在基础的MyBatis中,通过SqlSessionFactoryBuilder来创建SqlSessionFactory。而在 +MyBatis-Spring中,则使用SqlSessionFactoryBean来创建。

-要创建工厂 bean,放置下面的代码在 Spring 的 XML 配置文件中: +要创建工厂bean,将下面的代码放到Spring的XML配置文件中:

]]> -

- 要注意 SqlSessionFactoryBean 实现了 Spring 的 FactoryBean 接口(see the Spring documentation(Core Technologies -Customizing instantiation logic with a FactoryBean-)) - 这就说明了由 Spring 最终创建的 bean 不是 SqlSessionFactoryBean 本身,。 - 而是工厂类的 getObject()返回的方法的结果。这种情况下,Spring 将会在应用启动时为你 - 创建 SqlSessionFactory 对象,然后将它以 SqlSessionFactory 为名来存储。在 Java 中, - 相同的代码是: -

+ +

+需要注意的是SqlSessionFactoryBean实现了Spring的FactoryBean接口(可查看官方文档通过工厂bean自定义实例化逻辑)。这意味着由Spring最终创建的bean并不是SqlSessionFactoryBean本身, +而是工厂类(SqlSessionFactoryBean)的 getObject()方法的返回结果。这种情况下,Spring +将会在应用启动时为你创建SqlSessionFactory的bean对象,然后将其名字设为sqlSessionFactory。 +在 Java 中的等效代码如下: +

-在一般的 MyBatis-Spring 用法中, -你不需要直接使用 SqlSessionFactoryBean 或和其对 -应的 SqlSessionFactory。相反,session 工厂将会被注入到 MapperFactoryBean 或其它扩 -展了 SqlSessionDaoSupport 的 DAO(Data Access Object,数据访问对象,译者注)中。 +在通常的MyBatis-Spring 用法中,你不需要直接使用SqlSessionFactoryBean或对 +应的SqlSessionFactory。相反,session的工厂bean将会被注入到MapperFactoryBean或其它扩 +展了SqlSessionDaoSupport的DAO(Data Access Object,数据访问对象,译者注)中。

-SqlSessionFactory 有一个单独的必须属性,就是 JDBC 的 DataSource。这可以是任意 -的 DataSource,其配置应该和其它 Spring 数据库连接是一样的。 +SqlSessionFactory有一个唯一的必要属性:用于JDBC的DataSource。这可以是任意 +的DataSource对象,它的配置应该和其它Spring数据库连接是一样的。

-一个通用的属性是 configLocation,它是用来指定 MyBatis 的 XML 配置文件路径的。 -如果基本的 MyBatis 配置需要改变, -那么这就是一个需要它的地方。 -通常这会是<settings> +一个通用的属性是configLocation,它用来指定MyBatis的XML配置文件路径。 +如果需要修改MyBatis的基础配置,那么它就有用了。通常这会是<settings><typeAliases>的部分。

-要注意这个配置文件不需要是一个完整的 MyBatis 配置。确切地说,任意环境,数据源 -和 MyBatis 的事务管理器都会被忽略。SqlSessionFactoryBean 会创建它自己的,使用这些 -值定制 MyBatis 的 Environment 时是需要的。 +需要注意的是,这个配置文件并不需要是一个完整的MyBatis配置。确切地说,任何环境,数据源 +和MyBatis的事务管理器都会被忽略。SqlSessionFactoryBean会创建它自己的,使用这些 +值定制MyBatis的Environment时是需要的。

-如果 MyBatis 映射器 XML 文件在和映射器类相同的路径下不存在,那么另外一个需要 -配置文件的原因就是它了。使用这个配置,有两种选择。第一是手动在 MyBatis 的 XML 配 -置文件中使用<mappers>部分来指定类路径。第二是使用工厂 bean 的 mapperLocations 属 -性。 +如果MyBatis在映射器类对应的路径下不存在与之相应的映射器XML文件,那么此时也需要配置文件。 +有两种方式来使用配置:第一种是是手动在MyBatis的XML配置文件中使用<mappers>部分来 +指定类路径;第二种是使用工厂bean的mapperLocations属性。

-mapperLocations 属性使用一个资源位置的 list。 -这个属性可以用来指定 MyBatis 的 XML -映射器文件的位置。 -它的值可以包含 Ant 样式来加载一个目录中所有文件, -或者从基路径下 +mapperLocations属性使用list来表示资源位置。这个属性可以用来指定MyBatis的XML +映射器文件的位置。它的值可以包含Ant样式来加载一个目录中所有文件,或者从基路径下 递归搜索所有路径。比如:

@@ -109,17 +102,16 @@ mapperLocations 属性使用一个资源位置的 list。 ]]>

-这会从类路径下加载在 sample.config.mappers 包和它的子包中所有的 MyBatis 映射器 -XML 文件。 +这会从类路径下加载在sample.config.mappers包和它的子包中所有的MyBatis映射器XML文件。

-在容器环境管理事务中,一个可能需要的属性是 transactionFactoryClass。请参考 -第四章(4.2 节)中来查看有关部分。 +在容器环境管理事务中,一个可能需要的属性是transactionFactoryClass。请参考第四章(4.2 节)中来查看有关部分。 +如果你正在使用多数据库功能,那么就需要设置databaseIdProvider属性。

- In case you are using the multi-db feature you will need to set the databaseIdProvider property: + 如果你使用了多数据库,那么需要设置databaseIdProvider属性:

NOTE - Since 1.3.0, configuration property has been added. - It can be specified a Configuration instance directly without MyBatis XML configuration file. - For example: + 自1.3.0版本开始添加configuration属性。 + 它能够在没有MyBatis对应的XML配置文件的情况下直接指定Configuration实例。 + 举个栗子:

-本章将会以简略的步骤告诉你如何安装和创建 MyBatis-Spring,并构建一个简单的数据 -访问事务性的应用程序。 +本章将会以简略的步骤告诉你如何安装和创建 MyBatis-Spring,并构建一个简单的数据访问事务性的应用程序。

-要使用 MyBatis-Spring 模块,你只需要包含 +要使用MyBatis-Spring模块,只需要在类路径下包含 mybatis-spring-${project.version}.jar -文 件就可以了,并在类路径中加入相关的依赖。 +文件和相关依赖。

-如果你使用 Maven,那么在 pom.xml 中加入下面的代码即可: +如果使用Maven,仅需要在pom.xml中加入以下代码即可:

@@ -52,13 +51,11 @@

-要和 Spring 一起使用 MyBatis,你需要在 Spring 应用上下文中定义至少两样东西:一个 -SqlSessionFactory 和至少一个数据映射器类。 +要和Spring一起使用MyBatis,需要在Spring应用上下文中定义至少两样东西:一个SqlSessionFactory和至少一个数据映射器类。

-在 MyBatis-Spring 中,SqlSessionFactoryBean 是用于创建 SqlSessionFactory 的。要 -配置这个工厂 bean,放置下面的代码在 Spring 的 配置文件中: +在MyBatis-Spring中,可使用SqlSessionFactoryBean来创建SqlSessionFactory。要配置这个工厂bean,只需要把下面代码放在Spring的XML配置文件中:

-要注意 SqlSessionFactory 需要一个 DataSource(数据源,译者注) -。这可以是任意 -的 DataSource,配置它就和配置其它 Spring 数据库连接一样。 +需要注意的是:SqlSessionFactory需要一个DataSource(数据源,译者注)。这可以是任意的DataSource,配置它就和配置其它Spring数据库连接一样。

-假设你定义了一个如下的数据 mapper 接口: +假设你定义了一个如下的mapper接口:

-那么可以使用 MapperFactoryBean,像下面这样来把接口加入到 Spring 中: +那么可以通过MapperFactoryBean像下面那样把接口加入到Spring中:

]]>

-要注意,所指定的映射器类必须是一个接口,而不是具体的实现类。在这个示例中,注 -解被用来指定 SQL 语句,但是 MyBatis 的映射器 XML 文件也可以用。 +需要注意的是:所指定的映射器类必须是一个接口,而不是具体的实现类。在这个示例中通过注解来指定SQL语句,但是通过MyBatis映射器的XML文件也行。

-一旦配置好,你可以用注入其它任意 Spring 的 bean 相同的方式直接注入映射器到你的 -business/service 对象中。MapperFactoryBean 处理 SqlSession 的创建和关闭它。如果使用 -了 Spring 的事务,那么当事务完成时,session 将会提交或回滚。最终,任何异常都会被翻 -译成 Spring 的 DataAccessException 异常。 +一旦完成配置,你可以像其它Spring中的bean注入方法将映射器到业务(bussiness)或服务(service)对象中。MapperFactoryBean用来处理SqlSession的创建和关闭动作。 +如果使用了Spring的事务,那么当事务完成时,session将会被提交或回滚。最终任何异常都会被翻译成Spring的DataAccessException异常。

- If you use the Java Configuration: + 如果你使用Java代码来配置:

- -

-调用 MyBatis 数据方法现在只需一行代码: +调用MyBatis数据方法现在只需一行代码: