栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面试MyBatis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面试MyBatis

文章目录
    • 你对MyBatis的理解?
    • MyBatis的优缺点有哪些?
    • MyBatis与Hibernate有哪些不同?
    • MyBatis中的#{} 和 ${} 有什么不同?*
    • MyBatis是如何进行分页的?分页插件的原理是什么?
    • MyBatis有哪几种分页方式?
    • MyBatis逻辑分页和物理分页的区别是什么?
    • MyBatis是否支持延时加载?如果支持,它的实现原理是什么?
    • 说一下MyBatis的一级缓存和二级缓存?
    • MyBatis有哪些执行器(Excetor)?
    • MyBatis动态SQL是做什么的?都有哪些动态SQL?简述一下动态SQL的执行原理?
  • 扩展
    • ORM
    • hql语言

你对MyBatis的理解?

是什么?

  • Mybatis本是apache的一个开源项目iBatis。
  • 是java编写的优秀的持久层框架,它支持定制化 sql、存储过程以及高级映射,实现了结果集的封装。
  • mybatis避免了几乎所有的 jdbc代码和手动设置参数以及获取结果集。
  • 是一个半ORM(对象关系映射)框架,内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建Statement等繁琐的过程;
  • MyBatis可以使用简单的 XML 或注解来配置和映射原生类型、接口,将Java 的 pojo(plain old Java objects,普通老式 Java 对象)映射成数据库中的记录。

通过XML文件 或 注释的方式,将要执行的各种Statemet配置起来,并通过java对象和Statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射为java对象返回。(从执行SQL到返回Result的过程)。

MyBatis的优缺点有哪些?

优点
对于JDBC,减少了50%的代码量;
最简单的持久化框架,小巧且简单易学;
SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理,可重用;
提供XML标签,支持编写动态SQL语句(XML中使用if, else)。
提供映射标签,支持对象与数据库的ORM字段关系映射(在XML中配置映射关系,也可以使用注解)。

缺点
SQL语句的编写工作量较大,尤其是字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

MyBatis与Hibernate有哪些不同?
区别MyBatisHibernate
自动性只有基本的字段映射,需要通过手写sql来实现和管理完全可以自动生成sql
数据库移植性移植性差,由于需要手写sql移植性好,依赖于强大的映射结构和hql语言,降低了对象与数据库的耦合性。
日志系统基本记录功能较为健全
关心细节更多关注技术细节,由于其使用简单配置较为复杂,学习成本高
sql直接优化较为方便sql是自动生成的,无法直接维护sql
MyBatis中的#{} 和 ${} 有什么不同?*

动态sql是Mybatis的主要特性之一。
Mybatis提供了两种支持动态sql的语法:#{} 和 ${}

区别#{}${}
符号类型参数占位符,即预编译字符串替换符,即SQL拼接
处理处理#{}会将#{}替换为?号,调用PreparedStatement的set方法来赋值把${} 替换成变量的值
防注入问题很大程度上能防止sql注入不能防止sql注入
参数替换位置在DBMS中在DBMS外
参数解析将传入的数据都当做一个字符串,
会对传入的变量自动加一个单引号
将传入的参数直接显示生成在sql中,
不加任何引号
用$的情况–MyBatis排序使用order by,动态参数时使用$而不是#
一般用于传入数据库对象(比如表名)
sql执行过程编译好SQL语句后再去取值取值以后再去编译SQL语句
流程动态解析→预编译→执行动态解析→编译→执行
一般情况一般可以用#就别用$–
MyBatis是如何进行分页的?分页插件的原理是什么? MyBatis有哪几种分页方式? MyBatis逻辑分页和物理分页的区别是什么? MyBatis是否支持延时加载?如果支持,它的实现原理是什么? 说一下MyBatis的一级缓存和二级缓存? MyBatis有哪些执行器(Excetor)? MyBatis动态SQL是做什么的?都有哪些动态SQL?简述一下动态SQL的执行原理? 扩展 ORM

ORM = 对象关系映射。
ORM = Object Relational Mapping对象关系映射,就是把数据库表和实体类及实体类的属性对应起来,让开发者操作实体类就可以实现操作数据库表;
封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动、建立连接等复杂过程。

hql语言

hql语言 = hibernate query language的缩写,提供更加丰富灵活、更为强大的查询能力。sql查询的是表和表中的列;hql查询的是对象与对象中的属性。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008194.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号