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

关于mybatis面试题汇总

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

关于mybatis面试题汇总

1.什么是mybatis?

Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。

2.ORM是什么

ORM(Object Relational Mapping),对象关系映射,是一种为了解决关系型数据库数据与简单Java对象(POJO)的映射关系的技术。
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中。

3.mybatis属于那一层,那一层有什么作用,还有什么框架属于那一层

持久层
概念:负责将数据保存到数据库,Hibernate

4.MyBatis 与 Hibernate 有哪些不同

Mybatis 是一个半 ORM(对象关系映射)框架,Hibernate属于全自动ORM映射工具
Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是 mybatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件, 则需要自定义多套 sql 映射文件,工作量大。
Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用 hibernate 开发可以节省很多代码,提高效率。

5.mybatis对JDBC有哪些优化

(1) 使用数据库连接池对连接进行管理(protecties文件)
(2) SQL语句统一存放到配置文件(mapper文件)
(3) SQL语句变量和传入参数的映射以及动态SQL(${username}、、、)
(4) 动态SQL语句的处理(if、、、test、、、)
(5) 对数据库操作结果的映射和结果缓存
(6) SQL语句的重复(mapper文件)

6.#{}和${}的区别?

#{}是占位符,预编译处理;KaTeX parse error: Expected 'EOF', got '#' at position 22: …,字符串替换,没有预编译处理 #̲{} 可以有效的防止SQL注入…{} 不能防止SQL注入
变量替换后,#{} 对应的变量自动加上单引号 ‘’;变量替换后,${} 对应的变量不会加上单引号 ‘’

7.讲述Mapper动态代理的实现原理

Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler的invoke()方法。

8.mybatis配置文件中别名的作用

当数据库的字段与类中的属性名不一致时,通过别名改成一致

9.如何实现主键回填

1.需要在insert标签上加上 useGeneratedKeys=“true” keyProperty=“主键”
2.


  select LAST_INSERT_ID()

10.Mybatis动态sql有什么用?执行原理?有哪些动态sql?

Mybatis动态sql可以在Xml映射文件内,以标签的形式编写动态sql,执行原理是根据表达式的值 完成逻辑判断 并动态拼接sql的功能。

Mybatis提供了9种动态sql标签:trim | where | set | foreach | if | choose | when | otherwise | bind。

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

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

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