Mybatis知识点以及工作原理和流程

Mybatis原理分析系列---关键点分析 什么Mybatis Mybatis工作构成 Mybatis一些关键知识点 1,mybatis加载mappers有几种方式?哪种优先级最高? 四种。主要有package、resource、url、class 四种。可以看出package优先级最高。 <mappers> <!--第一种做法--> <!--<pa... 阅读详情

Mybatis 概念

  • 它是一个基于java的持久层框架,它消除了几乎所有的JDBC代码和参数手工设置以及结果集的检索
  • 它使用简单的xml或者注解用于配置和原始映射,将接口和java的普通对象映射成数据库中的记录。
  • 这个框架小巧、方便、高效、简单、直接、半自动化。

Mybitis工作原理

  1. 读取Mybatis配置文件,一般命名为:mybatis-config.xml,需要配置运行环境等信息,例如数据库的连接信息。
<!-- 配置环境 -->
 <environments default = "development">
 <environment id="development">
  <!-- 使用JDBC的事务管理 -->
  <transactionManager type="JDBC"/>
  <dataSource type = "POOLED">
   <!-- MySQL数据驱动 -->
   <property name="driver" value="com.mysql.jdbc.Driver"/>
   <!-- 连接数据库的URL -->
   <property name = "url" value = "jdbc:mysql://localhost:3306/springtest?
    characterEncoding = utf8"/>
   <property name="username" value="root"/>
   <property name="password" value="syx3.14="/>
  </dataSource>
 </environment>
 </environments>
  1. 加载SQL映射文件,就是告诉mybatis去哪里找SQL映射文件。同样需要在mybaits-config.xml中配置。
<!-- 映射文件的位置 -->
 <mappers>
 <mapper resource = "com/mybatis/mapper/UserMapper.xml"/>
 </mappers> 

SQL映射文件中的查询方法id就是类似于方法名字,调用的时候要用上。下面的例子固定了传入的参数只能是Integer型,也固定了返回结果是自定义的java普通类MyUser,重点内容就是sql语句的编写:

<!-- 根据uid查询一个用户的信息 -->
 <select id = "selectUserById" parameterType = "Integer"
  resultType = "com.po.MyUser">
  select * from user where uid = #{uid}
 </select>
  1. 构造会话工厂SqlSessionfactory.
//读取配置文件mybatis-config.xml
   InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
   //根据配置文件构造SqlSessionFactory
   SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
  1. 创建会话对象:由会话工厂中创建对象,该对象包含了执行SQL语句的所有方法。
SqlSession ss = ssf.openSession();
   //SqlSession执行映射文件定义中的Sql语句,并返回映射结果
   //com.mybatis.mapper.UserMapper.selectUserById为UserMapper.xml中的命名空间+select 的id
   //查询用户
   MyUser mu = ss.selectOne("com.mybatis.mapper.UserMapper.selectUserById",1);
   System.out.println(mu);
  1. Executor执行器:它根据SqlSession传递的参数动态生成需要执行的SQL语句,同时负责查询缓存的维护,它是底层设计,不太清楚。
  2. MappedStatement对象:Executor接口执行方法中有一个MappedStatement类型的参数,这个参数是对映射信息的封装用于储存要映射的SQL的id和参数。
  3. 输入参数映射:输入的参数类型可以是List或者Map等集合形式,也可以是基本的类型的参数或者pojo(java普通类),该过程类似于JDBC中preparedStatement对象设置参数的过程。
//查询所有用户
   List<MyUser> listMu = ss.selectList("com.mybatis.mapper.UserMapper.selectAllUser");
   for(MyUser myUser : listMu) {
    System.out.println(myUser);
   }
  1. 输出结果映射:同样可以是List或者Map类型或者基本类、pojo类型。输出的结果同样类似于JDBC对结果集的解析过程。

注意事项:

  1. Mybatis默认使用log4j输出日志信息,如果想要查看控制台中的SQL语句,需要在classpath路径下配置其日志文件:
    例如在src下创建log4j.properties文件:
