MyBatis --教程

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

本文参考如下这篇优秀文章

http://www.yihaomen.com/article/java/302.htm


一、什么是myBatis?

myBatis是一个基于java的持久层框架,它支持普通SQL查询、支持存储过程和高级映射。它使用简单的XML或者注解来配置映射,将接口和POJOS(普通java对象)映射成数据库中的记录。

持久层:就是将数据保存到存储设备中,供以后使用。

数据持久化:就是将内存中的数据保存到磁盘加以固化,持久化的实现过程则是通过各种关系数据库来完成。

持久层框架:Hibernate和myBatis。

二、myBatis功能架构

myBatis功能架构分为三层:

1>API接口层:提供给外部开发人员使用,开发人员通过这些本地API来操纵数据库。接口层一旦接收到调用请求就会调用数据处理层来完成具体的数据处理。

2>数据处理层:负责SQL查找、SQL解析、SQL执行和执行结果映射处理。它主要的工作是根据调用请求来完成一次数据库操作。

3>基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理等。

三、框架架构详解

1>加载配置:配置信息来源于两处:一是配置文件;二是java代码的注解。它的功能是将SQL的配置信息加载成一个个mappedStatement对象存储到内存中。

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

3>SQL执行:将2>得到的SQL语句送进数据库执行,得到执行后的结果。

4>结果映射:将数据库取回的结果按照映射的配置进行转换,可以转换成hashMap、javaBean或者基本数据类型,将最终结果返回。

四、动态SQL

它是myBatis最强大的特性之一。它可以很好的解决SQL的拼接问题。

五、ORM工具思想

ORM(Object Relational Mapping,对象关系映射),它是一种程序技术,用于实现javaBean属性与数据库字段之间的转换。

orm思想

1>从配置文件(通常是xml配置文件)中得到sessionFactory

2>由sessionFactory产生session

3>在session中完成对数据的增删改查和事务提交等

4>关闭session

5>在java对象和数据库之间做mapping配置。

六、mybatis实战教程系列

//查看如上参考网址


转载于:https://my.oschina.net/u/2312022/blog/522716

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

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

相关文章

System.Text.Json 中的 JsonExtensionData

System.Text.Json 中的 JsonExtensionDataIntro最近两天在排查我们 API 的一个问题,查看源码过程中发现 System.Text.Json 里有一个有意思的 JsonExtensionData在反序列化的时候,如果反序列化的 Model 中没有对应的属性信息,这些信息就会丢失…

双向链表的删除操作

双向链表的删除操作转载于:https://www.cnblogs.com/LoveFishC/archive/2012/12/20/3845821.html

“中科院博士后当辅警”,网友却吵翻了:家里有矿?

全世界只有3.14 % 的人关注了爆炸吧知识这两天的热搜上有一位小哥哥特别引人关注有人看到了发际线有人看到了书香门第的出身更多人留意到了他的学历和身份香港大学博士、中科院博士后四川公安一名辅警↓↓↓缪元颖,四川省成都市公安局高新区分局的一名辅警&#xff…

用java写的常见排序

