Mybatis核心对象及工作流程

目录

一、mybatis核心对象

(1)SqlSession对象直接操作数据库

(2)SqlSession对象通过代理对象操作数据库

二、mybatis工作流程


一、mybatis核心对象

(1)SqlSessionFactoryBuilder

SqlSession工厂构建者对象,使用构造者模式创建SqlSession工厂对象

(2)SqlSessionFactory

SqlSession工厂,使用工厂模式创建SqlSession对象

(3)SqlSession

该对象可以操作数据库,也可以使用动态代理模式创建持久层接口的代理对象操作数据库

(4)Mapper

持久层接口的代理对象,他具体实现了持久层接口,用来操作数据库
对于第三点的SqlSession对象可以直接操作数据库也可以通过代理对象操作数据库,这里我具体举例分析:

(1)SqlSession对象直接操作数据库

java 复制代码
  // (1)读取核心配置文件
  InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
  // (2)创建SqlSessionFactoryBuilder对象
  SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  // (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象
  SqlSessionFactory factory = builder.build(is);
  // (4)SqlSessionFactory对象获取SqlSession对象
  SqlSession session = factory.openSession();
  // (5)SqlSession直接操作数据库
  List<User> users = session.selectList("com.itbaizhan.mapper.UserMapper.findAll");
  users.forEach(System.out::println);
  // (6)关闭资源
  session.close();
  is.close();

(2)SqlSession对象通过代理对象操作数据库

java 复制代码
 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
        // (2)创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        // (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象
        SqlSessionFactory factory = builder.build(is);
        // (4)SqlSessionFactory对象获取SqlSession对象
        SqlSession session = factory.openSession();
        // (5)SqlSession对象获取代理对象
        UserMapper userMapper = session.getMapper(UserMapper.class);
        // (6)代理对象执行方法
        List<User> all = userMapper.findAll();
        all.forEach(System.out::println);


        // (7)释放资源
        session.close();
        is.close();

二、mybatis工作流程

(1)创建SqlSessionFactoryBuilder对象

(2)SqlSessionFactoryBuilder对象创建SqlSessionFactory对象:构造者模式

(3)SqlSessionFactory对象生产了SqlSession对象:工厂模式

(4)SqlSession对象创建了持久层接口的代理对象:动态代理模式

(5)代理对象操作数据库

相关推荐
linmengmeng_131411 小时前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
笃行35012 小时前
别拿MySQL数据库管理工具硬导:MySQL 迁 KingbaseES 的完整工具链
数据库
风哥2号12 小时前
数据库教程FGMT51‑PostgreSQL实例管理与参数文件
数据库·postgresql
蓝速科技12 小时前
桌面双屏翻译机量产调试:三类场景兼容性破局方案丨蓝速科技
运维·数据库·人工智能·科技·技术分享
达梦数据13 小时前
DMDRS空间数据类型说明:Oracle、DM8、MySQL空间数据类型映射
数据库·mysql·oracle
白远山13 小时前
24小时自助健身房系统开发实战:从需求分析到完整指南
java·开发语言·数据库·数据挖掘·需求分析
达梦数据13 小时前
DMDRS服务与模块的运行步骤
数据库
lusklusklusk14 小时前
Oracle索引组织表,SQLServer聚集索引,Mysql Innodb表的数据行不是在磁盘上像排队一样严格连续地存放
mysql·postgresql·oracle·sqlserver
让学习成为一种生活方式14 小时前
PMGD:植物线粒体基因组数据库--Journal of Integrative Plant Biology
数据库
达梦数据14 小时前
达梦数据复制软件DMDRS搭建部署示例:源数据库DM8到目标数据库DM8一对一数据同步
数据库