# Global logging configuration
log4j.rootLogger=ERROR, stdout
#MyBatis logging configuration...
log4j.logger.com.dao = DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

  1. Eclipes开发需要导入的基本jar包:核心包,依赖包,数据库连接包

  2. SQL映射文件每个方法的id,以及掺传入的参数,返回的类型要明确。

  3. 别忘记提交事务:

//提交事务
   ss.commit();
   ss.close();

总的来说,这个框架减轻了面对数据库操作的压力,大大提高了数据的存储查询效率,不仅小巧,也十分容易维护。

但是它也有很多不足:直接使用Mybatis中的SqlSession访问数据库并不简便,因为Mybatis框架的重点是SQL映射文件。

所以要利用Mybatis与Spring的整合消除繁琐操作

集群路径规划实战(一)之EGO-swarm环境搭建与调试 本文详细介绍了EGO-swarm分布式无人机集群运动规划系统的仿真环境搭建与调试全流程。内容涵盖ROS Melodic安装、代码获取、依赖库配置、编译问题解决(如multi_map_server头文件缺失)以及最终通过roslaunch启动集群仿真与Rviz可视化,为学习和研究集群路径规划算法提供了可运行的实战平台。 阅读详情

相关推荐

L3 级自动驾驶 2025:法规突破与车企技术路线竞争

2025年L3级自动驾驶迎来规模化商业落地关键期。全球主要经济体在法规、技术、市场三方面取得突破:中国通过《北京市自动驾驶汽车条例》明确责任划分,欧盟设立严格技术认证标准。技术路线呈现"多传感器融合为主流,纯视觉为补充"格局,华为、特斯拉等企业展开硬件军备竞赛与算法架构革新。中国车企在技术验证和规模化应用方面领先,而欧美车企侧重生态整合。尽管面临成本控制、责任认定和用户信任等挑战,随着技术进步和车路协同发展,L3自动驾驶正从高端选配向大众化普及迈进,为L4级奠定基础。

2301_77933942的博客 3098

MyBatis的工作流程和执行原理

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、获取结果集等jdbc繁杂的过程代码。MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。

Supreme13的博客 7804

Kaamel白皮书:IoT设备安全隐私评估实践

明确评估的目的和预期结果。

kaamelai的博客 1317

JDBC简介(2)

前篇:JDBC简介(1) 1、Connection角色       Connection表示与特定数据库的连接,可以获取到数据库的一些信息,这些信息包括:其表信息,应该支持的SQL语法,数据库内有什么存储过程,此链接功能的信息等等。 在一般实际使用情况下,我们关注的Connection的功能有以下几点: 1.1 创建可以执行sql语句或者存储过程的对象stateme

爱上在路上 938

DBeaver连接IoTDB避坑指南:手动配置JDBC驱动的完整流程(附问题排查)

本文提供了在DBeaver中手动配置Apache IoTDB JDBC驱动的完整流程与避坑指南。详细解析了从驱动创建、库文件添加(关键是指向整个lib目录)到连接测试的每一步,并重点针对常见的ClassNotFoundException、连接拒绝等错误提供了深度排查方案,帮助用户高效建立图形化管理连接。

weixin_28327051的博客 396

Centos7配置阿里云镜像源的教程

查看你的Centos版本,版本过低会导致安装失败,验证网络是否可以连接阿里云镜像,使用阿里云是需要网络的。# wget命令下载: wget [options] [url]# curl命令下载: curl [options] [url]我上面这个图片由于电脑问题是还没有加载完的。删除原来或者之前的yun源。

lyhshs的博客 2260

Mybatis工作流程及原理详解

5.Executor:Executor(执行器)接口有两个实现类,其中BaseExecutor有三个继承类分别是BatchExecutor(重用语句并执行批量更新),ReuseExecutor(重用预处理语句prepared statement,跟Simple的唯一区别就是内部缓存statement),SimpleExecutor(默认,每次都会创建新的statement)。本文结合Mybatis源码,详细的阐述了业务编码中通过Mapper接口方式来操作数据库的底层实现原理。二、MyBatis的重要组件。

