Java复试中碰到的MyBatis难题有甚么样?

网友投稿 684 2022-11-27

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Java复试中碰到的MyBatis难题有甚么样?

1、Mybatis是怎样展开布局文档的?布局文档应用程序的原理是甚么?

答:Mybatis采用RowBounds第一类展开布局文档,它是针对ResultSet结论集继续执行的缓存布局文档,而非力学布局文档,能在SQL内直接文字带有力学布局文档的模块来顺利完成力学布局文档机能,也能采用布局文档应用程序来顺利完成力学布局文档。

布局文档应用程序的基本原理是采用Mybatis提供更多的应用程序接口,同时实现自订应用程序,在应用程序的截击方式内截击待继续执行的SQL,接着改写SQL,依照dialect官话,嵌入一一对应的力学布局文档句子和力学布局文档模块。

总括:select * from student,截击SQL后改写为:select t.* from (select * from student)t limit 0,10

2、Mybatis实时SQL是做甚么的?都有甚么样实时SQL?能详述一下实时SQL的继续执行原理不?

答:Mybatis实时SQL能让我们在XML态射文档内,以标识的方式撰写实时SQL,顺利完成逻辑判断和实时堆叠SQL的机能,Mybatis提供更多了9种实时SQL标识:trim|where|set|foreach|if|choose|when|otherwise|bind。

其继续执行原理为,采用OGNL从SQL模块第一类中计算函数的值,依照函数的值实时堆叠SQL,以此来顺利完成实时SQL的机能。

3、Mybatis是怎样将SQL继续执行结论PCB为最终目标第一类并回到的?都有甚么样态射方式?

答:第二种是采用标识,逐个定义榜上有名和第一类特性名间的态射矛盾。第三种是采用SQL列的别称机能,将列别称文字为第一类特性名,比如说T_NAME AS NAME,第一类特性名一般是name,大写,但是榜上有名不区分空格,Mybatis会忽视榜上有名空格,智能找到与之一一对应第一类特性名,你甚至能写出T_NAME AS NaMe,Mybatis那样能正常工作。

有了榜上有名与特性名的态射矛盾后,Mybatis通过散射创建第一类,同时采用散射给第一类的特性逐个函数并回到,那些找不到态射矛盾的特性,是无法顺利完成函数的。

4、Mybatis与否积极支持延后读取?如果积极支持,它的同时实现原理是甚么?

答:Mybatis仅积极支持association关连第一类和collection关连子集第一类的延后读取,association指的是面对面,collection指的是一对多查阅。在Mybatis布局文档中,能布局与否投入使用延后读取lazyLoadingEnabled=true|false。

它的原理是,采用CGLIB创建最终目标第一类的代理第一类,当初始化最终目标方式时,进入截击器方式,比如说初始化a.getB().getName(),截击器invoke()方式发现a.getB()是null值,那么就会单独传送事先保存好的查阅关连B第一类的sql,把B查阅上来,接着初始化a.setB(b),于是a的第一类b特性就积和式了,接着顺利完成a.getB().getName()方式的初始化。这是延后读取的基本原理。

当然不仅是Mybatis,几乎大部份的包括Hibernate,积极支持延后读取的原理都是那样的。

5、Mybatis的XML态射文档和Mybatis外部数据类型间的态射矛盾?

答:Mybatis将大部份XML布局信息都PCB到All-In-One新锐第一类Configuration外部。在XML态射文档中,标识会被导出为ParameterMap第一类,其每一子原素会被导出为ParameterMapping第一类。

标识会被导出为ResultMap第一类,其每一子原素会被导出为ResultMapping第一类。每一个标识均会被导出为MappedStatement第一类,标识内的SQL会被导出为BoundSql第一类。

上一篇:想要进入互联网公司的面试的技巧
下一篇:探讨一下探索式测试
相关文章

 发表评论

暂时没有评论,来抢沙发吧~