MyBatis使用过程

一、MyBatis使用过程

  1. 获取输入流对象,读取MyBatis配置文件,

    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    
    • mybatis-config.xml:核心配置文件

    • Resources:mybatis提供的加载资源的工具类

  2. 创建 SqlSessionFactoryBuilder 构建者对象

  3. 根据输入流对象,使用构建者创建 SqlSessionFactory 工厂

    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
    
    • SqlSessionFactoryBuilder:获取 SqlSessionFactory 工厂对象的功能类,

    通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象

    • SqlSessionFactory:获取 SqlSession 构建者对象的工厂接口
  4. 使用工厂对象,创建 SqlSession 对象

    SqlSession sqlSession = factory.openSession();
    
    • SqlSession:构建者对象接口。用于执行 SQL、管理事务、接口代理
  5. 根据SqlSession 对象,传入 数据层的接口,得到一个实现类对象

    UserDao mapper = sqlSession.getMapper(UserDao.class);
    

    接口代理方式的四个必要条件:

    • Mapper.xml文件中的namespace与mapper接口的全限定名相同
    • Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
    • Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
    • Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

    除了接口代理的方式,还可以直接使用sqlsession对象执行映射配置文件中的sql语句:

    sqlSession.insert("UserDaoMapper.insert",new User(111,"zhang","666"));
    

    ​ UserDaoMapper为namespace

    其实接口代理方式在底层也是通过代理模式调用SqlSession方法来执行sql语句的。

  6. 实现类对象可以直接执行数据层操作

    List<Student> studentList = mapper.findAll();
    
  7. SqlSession 对象可以操作事务

    • 通过SqlSession对象提交、回滚事务

      sqlSession.commit();
      sqlSession.rollback();
      
  8. 关闭资源

    其中1,2,3 可以再一个工厂类中使用静态代码块的方式实现,4,5 可以使用静态方法实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值