mybatis-2(构建SqlSessionFactory对象)

一、宏观过程

  1. SqlSessionFactoryBuilder 创建 解析 xml 读取数据存入-> Configuration
  2. Configuration 创建SqlSessionFactory(I 包含默认实现类)
    在这里插入图片描述

https://blog.csdn.net/hupanfeng/article/details/9068003?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160007090319724835855593%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160007090319724835855593&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v3~pc_rank_v4-2-9068003.first_rank_ecpm_v3_pc_rank_v4&utm_term=mybatis&spm=1018.2118.3001.4187

二、configuration作用

  • 读取配置文件,包括基础配置的xml文件和映射器的xml文件
  • 初始化基础配置(mybatis别名等、重要类对象、插件、映射器、ObjectFactory和typeHandler)
  • 提供单例,为创建SqlSessionFactory服务提供配置的参数
  • 执行一些重要的对象方法,初始化配置信息
  • 初始化信息包括
    properties 全局参数
    settings 设置
    typeAliases 别名
    typeHandler 类型处理器
    ObjectFactory 对象
    plugin 插件
    environment 环境
    DatabaseIdProvider 数据库标识
    Mapper 映射器

三、映射器的内部组成

  • MappedStatement :保留一个映射器节点(curd),同时包括配置的sql信息、sql中id缓存信息、输入类型、返回值类型等配置信息
  • SqlSource :提供BoundSql对象,属于MappedStatement的属性
  • BoundSql :建立SQL和参数,包含三个属性:sql paramterObject、parameterMappings

四、示例

数据库 表和实体类 -> id name state (这里省略)

import com.wyj.dao.UserDao;
import com.wyj.entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.BeforeClass;
import org.junit.Test;

import javax.annotation.Resources;
import java.io.Reader;


public class DaoTest{

       private static SqlSessionFactory sqlSessionFactory;

        @BeforeClass
        public static void init(){
            try{
                //读取mybatis配置文件
                Reader reader = org.apache.ibatis.io.Resources.getResourceAsReader("mybatis-config.xml");
                //生成sqlSessionFactory对象
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
                reader.close();
            }catch (Exception e){
                e.printStackTrace();
            }

        }

        @Test
        public void testSelectGetById(){
            //生成sqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            try{
                UserDao userMapper =  sqlSession.getMapper(UserDao.class);
                //调用方法
                User user = userMapper.getById(1);
                System.out.println(user);
            }finally {
                sqlSession.close();
            }
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值