MyBatis 持久层框架

来源:互联网 发布:淘宝店铺淘金币签到 编辑:程序博客网 时间:2024/05/17 08:58

 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



原创粉丝点击