范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

MyBatis的执行流程详解,值得收藏

  说到流程这个事儿,大家可能最先想到的就是富士康的流水线,标准化的分工让每道工序都如丝一般润滑,所以才成就了富士康"世界工厂"的名号。
  想当年猿小二也是众多流水线工人中的一员,每天成百上千次的重复着同一个动作;突然有一天猿小二顿悟了,他认为我不能在这里浪费青春,我要去改变世界,于是他决定学习Java,没想到这可一发不可收拾,学起Java来,如久旱逢甘霖,如鱼得水一样的轻松顺畅。
  但是好景不长,最近他就在学习MyBatis这里遇到了点小麻烦,总是搞不清楚,MyBatis是怎么一个接口、一个映射文件(写sql)就可以操作数据库了呢?它的执行流程到底是怎么样的呢?带着这样的疑问,猿小二开始了他的探索....
  说到MyBatis执行流程,估计80%的程序员可能每天都沉浸在一个接口方法、一条SQL快乐的coding中,也可能他们都在忙着陪女朋友(可能性不大,因为程序员没有女朋友),也可能是没有时间研究;也可能觉得使用起来很简单,不就是加载配置文件,执行SQL吗,soeasy;但是作为一个励志成为优秀工程师的程序猿,仅仅停留在这个层面还远远不够,它根本满足不了我们对技术的渴望。
  核心流程介绍
  我们都知道MyBtis是对JDBC的简易封装,它的出现某种程度了是为了消除所有的JDBC代码和参数的手工设置以及结果集的封装问题;不管怎样,JDBC的那一套还是不会变的,只是做了抽象、封装、归类等;所以想要理解MyBatis的执行流程,那就不得不先回顾一下JDBC的执行流程。
  JDBC执行六部走注册驱动获取Connection连接执行预编译执行SQL封装结果集释放资源
  以上就是JDBC操作数据的流程步骤,然后我看下MyBatis的执行流程图。
  MyBatis执行八步走
  上面流程就是MyBatis内部核心流程,咱们来一步步解释下,根据图中步骤,我们可以将这个执行流程分成了8个步骤。读取MyBatis的核心配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接、属性、类型别名、类型处理器、插件、环境配置、映射器(mapper.xml)等信息,这个过程中有一个比较重要的部分就是映射文件其实是配在这里的;这个核心配置文件最终会被封装成一个Configuration对象加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,映射文件是在mybatis-config.xml中加载;可以加载多个映射文件。常见的配置的方式有两种,一种是package扫描包,一种是mapper找到配置文件的位置。
  "com.mybatis.demo"/>    "xxx.xml"/>构造会话工厂获取SqlSessionFactory。这个过程其实是用建造者设计模式使用SqlSessionFactoryBuilder对象构建的,SqlSessionFactory的最佳作用域是应用作用域。
  // 2. 创建SqlSessionFactory对象实际创建的是DefaultSqlSessionFactory对象 SqlSessionFactory builder = new SqlSessionFactoryBuilder().build(inputStream);创建会话对象SqlSession。由会话工厂创建SqlSession对象,对象中包含了执行SQL语句的所有方法,每个线程都应该有它自己的 SqlSession 实例。SqlSession的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
  // 3. 创建SqlSession对象实际创建的是DefaultSqlSession对象 SqlSession sqlSession = builder.openSession();Executor执行器。是MyBatis的核心,负责SQL语句的生成和查询缓存的维护,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护SimpleExecutor -- SIMPLE 就是普通的执行器。ReuseExecutor -执行器会重用预处理语句(PreparedStatements)BatchExecutor --它是批处理执行器MappedStatement对象。MappedStatement是对解析的SQL的语句封装,一个MappedStatement代表了一个sql语句标签,如下:
  输入参数映射。输入参数类型可以是基本数据类型,也可以是Map、List、POJO类型复杂数据类型,这个过程类似于JDBC的预编译处理参数的过程,有两个属性 parameterType和parameterMap封装结果集。可以封装成多种类型可以是基本数据类型,也可以是Map、List、POJO类型复杂数据类型。封装结果集的过程就和JDBC封装结果集是一样的。也有两个常用的属性resultType和resultMap。
  我们再来看一下这个完整的执行步骤,代码如下:
  /** * Mybatis测试 */ public class MybatisTest { public static void main(String[] args) throws Exception { // 1.加载配置文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); // 2. 创建SqlSessionFactory对象实际创建的是DefaultSqlSessionFactory对象 SqlSessionFactory builder = new SqlSessionFactoryBuilder().build(inputStream); // 3. 创建SqlSession对象实际创建的是DefaultSqlSession对象 SqlSession sqlSession = builder.openSession(); // 4. 创建代理对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 5. 执行查询语句 List users = mapper.selectUserList(); // 6. 释放资源 sqlSession.close(); inputStream.close(); } }
  通过分析Mybatis的执行流程,我们可以发现它和JDBC基本大同小异,比较明显的地方就是:注册驱动获取链接的部分都抽取到了核心配置文件mybatis-config.xml中。sql语句抽取到了映射文件mapper.xml中。
  至于其他的部分,如执行sql预编译、执行查询、封装结果集等都是抽取到了其他的类中来完成这些操作。通过对JDBC执行步骤来对比分析MyBatis的执行的流程,总体上来看它们的执行步骤基本是一样的,所以大家是不是觉得MyBatis这个框架其实也挺简单的,总结下其实就是:加载解析配置文件(核心配置文件和映射文件)处理参数执行查询封装结果集
  供稿来源:课工场

饭店50一盘的炖豆腐,在家做成本不到十块,营养易吸收简单又好吃饭店50一盘的炖豆腐,在家做成本不到十块,营养易吸收,简单又好吃。日常生活中,豆腐是百姓人家常吃的食物,它一年四季都有卖,而且价格很便宜,我们这里5块钱可以买三块老豆腐,回家不管是黄瓜这样做太好吃了,不炒不凉拌简单煎一煎,上桌就扫光,真鲜脆这黄瓜这样做太好吃了,不炒不凉拌简单煎一煎,上桌就扫光,真鲜脆。俗话说一日之计在于晨,一天之中,早餐是最重要的一顿,早餐吃得好,一天心情好,现在,多数家庭都是夫妇两个带着孩子,既要天热别吃火锅了,在家做这个吃,有荤有素营养全,软嫩鲜香真入味天热别吃火锅了,在家做这个吃,有荤有素营养全,软嫩鲜香真入味。相信很多人都会为每天的一日三餐而烦恼,尤其是夏天,天气炎热,家人们的胃口都很挑剔,买些鸡鸭鱼肉来做菜吧,说太油腻,不想夏至后这菜正当季,买来擦丝加花生一起拌,酸香开胃,天热吃真爽夏至后这菜正当季,买来擦丝加花生一起拌,酸香开胃,天热吃真爽。夏至过后,天气越来越热,家人的胃口也变得难以伺候,油腻的大鱼大肉没有人想吃,清淡开胃的凉拌菜成为餐桌上的主力军,比如凉白酒勾兑又出新招,喝了这种酒也不会上头,这种酒尽量不要喝了白酒勾兑又出新招?一起来看下。常年喝酒的朋友们都知道,判断优劣酒的方法最直观的就是看喝过之后是否口干舌燥上头恶心。若是上头恶心,那必然就是劣质酒了。但是喝了不上头就真的是好酒吗?其七月茄子黄瓜都靠边站,最该多吃的菜是它,美容养颜,不吃真可惜七月茄子黄瓜都靠边站,最该多吃的菜是它,美容养颜,不吃真可惜。三伏天,热辣辣的太阳晒的人们不敢出门,那些爱美的女生们,更是怕皮肤被晒黑,早上上班后,几乎就不出公司大门了,但是这样经拍黄瓜最忌先放盐,教你这样做,黄瓜脆嫩多汁又爽口,1分钟学会拍黄瓜最忌先放盐,教你这样做,黄瓜脆嫩多汁又爽口,1分钟学会。夏天到了,相信很多人都不想吃鸡鸭鱼肉了,整天琢磨着有什么清凉爽口的凉拌菜,什么凉拌茄子,凉拌豆角,凉拌黄瓜之类的小凉菜夏季,坚持每天吃一块它,开胃健脾促进食欲降温提神,健康过三伏夏季,坚持每天吃一块它,开胃健脾促进食欲,降温提神,健康过三伏。进入七月,我们这里已经正式开启高温模式,经常38度左右的高温,吓得人们不敢出门,马路上更是烫得能把鸡蛋煮熟。这么热的怕胖的人别忘记喝这粥,多种食材简单一熬,通肠便助减肥清热解毒怕胖的人别忘记喝这粥,多种食材简单一熬,通肠便助减肥清热解毒。夏至过后,意味着炎热的夏天真正开始,这个季节,人们的口味会有很大的改变,我自己也常常食欲不振,经常没有胃口吃饭,整天就夏季这菜到处有,2元一斤营养高,胃口不好多吃点,锅中一煎真香夏季食欲不振就吃它,维C含量比番茄还高,增食欲促消化降脂减肥。随着生活水平的提高,农村建设得比城市还要美丽,一栋栋高楼规划整齐,各家各户的高楼旁边都有几个停车位,前后还有一块小小的这三样炖一锅实在太鲜了,做法很简单,每次做一盘,上桌必吃光这三样炖一锅实在太鲜了,做法很简单,每次做一盘,上桌必吃光。生活在江南水乡,丰富的水资源孕育出很多鲜美的水产品,其中有不少鱼类虾螃蟹黄鳝甲鱼等等,最多的就数鱼和虾了。夏季,人们不再
儿童画教程油画棒绘画的色彩表现花中之禽鸡冠花课程准备1。课程类型创意水粉画课程2。参考课时90分钟3。工具材料素描纸油画棒记号笔等课程构思热闹的盛夏时节,许多娇嫩的花儿都被火辣辣的太阳晒得垂下了脑袋,只有少数几种花儿还在热烈儿童画教程感受色彩的对比之美星空下绽放的向日葵课程准备1。课程类型创意水粉画课程2。参考课时90分钟3。工具材料素描纸油画棒卡纸水粉颜料等课程构思如果说有一种花儿的气质最符合夏天,那么不用说,一定是向日葵了。向日葵是种能给人带儿童画教程趣味卡通画课程神秘的海盗船课程准备1。课程类型卡通画课程2。参考课时90分钟3。工具材料彩色卡纸记号笔水彩笔水粉颜料等课程构思汹涌澎湃的大海上,从来不缺浪漫的传说。自船舶发明开始,海洋上就有了海盗的踪影,1儿童画教程油画棒绘画课程热闹的夏日池塘课程准备1。课程类型综合创意美术课程2。参考课时90分钟3。工具材料牛皮纸油画棒水彩笔等课程构思盛夏季节,羞涩的荷花也慢慢绽开了花苞,荷塘里,水草下,到处都有小青蛙的身影。小朋友们儿童画教程创意美术课程一起来搬玉米课程准备1。课程类型幼儿综合创意美术课程2。参考课时90分钟3。工具材料素描纸记号笔水彩笔课程构思天已入伏,不知不觉,已经进入了玉米成熟的季节,小朋友,你吃到今年的玉米了吗?玉米在儿童画教程走进昆虫的奇妙世界树枝上的小将军甲虫课程准备1。课程类型创意装饰画2。参考课时90分钟3。工具材料卡纸油画棒水彩笔水粉颜料等课程构思在我们多样的大自然中,生存着许许多多的小动物,有天上遨游的鸟儿,有水中游曳的鱼儿,有创意儿童画教程综合创意美术课程雏菊花儿朵朵开课程准备1。课程类型综合创意美术课程2。参考课时90分钟3。工具材料牛皮纸油画棒彩色卡纸轻粘土课程构思雏菊是一种生命力非常顽强的草本植物,在路边在野外花坛庭院,总能看到它们天真烂漫儿童画教程幼儿精品美术课程热情的沙漠课程准备1。课程类型综合创意美术课程2。参考课时90分钟3。工具材料素描纸记号笔水彩颜料课程构思茫茫大漠,烟沙浩渺,驼铃叮叮当当地响起,敲开大漠里沉闷的空气。小朋友,你有没有去过沙儿童画教程特色主题美术课程我的冰淇淋小店课程准备1。课程类型综合创意美术课程2。参考课时90分钟3。工具材料素描纸彩色卡纸记号笔水彩笔课程构思小朋友们,今年夏天,你有吃到冰淇淋吗?在炎热的夏天里,冰冰凉凉的冰激凌放进嘴里儿童画教程装饰线描与色彩搭配一盆可爱帅气的仙人掌课程准备1。课程类型综合创意美术课程2。参考课时90分钟3。工具材料素描纸牛皮纸记号笔水彩笔课程构思骄阳似火,荒芜笼罩着沙漠,就在这样极端的环境里,却有着这样一种生命力极其顽强的特儿童画教程艺术启蒙美术课程可爱的小考拉课程准备1。课程类型综合创意美术课程2。参考课时90分钟3。工具材料素描纸记号笔彩色卡纸水彩笔课程构思在遥远的南半球,有着一块神奇的大陆,那里有着其他大洲没有的许许多多古老的生物,