Mybatis学习笔记-核心API简介

SqlSessionFactoryBuilder
SqlSessionFactory
SqlSession
生命周期


SqlSessionFactoryBuilder

该类用于创建SqlSessionFactory的实例,可以被实例化、使用和丢弃,在创建完SqlSessionFactory实例后,该对象实际上就可以被丢弃了。
SqlSessionFactoryBuilder重载了久个builder()方法,允许利用不同的资源来创建SqlSessionFactory实例:

public SqlSessionFactory build(Reader reader)
public SqlSessionFactory build(Reader reader, String environment)
public SqlSessionFactory build(Reader reader, Properties properties)
public SqlSessionFactory build(Reader reader, String environment, Properties properties)
public SqlSessionFactory build(InputStream inputStream)
public SqlSessionFactory build(InputStream inputStream, String environment)
public SqlSessionFactory build(InputStream inputStream, Properties properties)
public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties)
public SqlSessionFactory build(Configuration config)

其中

public SqlSessionFactory build(Reader reader)

public SqlSessionFactory build(InputStream inputStream)

最为常用,将mybatis核心配置文件已流对象的形式传递给框架后,根据配置文件中的配置去创建持久层环境。
其中environment和priperties参数是可选的,environment对应于创建那种环境,若制定该参数,则会覆盖配置文件中的

<environments default="mysql_environment">

default属性,同理,peoperties对应配置文件中的各种配置信息,其优先级也是高于配置文件的。

SqlSessionFactory

每一个Mybatis的应用程序都以一个SqlSessionFactory的实例为核心,通过该类可用回去操作数据库的核心对象SqlSession,SqlSessionFactory对象的实例由SqlSessionFactoryBuilder创建,创建SqlSessionFactory对象最常用的方式是用配置文件。
一个简单可用的Mybatis核心配置文件如下:

<?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="mysql_environment">
       <environment id="mysql_environment">
       <transactionManager type="JDBC" />
       <dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="zhangdd" />
<property name="password" value="zd1991.." />
        </dataSource>
     </environment>
   </environments> 
</configuration>

也可用Mybatis中的API来代替配置文件创建SqlSessionFactory实例:

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);

注意用这种方式创建SqlSessionFactory实例的时候对应的实体映射类的定义(后面详细介绍)。

SqlSession

SqlSession由SqlSessionFactory创建,SqlSession包含完全以数据库为背景的所有执行SQL操作的方法,可以用SqlSession对象来执行所有已映射的sql语句。
例如:
Mappper.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="com.mybatis.test.entity.Pet">
     <select id="selectPetByName" parameterType="string"   resultType="hashmap">
         select 
               <include refid="column"/> 
         from pet 
         where name = #{name}
    </select>
</mapper>

获取session并执行sql语句:

@Test
    public void getOnePet(){
        session = sessionFactory.openSession();
        Pet pet = session.selectOne("com.mybatis.test.entity.Pet.selectPetByName", "XiaoJian");
        System.out.println(pet);
        session.close();
    }

SqlSession中包含大量的sql操作方法,利用参数来避免JDBC对结果集操作的冗余代码,与JDBC相比较方便很多。

生命周期

SqlSessionFactoryBuilder:
该类用来创建SqlSessionFactory对象,当SqlSessionFactory对象被创建后,该对象也就没有存在的必要了。

SqlSessionFactory:
该对象应该在你的应用执行期间一直存在,由于要从该对象中获取SqlSession对象,这样的操作会相当频繁,同时创建SqlSessionFactory对象是一件一起消耗资源的事,因此,该对象的生命周期应该为应用返回,即与当前应用具有相同生命周期。

SqlSession:
每个线程都应该有自己的SqlSession实例,SqlSession实例不能被共享,是线程不安全的,因此最佳的范围是请求或方法范围,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值