发表时间:2022-03-25来源:网络
关键时刻,第一时间送达!java
阅读本文须要5分钟 底部获取全栈资源程序员
使用BatchExecutor完成批处理。web
Mybatis有三种基本的Executor执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。面试
SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完马上关闭Statement对象。sql
ReuseExecutor:执行update或select,以sql做为key查找Statement对象,存在就使用,不存在就建立,用完后,不关闭Statement对象,而是放置于Map内,供下一次使用。简言之,就是重复使用Statement对象。数据库
BatchExecutor:执行update(没有select,JDBC批处理不支持select),将全部sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每一个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理。与JDBC批处理相同。编程
做用范围:Executor的这些特色,都严格限制在S生命周期范围内。缓存
在Mybatis配置文件中,能够指定默认的ExecutorType执行器类型,也能够手动给DefaultS的建立S的方法传递ExecutorType类型参数。微信
Mybatis能够映射枚举类,不单能够映射枚举类,Mybatis能够映射任何对象到表的一列上。映射方式为自定义一个TypeHandler,实现TypeHandler的setParameter()和getResult()接口方法。session
TypeHandler有两个做用,一是完成从javaType至jdbcType的转换,二是完成jdbcType至javaType的转换,体现为setParameter()和getResult()两个方法,分别表明设置sql问号占位符参数和获取列查询结果。
虽然Mybatis解析Xml映射文件是按照顺序解析的,可是,被引用的B标签依然能够定义在任何地方,Mybatis均可以正确识别。
原理是,Mybatis解析A标签,发现A标签引用了B标签,可是B标签还没有解析到,尚不存在,此时,Mybatis会将A标签标记为未解析状态,而后继续解析余下的标签,包含B标签,待全部标签解析完毕,Mybatis会从新解析那些被标记为未解析的标签,此时再解析A标签时,B标签已经存在,A标签也就能够正常解析完成了。
Mybatis将全部Xml配置信息都封装到All-In-One重量级对象Configuration内部。在Xml映射文件中,标签会被解析为ParameterMap对象,其每一个子元素会被解析为ParameterMapping对象。
标签会被解析为ResultMap对象,其每一个子元素会被解析为ResultMapping对象。
每个、、、标签均会被解析为MappedStatement对象,标签内的sql会被解析为BoundSql对象。
一、数据库连接建立、释放频繁形成系统资源浪费从而影响系统性能,若是使用数据库连接池可解决此问题。
解决:在S.xml中配置数据连接池,使用链接池管理数据库连接。
二、Sql语句写在代码中形成代码不易维护,实际应用sql变化的可能较大,sql变更须要改变java代码。
解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。
三、向sql语句传参数麻烦,由于sql语句的where条件不必定,可能多也可能少,占位符须要和参数一一对应。
解决: Mybatis自动将java对象映射至sql语句。
四、对结果集解析麻烦,sql变化致使解析代码变化,且解析前须要遍历,若是能将数据库记录封装成pojo对象解析比较方便。
解决:Mybatis自动将sql执行结果映射至java对象。
一、 建立S
二、 经过S建立S
三、 经过s执行数据库操做
四、 调用session.commit()提交事务
五、 调用session.close()关闭会话
1.Mybatis和hibernate不一样,它不彻底是一个ORM框架,由于MyBatis须要程序员本身编写Sql语句。
mybatis能够经过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。
2.Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,很是适合对关系数据模型要求不高的软件开发。
例如互联网软件、企业运营类软件等,由于这类软件需求变化频繁,一但需求变化要求成果输出迅速。
可是灵活的前提是mybatis没法作到数据库无关性,若是须要实现支持多种数据库的软件则须要自定义多套sql映射文件,工做量大。
3.Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)若是用hibernate开发能够节省不少代码,提升效率。
可是Hibernate的学习门槛高,要精通门槛更高,并且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate须要具备很强的经验和能力才行。
总之,按照用户的需求在有限的资源环境下只要能作出维护性、扩展性良好的软件架构都是好架构,因此框架只有适合才是最好。
一、Mapper接口方法名和mapper.xml中定义的每一个sql的id相同。
二、Mapper接口方法的输入参数类型和mapper.xml中定义的每一个sql 的parameterType的类型相同。
三、Mapper接口方法的输出参数类型和mapper.xml中定义的每一个sql的resultType的类型相同。
四、Mapper.xml文件中的namespace便是mapper接口的类路径。
之后将持续为你们搜集面试题。整理的很差也但愿你们多多提出宝贵的意见。
END
更多高质量视频资源请查看《高级社区》,底部还有惊喜
公众号输入:全栈资源
另外小编还创建了资源互换微信群,群内只留300人,将不断视频资源互换,须要进入的能够扫下面二维码,加好友以后回复加群。
本群严禁伸手党和其它博主进入,谢谢,定时清理!!!

是否是很棒!!!分享一下吧,小伙伴们!!!
上一篇文章《mybatis面试题二》
是否是很棒!!!分享一下吧,小伙伴们!!!

上一篇:vue 面试题汇总
下一篇:Java面试题大汇总(下)
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14