/** * @author Think *折半插入排序 */ public class binInsertSort { private static int a[]={22,3,43,11,99,88,34,34,33,22,11,1};public static void main(String[] args) {int []b=binInsertSort(a,0,12);for(int i=0;i<b.length;i++){System.out.print(a[i]+&quo…

浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)

我们先来简单谈谈python类中一般方法、静态方法和类方法的区别。1、类中的一般方法一般方法在定义的时候&#xff0c;需要有表示类实例的参数&#xff08;通常以self表示&#xff0c;例如def foo(self,arg1,arg2……)&#xff09;&#xff0c;一般方法不能通过类名.方法名()来调…

matlab损失函数出现nan,[译]在训练过程中loss出现NaN的原因以及可以采取的方法。...

1.梯度爆炸原因&#xff1a;在学习过程中&#xff0c;梯度变得非常大&#xff0c;使得学习的过程偏离了正常的轨迹。症状&#xff1a;观察输出日志(runtime log)中每次迭代的loss值&#xff0c;你会发现loss随着迭代有明显的增长&#xff0c;最后因为loss值太大以致于不能用浮点…

马的种类(七)

鄂伦春马<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />鄂伦春马产于大小兴安岭山区。繁殖性能好&#xff0c;在小群自由交配的情况下&#xff0c;有些母马一年产一驹。生长缓慢&#xff0c;6~7岁时才能结束生长发育期。一般在…

OAuth 2.0 的探险之旅

前言OAuth 2.0 全称是 Open Authorization 2.0, 是用于授权(authorization)的行业标准协议。OAuth 2.0 专注于客户端开发人员的简单性&#xff0c;同时为 Web 应用程序、桌面应用程序、移动设备应用等提供了特定的授权流程。它在2012年取代了 OAuth 1.0, 并且 OAuth 2.0 协议不…

SQL 分页查询语句大全即(查找第N到M条记录的方法)

SQL 分页查询语句大全即&#xff08;查找第N到M条记录的方法&#xff09; 第一种方法&#xff0c;我的原创方法 row2 表示分页行数 page1 表示页码 getnumrow*page select * from (select top row * from (select top getnum * from Newslist order by id desc) order by id …

揭开不一样的世界,这5部纪录片绝对不能错过!

纪录片一直都是增长见识又带给你力量的东西&#xff0c;你可能忙于学业、生活、工作而不能行万里路&#xff0c;但至少你还可以看纪录片&#xff0c;从一方屏幕看到整个世界。今天就为大家整理了5部高分纪录片&#xff0c;文末附领取方式&#xff0c;快收下吧~01与摩根弗里曼一…

Linux Free命令与cache和buffer的主要区别

本文是转载的&#xff0c;不知道为啥不能直接转载到51&#xff0c;所以copy了下&#xff0c;原文地址是&#xff1a;http://blog.sina.com.cn/s/blog_7a1285bb0100ziep.html free 命令相对于top 提供了更简洁的查看系统内存使用情况&#xff0c;用来显示内存的使用情况&#xf…

算术几何平均matlab,算术-几何平均数——高斯的发现

“算术-几何平均数”既不是算术平均数&#xff0c;也不是几何平均数&#xff0c;由素有“数学王子”之称的德国数学家高斯首先发现和研究。算术-几何平均数&#xff0c;当然与“算术平均数”和“几何平均数”这两个概念有很深的关系。我们知道&#xff0c;但凡一个数学概念或定…

把nc v6的源码看懂

看懂nc v6的源码&#xff01; 碧桂园全部的正式环境的补丁都在我手里。 2015-11-18 2&#xff1a;33 谢谢两位一起努力的兄弟 谢谢超哥&#xff0c;谢谢祈冰哥&#xff0c;谢谢连老师&#xff0c;陈明大哥&#xff0c;谢谢龙哥&#xff0c;珍玉&#xff0c;谢谢廖生哥&#x…

.NET Core TLS 协议指定被我钻了空子~~~

【导读】此前&#xff0c;测试小伙伴通过工具扫描&#xff0c;平台TLS SSL协议支持TLS v1.1&#xff0c;这不安全&#xff0c;TLS SSL协议至少是v1.2以上才行&#xff0c;想到我们早已将其协议仅支持v1.3&#xff0c;那应该非我们平台问题。近日&#xff0c;第三方合作伙伴再次…

Android之CheckBox复选框控件使用inelayout.xml Xml代码

linelayout.xml Xml代码<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:layout_width"match_parent" android:layout_height&quo…

linux如何挂载U盘

挂u盘之前&#xff0c;运行命令cat /proc/partitions,看看现在系统中有哪些分区。插上u盘以后&#xff0c;再次运行上述命令&#xff0c;看看多出来什么分区&#xff08;通常是sda1&#xff0c;PS由于偶是在虚拟机下装的&#xff0c;所以是sdb1). 1、插入U盘 2、输入 fdisk -…

光通信调制方式MATLAB仿真,基于LED的紫外光通信调制方式研究

赘固中文核心期刊基于&#xff2c;&#xff25;&#xff24;的紫外光通信调制方式研究何攀&#xff0c;李晓毅&#xff0c;侯倩&#xff0c;肖文林(重庆通信学院&#xff0c;重庆&#xff14;&#xff10;&#xff10;&#xff10;&#xff13;&#xff15;)摘要&#xff1a;紫…

frame buffer编程--画点功能和新增字符串代替RGBT

&#xff08;一&#xff09;&#xff1a;写在前面 这一次进行了一个比较大的迭代&#xff0c;在这里我先把相对于上一个版本的改进做一个解释&#xff1a; 1:进一步完善画点&#xff0c;增加了使用字符串代替RGBT值2:实现字符串解析出RGBT值3:增加了画圆的算法4:进一步增强了代…

这篇博士毕业论文致谢句句诛心......

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;学术志综合自小木虫、网络等&#xff0c;作者yechm AUT博士毕业论文感谢信&#xff1a;我出生的时候是一个下雪的深夜&#xff0c;我的父亲在床边生了一堆柴火&#xff0c;我的母亲躺在四周漏风的那间破屋角落的床上…

30分钟通过Kong实现.NET网关

什么是KongOpenrestry是一个基于Nginx与Lua的高性能平台&#xff0c;内部有大量的Lua库。其中ngx_lua_moudule使开发人员能使用Lua脚本调用Nginx模块。Kong是一个Openrestry程序&#xff0c;而Openrestry运行在Nginx上&#xff0c;用Lua扩展了nginx。所以可以认为Kong Openres…