qq_42077317的博客 1989

MAS1102量产工具实战指南:从下载到开卡,附固件选择与RDT优化技巧

本文提供MAS1102量产工具的实战指南,涵盖从工具下载、短接识别到开卡操作的全过程。重点解析了固件选择策略与RDT优化技巧,帮助用户成功修复基于联芸MAS1102主控的固态硬盘,解决常见开卡错误并提升SSD性能与稳定性。

c2d3e4f的博客 2203

MyBatis基本工作原理介绍

1、MyBatis基本工作原理介绍 计算机的基本工作就是存储和计算,而MyBatis是存储领域的利器。MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结果封装成Java类。 2、MyBatis的核心流程介绍 mybatis应用程序通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出SqlSessionFactory,然后,SqlSessionFactory的实例直接开启一个SqlSession,再通过

weixin_44431073的博客 2万+

FastAPI + LLM 实战:5分钟搞定本地模型API服务部署(含避坑指南)

本文详细介绍了如何使用FastAPI和LLM(大语言模型)快速部署本地API服务,涵盖环境准备、模型集成、性能优化及避坑指南。通过实战示例,帮助开发者在5分钟内完成从零到生产的部署过程,提升AI应用开发效率。

weixin_29062963的博客 103

从菜鸟到大神:VSCode助力HTML开发全攻略

本文全面介绍 VSCode 在 HTML 开发中的高效应用。先引导读者完成 VSCode 的安装与个性化设置,助其快速适应开发环境;接着推荐 Live Server、Prettier 等实用插件,实现实时预览、代码格式化等功能,提升开发效率。通过详细的开发实战步骤,从新建文件到添加样式,带领读者掌握 HTML 基础结构与常用标签使用。还分享代码片段管理、多人协作等进阶技巧,解决常见开发问题。旨在帮助开发者利用 VSCode,轻松高效完成 HTML 开发,打造优质网页。

邓邓子的博客 3365

MyBatis的工作原理

MyBatis 是一个功能强大的持久层框架,通过对 SQL 语句的精确控制和方便的映射配置,提供了一种灵活且高效的数据库访问方式。MyBatis 的工作原理主要围绕SqlSessionMapperExecutor这几个核心组件展开,通过配置文件和映射文件,将 Java 对象和数据库表有效地连接起来。MyBatis 通过动态代理、缓存机制、动态 SQL、插件机制等特性,极大地提升了数据库操作的简洁性和可维护性,同时保留了对 SQL 语句的完全控制权,适合于各种需要精细化控制 SQL 的场景。

Flying_Fish_roe的博客 3207

CentOS7 内核升级

可在http://ftp.sjtu.edu.cn/sites/elrepo.org/linux/kernel/el7/x86_64/RPMS选择对应架构平台不受影响的内核版本文件下载,然后离线安装,也可通过yum下载包后进行安装。通过 #uname -sr ,可以看到当前的内核版本 Linux 3.10.0-1160.el7.x86_64。首先找台能访问互联网的机器,通过联网的机器进行内核包下载。lt:longterm的缩写:长期维护版;ml:mainline的缩写:最新稳定版;

Jian Sun_的博客 601

Spring与Mybatis系列面试题(简洁版)

关于Spring、SpringMVC、Mybatis和SpringBoot框架的核心面试题总结。

weixin_61666830的博客 2008

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MyBatis 的执行流程,学废了!

作者:双子孤狼来源:blog.youkuaiyun.com/zwx900102/article/details/108455514MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程...

磊哥聊Java 332

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Mybatis 基础知识

mybatis 二级缓存是 namespace 命名空间缓存,需要手动开启在配置文件中添加 Cache Enable 信息并且在 Mapper 文件中添加缓存标签<Cache /> 才会开启,二级缓存也是本地缓存,如果在同一个 namespace 命名空间先执行相同的 sql 语句,第一次会去数据库中查询数据,后续几次直接获取本地缓存数据,但是在同一个 namespace 命名空间下做过一次 增删改操作,会清空当前命名空间下的所有缓存信息。

