源码购买网站,玄武模板网站制作品牌,中铁建设门户网官网,用网站建设与管理创业对象工厂#xff08;ObjectFactory#xff09;
MyBatis 每次创建结果对象的新实例时#xff0c;它都会使用一个对象工厂#xff08;ObjectFactory#xff09;实例来完成。默认的对象工厂需要做的仅仅是实例化目标类。如果想覆盖对象工厂的默认行为#xff0c;则可以通过…对象工厂ObjectFactory
MyBatis 每次创建结果对象的新实例时它都会使用一个对象工厂ObjectFactory实例来完成。默认的对象工厂需要做的仅仅是实例化目标类。如果想覆盖对象工厂的默认行为则可以通过创建自己的对象工厂来实现。
配置环境environments
Mybatis可以配置成适应多种环境。例如开发、测试和生产环境需要有不同的配置或者共享相同 Schema 的多个生产数据库 想使用相同的 SQL 映射。许多类似的用例。
不过要记住尽管可以配置多个环境每个 SqlSessionFactory 实例只能选择其一。每个数据库对应一个 SqlSessionFactory 实例
为了指定创建哪种环境只要将它作为可选的参数传递给 SqlSessionFactoryBuilder 即可有两个方法签名接受环境参数
SqlSessionFactory factory new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory new SqlSessionFactoryBuilder().build(reader, environment, properties);如果忽略环境参数默认环境会被加载。 环境元素定义了如何配置环境。
environments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBCproperty name... value...//transactionManagerdataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment
/environments注意几个点
默认的环境 ID比如:default“development”。每个 environment 元素定义的环境 ID比如:id“development”。事务管理器的配置比如:type“JDBC”。数据源的配置比如:type“POOLED”。
事务管理器transactionManager
有两种类型type”[ JDBC | MANAGED ]”
JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置它依赖于从数据源得到的连接来管理事务作用域。MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接而是让容器来管理事务的整个生命周期比如 JEE 应用服务器的上下文。默认情况下它会关闭连接用closeConnection 来阻止这种关闭行为。
transactionManager typeMANAGEDproperty namecloseConnection valuefalse/
/transactionManager提示如果你正在使用 Spring MyBatis则没有必要配置事务管理器 因为 Spring 模块会使用自带的管理器来覆盖前面的配置。 可以自定义对Mybatis事务的处理通过实现两个接口interface TransactionFactory、interface Transaction。
数据源dataSource
dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。 有三种内建的数据源类型也就是 type”[ UNPOOLED | POOLED | JNDI ]”
UNPOOLED– 这个数据源的实现只是每次被请求时打开和关闭连接。对于某些数据库来说使用连接池并不重要这个配置就很适合这种情形。 具体属性见http://www.mybatis.org/mybatis-3/zh/configuration.html#environmentsPOOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来避免了创建新的连接实例时所必需的初始化和认证时间。 具体属性见http://www.mybatis.org/mybatis-3/zh/configuration.html#environmentsJNDI – 这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用容器可以集中或在外部配置数据源然后放置一个 JNDI 上下文的引用。
可以通过实现接口 org.apache.ibatis.datasource.DataSourceFactory 来使用第三方数据源
public interface DataSourceFactory {void setProperties(Properties props);DataSource getDataSource();
}映射器mappers
既然Mybatis 的行为已经由上诉元素配置完了现在定义sql映射语句。
!-- 使用相对于类路径的资源引用 --
mappersmapper resourceorg/mybatis/builder/AuthorMapper.xml/mapper resourceorg/mybatis/builder/BlogMapper.xml/mapper resourceorg/mybatis/builder/PostMapper.xml/
/mappers!-- 使用完全限定资源定位符URL --
mappersmapper urlfile:///var/mappers/AuthorMapper.xml/mapper urlfile:///var/mappers/BlogMapper.xml/mapper urlfile:///var/mappers/PostMapper.xml/
/mappers!-- 使用映射器接口实现类的完全限定类名 --
mappersmapper classorg.mybatis.builder.AuthorMapper/mapper classorg.mybatis.builder.BlogMapper/mapper classorg.mybatis.builder.PostMapper/
/mappers!-- 将包内的映射器接口实现全部注册为映射器 --
mapperspackage nameorg.mybatis.builder/
/mappers