【Mybatis专题】(2)入门

【Mybatis专题】(2)入门


精简篇幅,用于知识点回顾。内容基本来源于 Mybatis中文简介,详情参考请链接。

安装

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。也可以使用 maven 引入相关依赖:https://mvnrepository.com/artifact/org.mybatis/mybatis

构建 SqlSessionFactory

SqlSessionFactoryBuilder 根据配置(Configuration)构建出 SqlSessionFactory 的实例。配置可以使用 xml 和 java。

xml配置构建 SqlSessionFactory

<?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">
<!--极简 mybatis 配置示例-->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>
String resource = "org/mybatis/example/mybatis-config.xml";
//Resources 工具类,帮助加载资源文件。
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

java配置构建 SqlSessionFactory

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
//BlogMapper.xml 将会基于类路径和 BlogMapper.class 的类名被加载进来。
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

从上面的两种配置可以看出,构建SqlSessionFactory的步骤如下:
(1)定义一个包含事务管理(TransactionManager)和数据源(DataSource)的环境(Environment),进而生成配置(Configuration)。
(2)SqlSessionFactoryBuilder 根据配置(Configuration)构建出 SqlSessionFactory 的实例。

从 SqlSessionFactory 中获取 SqlSession

SqlSession

SqlSession session = sqlSessionFactory.openSession();
try {
    //旧版方法,没有使用Mapper接口
    //Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
    BlogMapper mapper = session.getMapper(BlogMapper.class);
    Blog blog = mapper.selectBlog(101);
} finally {
    session.close();
}

SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。

命名空间(namespace)使得你所见到的接口绑定成为可能,代码结构也更加整洁。

命名解析:
1. 完全限定名(比如“com.mypackage.MyMapper.selectAllThings”)将被直接查找并且找到即用。
2. 短名称(比如“selectAllThings”)如果全局唯一也可以作为一个单独的引用。

生命周期

依赖注入框架可以创建线程安全的、基于事务的 SqlSession 和映射器(mapper)并将它们直接注入到你的 bean 中,因此可以直接忽略它们的生命周期。

SqlSessionFactoryBuilder:(方法作用域)这个类用完即丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。

SqlSessionFactory:(应用作用域)一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。最简单的就是使用单例模式或者静态单例模式。

SqlSession:(方法作用域)每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的。

映射器实例(Mapper Instances)映射器接口的实例是从 SqlSession 中获得的。作用域同SqlSession即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值