sdfsfaffs的博客 430

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Mybatis 的工作原理及流程

MyBatis的底层操作封装了JDBC的API,MyBatis的工作原理以及核心流程与JDBC的使用步骤一脉相承,MyBatis的核心对象(SqlSession,Executor)与JDBC的核心对象(Connection,Statement)相互对应。本文的核心观点是:从JDBC入手并立足于JDBC,才能深入的理解MyBatis的工作原理以及核心流程。

qq_52252193的博客 3552

Mybatis工作原理与流程

引言 在mybatis的基础知识中我们已经可以对mybatis的工作方式窥斑见豹(参考:《MyBatis————基础知识》)。 本片博客针对Mybatis内部工作原理进行阐述。 一、Mybatis工作原理图 mybatis 原理图如下所示: 二、工作原理解析 mybatis应用程序通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件(也可以用...

进化的深山猿 5556

MyBatis核心流程以及工作原理

本篇文章介绍了MyBatis的核心对象和工作原理,以及整合log4j日志框架、基于xml配置实现CRUD功能。

weixin_45936075的博客 481

MyBatis 的工作原理解析

本文记录 Mybatis 的工作原理解析,做到知识梳理总结的作用。

m0_49692893的博客 3598

Mybatis的工作原理和执行流程

Mybatis的工作原理和执行流程 什么是Mybatis? ​ MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 一、Mybatis工作原理 我们知道,JDBC有四个核心对象 DriverManager,用于

AKA_1234的博客 1972

mybatis的执行流程

mybatis的执行流程如下代码: 第一步:通过Resources加载配置好的mybatis.xml配置文件。 Resources是ibatis.io包下面的类,也就是一个io流,用于读写文件,通过getResourceAsStream把xml文件加载进来,把配置文件解析为一个流。   第二步:然后看第二句话,这句话是关键。我们首先new了一个SqlSessionFactoryBuil...

落叶飘零z的博客 4万+

MyBatis的工作原理以及核心流程介绍

MyBatis的底层操作封装了JDBC的API,MyBatis的工作原理以及核心流程与JDBC的使用步骤一脉相承,MyBatis的核心对象(SqlSession,Executor)与JDBC的核心对象(Connection,Statement)相互对应。本文的核心观点是:从JDBC入手并立足于JDBC,才能深入的理解MyBatis的工作原理以及核心流程。 1、如何掌握MyBatis的工作原理...

骏马逸动,心随你动的博客 1103

Mybatis工作原理以及核心流程

MyBatis的底层操作封装了JDBC的API,MyBatis的工作原理以及核心流程与JDBC的使用步骤一脉相承,MyBatis的核心对象(SqlSession,Executor)与JDBC的核心对象(Connection,Statement)相互对应。从JDBC入手并立足于JDBC,才能深入的理解MyBatis的工作原理以及核心流程。

whx02046的博客 528

Mybatis之工作原理

1.Mybatis的架构 1.1 Mybatis的框架分层 1.2 MyBatis的实现原理 mybatis底层还是采用原生jdbc来对数据库进行操作的,只是通过 SqlSessionFactory,SqlSession Executor,StatementHandler,ParameterHandler,ResultHandler和TypeHandler等几个处理器封装了这些过程

只会一点Java 14万+

浅谈MyBatis的工作原理以及核心流程

在行内日常开发工作中,基于Java的研发项目会大量的与数据库做交互访问。传统方式是通过JDBC访问数据库,不仅需要繁琐的手工编写很多代码,增加了工程项目的复杂度,而且存在难以维护,配置不够灵活等特点。为解决传统解决方案存在的痛点,MyBatis作为一种开源的持久化框架应运而生。Mybatis是一种基于Java编程语言的ORM(对象关系映射)框架。它使用XML或注解的方式来描述SQL语句,将Java对象和关系型数据库中的数据进行映射,以实现数据的操作和持久化。

2301_76166241的博客 1382
上一篇: Spring mvc 中的拦截器知识点
下一篇: Spring MVC的国际化
皮皮大虾
博客等级 码龄7年 6粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值