Mybatis入门

2018-08-25  本文已影响0人  小淼不卖萌

引自: MyBatis 3 | 入门

1. 简介


2.安装


3. 构建SqlSessionFactory


XML构建SqlSessionFactory

不使用 XML 构建 SqlSessionFactory

不使用XML 文件中创建 configuration,或者创建你自己的 configuration 构建器,MyBatis也提供了完整的配置类

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 sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

4. 从 SqlSessionFactory 中获取 SqlSession

5. 探究已映射的 SQL 语句

SqlSession 和 Mapper 到底执行了什么操作

命名空间(Namespaces)

命名空间在现在的Mybatis版本中是必须的,意于简单地用更长的完全限定名来隔离语句。

【1】XML

MyBatis 提供的全部特性可以利用基于 XML 的映射语言来实现

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
【2】注解
package org.mybatis.example;
public interface BlogMapper {
  @Select("SELECT * FROM blog WHERE id = #{id}")
  Blog selectBlog(int id);
}

6. 作用域(Scope)和生命周期

对象生命周期和依赖注入框架

SqlSessionFactoryBuilder

这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但是最好还是不要让其一直存在以保证所有的 XML 解析资源开放给更重要的事情。

SqlSessionFactory

SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。因此 SqlSessionFactory 的最佳作用域是应用作用域。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。

SqlSession

SqlSession session = sqlSessionFactory.openSession();
try {
  // do work
} finally {
  session.close();
}

映射器实例(Mapper Instances)

SqlSession session = sqlSessionFactory.openSession();
try {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  // do work
} finally {
  session.close();
}

【注】:

上一篇 下一篇

猜你喜欢

热点阅读