【MyBatis】初始化过程

news2024/9/24 21:27:51

MyBatis 初始化过程

可以分为以下几个步骤:

  1. 添加依赖:首先,需要在项目的 pom.xml(如果是 Maven 项目)或 build.gradle(如果是 Gradle 项目)文件中添加 MyBatis 以及数据库驱动的依赖。

  2. 配置文件:创建 MyBatis 的配置文件 mybatis-config.xml,这个文件包含了 MyBatis 的全局配置信息,如数据库连接信息、事务管理、映射文件等。

  3. 映射文件:创建 SQL 映射文件(通常是 XML 格式),在这些文件中定义 SQL 语句和结果映射。这些文件可以单独存在,也可以按包结构组织。

  4. 创建数据源和 SqlSessionFactory:通过代码或依赖注入(如 Spring)来创建 SqlSessionFactory 实例。SqlSessionFactory 是 MyBatis 的核心接口,用于生成 SqlSession 实例。

  5. SqlSession:通过 SqlSessionFactory 获取 SqlSession 实例,SqlSession 提供了执行映射的 SQL 语句的方法,以及管理事务的方法。

  6. 执行 SQL 语句:使用 SqlSession 来执行定义在映射文件中的 SQL 语句,进行数据的增删改查操作。

  7. 处理结果:MyBatis 会将数据库查询的结果自动映射到 Java 对象上,可以直接使用这些对象进行后续操作。

  8. 关闭 SqlSession:操作完成后,应该关闭 SqlSession 以释放资源。

MyBatis代码示例

XML方式:
String resource = "com/yang/mybatis/mybatis-config.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

SqlSession sqlSession = sqlSessionFactory.openSession();  

List list = sqlSession.selectList("com.yang.mapper.UserMapper.queryAllUser");

Java API方式:
String resource = "com/yang/mybatis/mybatis-config.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);  

XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, null,null); 
 
Configuration configuration = parser.parse();  

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);  

SqlSession sqlSession = sqlSessionFactory.openSession();  

List list = sqlSession.selectList("com.yang.mapper.UserMapper.queryAllUser");  
  • 调用SqlSessionFactoryBuilder对象的build(inputStream)方法;

  • SqlSessionFactoryBuilder会根据输入流inputStream等信息创建XMLConfigBuilder对象;

  • SqlSessionFactoryBuilder调用XMLConfigBuilder对象的parse()方法;

  • XMLConfigBuilder对象返回Configuration对象;

  • SqlSessionFactoryBuilder根据Configuration对象创建一个DefaultSessionFactory对象;

  • SqlSessionFactoryBuilder返回 DefaultSessionFactory对象给Client,供Client使用。

初始化过程中的对象:

  • SqlSessionFactoryBuilder : SqlSessionFactory的构造器,用于创建SqlSessionFactory,采用了Builder设计模式

  • Configuration :该对象是mybatis-config.xml文件中所有mybatis配置信息

  • SqlSessionFactory:SqlSession工厂类,以工厂形式创建SqlSession对象,采用了Factory工厂设计模式

  • XmlConfigParser :负责将mybatis-config.xml配置文件解析成Configuration对象,共SqlSessonFactoryBuilder使用,创建SqlSessionFactory




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1542560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java集合框架初学者指南:List、Set与Map的实战训练

Java集合框架是Java语言的核心部分,它提供了丰富的类和接口,用来高效地管理和操作大量数据。这个强大的工具箱包括多种集合类型,其中最为常用的是List、Set和Map。 1.List - 有序且可重复的数据清单 概念: List就像一个购物清单&…

Qt程序可执行文件打包

