首页 > 其他分享 >带你认识MyBatis持久层框架

带你认识MyBatis持久层框架

时间:2023-12-16 10:31:42浏览次数:35  
标签:Java 框架 映射 配置 实例 SQL MyBatis 持久

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

带你认识MyBatis持久层框架_加载

MyBatis [2]  是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。


每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。


用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。


框架架构:


(1)加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。


(2)SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。


(3)SQL执行:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。


(4)结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。

标签:Java,框架,映射,配置,实例,SQL,MyBatis,持久
From: https://blog.51cto.com/u_16102274/8850243

相关文章

  • Mybatis 完整的数据库访问过程
    Mybatis完整的数据库访问过程【SessionFactory:连接池,SqlSession:连接】在Mybatis中,SqlSession、Configuration对象以及Mapper之间的关系建立了Mybatis的整个数据访问流程。简要概述如下:通过配置文件(mybatis-config.xml)创建Configuration对象通过Configuration对象......
  • JavaWeb - Day08 - MySQL - 多表查询、事务、索引 - Mybatis - 入门
    01.MySQL-多表查询-概述数据准备#建议:创建新的数据库createdatabasedb04;usedb04;--部门表createtabletb_dept(idintunsignedprimarykeyauto_incrementcomment'主键ID',namevarchar(10)notnulluniquecomment'部门名称',......
  • 12月12日记录mybatis plus的初始学习
    今天开始mybatisplus的初始学习,首先是学习mybatisplus的引入方式需要引入下面三段代码<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency>......
  • SpringBoot+MyBatis-Plus没有扫描到Mapper的问题
    一、问题:WARN22052---[      main]ConfigServletWebServerApplicationContext: NoMyBatismapperwasfoundin'[xxx.xxx.xxxx]'package.Pleasecheckyourconfiguration.WARN22052---[      main]ConfigServletWebServerApplicationConte......
  • html 5(三)之框架标签
    iframe嵌入嵌入广告<iframesrc="网址"height=""width=""frameborder=""></iframe>与超链接target关联<ahref="httos://www.toutiao.com"target="container">头条</a><iframename=&q......
  • .net中通过定时任务框架Quartz.NET来实现定期网络状态检查
     Quartz.NET是一个用于在.NET应用程序中实现作业调度和定时任务的开源框架。它允许你在应用程序中定义和调度作业,支持复杂的调度需求,例如定时、重复、错过执行、依赖性等。下面,我将通过一个简单的实例来详细描述Quartz.NET的功能、使用方法,并提供源代码。在这个示例中,我......
  • 【Quarkus】quarkus框架获取配置的几种方式
    翻源码可以发现读取接口org.eclipse.microprofile.config.spi.ConfigSourceProvider实现类//从环境变量中读取io.smallrye.config.DotEnvConfigSourceProvider//classpath中读取application.propertiesio.quarkus.runtime.configuration.ApplicationPropertiesConfi......
  • php tp框架 自定义日志
    调用方法$file_log=['order_id'=>123,];(newLogs('log'))->infos('日志文案',$file_log);[2023-12-1415:24:13][INFO][log]{"msg":"日志文案","params":{"order_id":123},"file......
  • kubernetes_k8s框架概念梳理
    k8sk8s分为控制面(ControlPlane,master)和数据面(即Node)。控制面是K8S的大脑,组件包含:etcd数据库,负责注册服务、保存k8s配置和所有的API对象等数据scheduler负责监视pod的调度情况controller-manager负责节点、任务、端点和账户的总体调度a......
  • 开源 Serverless 框架 Laf 性能优化实践
    介绍Laf是一个完全开源的Serverless框架,Laf的Node.js运行时容器(以下简称为Runtime)是Laf的函数执行环境,依托于Express.js框架。采用容器进程常驻的方式,每一个应用对应于一个或多个容器(弹性伸缩下),底层使用了Node.js的vm模块,使用MongoDB的watch()方法来监......