本文共 2890 字,大约阅读时间需要 9 分钟。
使用 MyBatis 首先是使用配置或者代码去生产 SqlSessionFactory,而 MyBatis 提供了构造器 SqlSessionFactoryBuilder。
MyBatis提供了一个类org.apache.ibatis.session.Configuration 作为引导,采用的是 Builder 模式。具体的分步则是在 Configuration 类里面完成的。
在 MyBatis 中,既可以通过读取配置的 XML 文件的形式生成 SqlSessionFactory,也可以通过 Java 代码的形式去生成 SqlSessionFactory。
推荐采用 XML 的形式,因为代码的方式在需要修改的时候会比较麻烦。当配置了 XML 或者提供代码后,MyBatis 会读取配置文件,通过 Configuration 类对象构建整个 MyBatis 的上下文。
注意: SqlSessionFactory 是一个接口,在 MyBatis 中它存在两个实现类:SqlSessionManager 和 DefaultSqlSessionFactory。
一般而言,具体是由 DefaultSqlSessionFactory 去实现的,而 SqlSessionManager 使用在多线程的环境中,它的具体实现依靠 DefaultSqlSessionFactory,它们之间的关系如下图所示:
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的,而 SqlSessionFactory 唯一的作用就是生产 MyBatis 的核心接口对象 SqlSession,所以它的责任是唯一的,往往会采用单例模式处理它。
首先,在 MyBatis 中的 XML 分为两类,一类是基础配置文件,通常只有一个,主要是配置一些最基本的上下文参数和运行环境;另一类是映射文件,它可以配置映射关系、SQL、参数等信息。
有了基础配置文件,就可以用一段很简短的代码来生成 SqlSessionFactory 了,如下所示:
SqlSessionFactory factory = null;String resource = "sqlMapConfig.xml";InputStream is;try { InputStream is = Resources.getResourceAsStream(resource); factory = new SqlSessionFactoryBuilder().build(is);} catch (IOException e) { e.printStackTrace();}
首先读取 sqlMapConfig.xml,然后通过 SqlSessionFactoryBuilder 的 Builder 方法去创建 SqlSessionFactory。整个过程比较简单,而里面的步骤还是比较烦琐的,只是 MyBatis 采用了 Builder 模式为开发者隐藏了这些细节。这样一个 SqlSessionFactory 就被创建出来了。
// 数据库连接池信息PooledDataSource dataSource = new PooledDataSource();dataSource.setDriver("com.mysql.jdbc.Driver");dataSource.setUsername("root");dataSource.setPassword ("1128");dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");dataSource.setDefeultAutoCommit(false);// 采用 MyBatis 的 JDBC 事务方式TransactionFactory transactionFactory = new JdbcTransactionFactory();Environment environment = new Environment ("development", transactionFactory, dataSource);// 创建 Configuration 对象Configuration configuration = new Configuration(environment);// 注册一个 MyBatis 上下文别名configuration.getTypeAliasRegistry().registerAlias("role", Role.class);// 加入一个映射器configuration.addMapper(RoleMapper.class);//使用 SqlSessionFactoryBuilder 构建 SqlSessionFactorySqlSessionFactory SqlSessionFactory =new SqlSessionFactoryBuilder().build(configuration);return SqlSessionFactory;
转载地址:http://uosqb.baihongyu.com/