MyBatis 持久层框架

 Maven dependency :

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>
XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。简单的示例:
<?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="com.test.BoneCPDataSourceFactory">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
	<property name="partitionCount" value="${bonecp.partitionCount}"/>
	<property name="maxConnectionsPerPartition" value="${bonecp.maxConnectionsPerPartition}"/>
        <property name="minConnectionsPerPartition" value="${bonecp.minConnectionsPerPartition}"/>
        <property name="acquireIncrement" value="${bonecp.acquireIncrement}"/>
         <property name="disableConnectionTracking" value="true"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>
。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则是包含一组 mapper 映射器(这些 mapper 的 XML 文件包含了 SQL 代码和映射定义信息)

数据源 使用 BoneCP连接池的数据源:

import com.testBoneCPDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;

public class BoneCPDataSourceFactory extends UnpooledDataSourceFactory {

    public BoneCPDataSourceFactory() {
        this.dataSource = new BoneCPDataSource();
    }
}

不使用 XML 构建 SqlSessionFactory

如果你更愿意直接从 Java 程序而不是 XML 文件中创建 configuration,或者创建你自己的 configuration 构建器,MyBatis 也提供了完整的配置类,提供所有和 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);

注意该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL 映射语句的注解从而避免了 XML 文件的依赖。不过,由于 Java 注解的一些限制加之某些 MyBatis 映射的复杂性,XML 映射对于大多数高级映射(比如:嵌套 Join 映射)来说仍然是必须的。有鉴于此,如果存在一个对等的 XML 配置文件的话,MyBatis 会自动查找并加载它(这种情况下, BlogMapper.xml 将会基于类路径和 BlogMapper.class 的类名被加载进来)

SqlSession 实例:

SqlSession session = sqlSessionFactory.openSession();
try {
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
  session.close();
}

public void init() {
        if (sqlSessionFactory != null) return;
        try {
            ClassLoader origLoader = Thread.currentThread().getContextClassLoader();
            ClassLoader extensionLoader = getClass().getClassLoader();
            Thread.currentThread().setContextClassLoader(extensionLoader);
            InputStream in = getClass().getResourceAsStream("/" + LOCAL_MYBATIS_FILE);
            Properties properties = GameEngine.getInstance().getConfigProperties();
            properties.setProperty("local.jdbc.url", PropertyFileReader.getRealTimeItem("local.jdbc.url"));
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(in, properties);
            Thread.currentThread().setContextClassLoader(origLoader);
            logger.info("mybatis is ready");
        } catch (Exception e) {
          logger.error(e);
        }
    }
org.apache.ibatis.builder.xml.XMLConfigBuilder 解析类主要解析方法:

public Configuration parse() {
    if (parsed) {
      throw new BuilderException("Each MapperConfigParser can only be used once.");
    }
    parsed = true;
    parseConfiguration(parser.evalNode("/configuration"));
    return configuration;
  }

  private void parseConfiguration(XNode root) {
    try {
      typeAliasesElement(root.evalNode("typeAliases"));
      pluginElement(root.evalNode("plugins"));
      objectFactoryElement(root.evalNode("objectFactory"));
      objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));
      propertiesElement(root.evalNode("properties"));
      settingsElement(root.evalNode("settings"));
      environmentsElement(root.evalNode("environments"));
      typeHandlerElement(root.evalNode("typeHandlers"));
      mapperElement(root.evalNode("mappers"));
    } catch (Exception e) {
      throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);
    }
  }



官网配置:http://www.mybatis.org/mybatis-3



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值