当前位置: 首页 > news >正文

Mybatis核心对象及工作流程

目录

一、mybatis核心对象

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

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

二、mybatis工作流程


一、mybatis核心对象

(1)SqlSessionFactoryBuilder

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

(2)SqlSessionFactory

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

(3)SqlSession

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

(4)Mapper

持久层接口的代理对象,他具体实现了持久层接口,用来操作数据库

对于第三点的SqlSession对象可以直接操作数据库也可以通过代理对象操作数据库,这里我具体举例分析:

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

// (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对象通过代理对象操作数据库

 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)代理对象操作数据库 

http://www.lryc.cn/news/162255.html

相关文章:

  • 无swing,高级javaSE毕业之贪吃蛇游戏(含模块构建,多线程监听服务),已录制视频
  • Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)
  • 算法通关村-----位运算在海量元素中查找重复元素的妙用
  • RabbitMQ: Publish/Subscribe结构
  • 单片机-蜂鸣器
  • 华为云云耀云服务器L实例评测 | 分分钟完成打地鼠小游戏部署
  • Android——数据存储(二)(二十二)
  • appium环境搭建
  • 十五、Webpack打包图片-js-Vue、Label命令、resolve模块解析
  • ARM指令集--数据处理指令
  • Excel embed into a webpage
  • uniapp点击事件在小程序中无法传参
  • ssprompt:一个LLM Prompt分发管理工具
  • 修复 ChatGPT 发生错误的问题
  • 《热题100》字符串、双指针、贪心算法篇
  • 大数据组件Sqoop-安装与验证
  • 运算符重载(个人学习笔记黑马学习)
  • 2023.9.6 Redis 的基本介绍
  • 2023-09-08力扣每日一题
  • adb-linux 调试桥
  • 入门人工智能 —— 使用 Python 进行文件读写,并完成日志记录功能(4)
  • 使用Caffeine实现帖子的缓存来优化网站的运行速度
  • Webpack5 搭建Vue项目(进阶版)
  • 论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones
  • 力扣每日一题---207. 课程表
  • 在Kubernetes环境中有关Nginx Ingress与API Gateway的连接问题
  • c语言练习44:深入理解strstr
  • 渗透测试漏洞原理之---【业务安全】
  • CentOS查看CPU、内存、网络流量和磁盘 I/O
  • 无人机航线规划