目录 一、新建一个目录二、命令行2.1 添加临时变量2.2 打包命令 三、添加动态库四、普通 Qt 项目打包 Qml 项目打包 笔者写的python程序打包地址(https://blog.csdn.net/qq_43700779/article/details/136994813) 一、新建一个目录 新目录(例如test)用以…

Spring Boot整合Spring Security

Spring Boot 专栏:Spring Boot 从零单排 Spring Cloud 专栏:Spring Cloud 从零单排 GitHub:SpringBootDemo Gitee:SpringBootDemo Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块的默认技术…

基于springboot+vue+Mysql的留守儿童爱心网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

学习周报:文献阅读+Fluent案例+水力学理论学习

目录 摘要 Abstract 文献阅读: 文献摘要 现有问题 研究目的及方法 PINN的设置 NS方程介绍 损失函数 训练方法 实验设置 对照组设置 实验结果展示 点云数、隐藏层数和每个隐藏层的节点数对PINN精度的影响 点云数对PINN的影响: 隐藏层数的影…

Kruskal最小生成树【详细解释+动图图解】【sort中的cmp函数】 【例题:洛谷P3366 【模板】最小生成树】

文章目录 Kruskal算法简介Kruskal算法前置知识sort 中的cmp函数 算法思考样例详细示范与解释kruskal模版code↓ 例题:洛谷P3366 【模板】最小生成树code↓完结撒花QWQ Kruskal算法简介 K r u s k a l Kruskal Kruskal 是基于贪心算法的 M S T MST MST 算法&#xff…

探索国内ip切换App:打破网络限制

在国内网络环境中,有时我们会遇到一些限制或者屏蔽,使得我们无法自由访问一些网站或服务。而国内IP切换App的出现,为解决这些问题提供了非常便捷的方式。这些App可以帮助用户切换IP地址,让用户可以轻松地访问被限制或屏蔽的网站&a…

【计算机考研】 跨考408全年复习规划+资料分享

跨专业备考计算机考研408,确实是一项挑战。在有限的时间内,我们需要合理安排时间,制定有效的学习计划,做到有效地备考。回顾我之前对408的经验,我想分享一些备考计划和方法。 要认清自己的起点。作为跨专业考生&#…

AI Infra论文阅读之《在LLM训练中减少激活值内存》

写了一个Megatron-LM的3D Parallel进程组可视化的Playground,界面长下面这样: 可以直接访问:https://huggingface.co/spaces/BBuf/megatron-lm-parallel-group-playground 脚本也开源在:https://github.com/BBuf/megatron-lm-par…

Linux部署seata-2.x整合SpringCloud使用(Nacos实现配置与注册中心)

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: Linux部署seata-2.x整合SpringCloud使用(Nacos实现配置与注册中心) ⏱️…

Request请求参数----中文乱码问题

一: GET POST获取请求参数: 在处理为什么会出现中文乱码的情况之前, 首先我们要直到GET 以及 POST两种获取请求参数的不同 1>POST POST获取请求参数是通过输入流getReader来进行获取的, 通过字符输入流来获取响应的请求参数, 并且在解码的时候, 默认的情况是 ISO_885…

Elasticsearch:虚拟形象辅助和对话驱动的语音到 RAG 搜索

作者:来自 Elastic Sunile Manjee 搜索的演变 搜索已经从产生简单结果的简单文本查询发展成为容纳文本、图像、视频和问题等各种格式的复杂系统。 如今的搜索结果通过生成式人工智能、机器学习和交互式聊天功能得到增强,提供更丰富、更动态且与上下文相…

一张表看懂阿里云服务器优惠价格表(CPU内存价格+带宽费用+磁盘价格)

2024年腾讯云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单,大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

【Redis】Redis特性

Redis 认识redisRedis特性在内存中存储数据可编程可扩展性持久化Clustering高可用性 认识redis Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志…

Window全网解析网站下载视频

全网解析网站下载视频 介绍m3u8格式cbox格式 解析视频下载的方法方法一解析视频下载视频 方法二老王浏览器下载使用浏览器解析下载视频 总结 介绍 今天分享一下如何解析网页中的视频进行下载。通常情况下我们打开的某某网站的视频是不提供下载接口的,甚至说你下载了…

Verilog刷题笔记45

题目:Given the finite state machine circuit as shown, assume that the D flip-flops are initially reset to zero before the machine begins. Build this circuit. 解题: module top_module (input clk,input x,output z ); wire [2:0]size;dtou…

性能测试丨GreatSQL TPC-H 性能测试报告正式发布!

1、测试背景概述 本次测试针对GreatSQL开源数据库基于标准 TPC-H 场景的测试。 TPC-H(商业智能计算测试)是美国交易处理效能委员会(TPC,TransactionProcessing Performance Council)组织制定的用来模拟决策支持类应用…

StarRocks 助力金融营销数字化进化之路

作者:平安银行 数据资产中心数据及 AI 平台团队负责人 廖晓格 平安银行五位一体,做零售金融的领先银行,五位一体是由开放银行、AI 银行、远程银行、线下银行、综合化银行协同构建的数据化、智能化的零售客户经营模式,这套模式以数…

37、Linux中Xsync数据同步备份工具

37、Linux中Xsync数据同步备份工具 一、介绍二、配置集群hostname三、修改xsync文件四、赋权五、安装Rsync六、验证一七、配置免密登录1、生成rsa密钥2、copy机器自身公钥到目标机器3、.ssh/文件目录赋权 八、验证二 ⚠️ 注:本文全程在普通用户下操作,…

设计模式之建造者模式详解

建造者模式 1)概述 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 1.复杂对象 复杂对象是指包含多个成员属性的对象。 2.结构图 Builder(抽象建造者):它为创建一个产品Product对象…