MyBatis常见面试题

目录

 1.JDBC概念

2.JDBC的实质

3.什么是sql注入?

4.什么方法可以解决sql注入?

5.ORM框架是什么

6.常见的ORM模型:Mybatis和HIBERNATE

7.为什么要有ORM模型?

8.ORM映射哪些内容?

9.Mybatis和hibernate 区别(面试)

10.JDBC的弊端 

11.MyBatis 解决了jdbc 的问题(重要)

12.什么是MyBatis

13.为什么选择MyBatis(优点)

14.JDBC和MyBatis哪个好?(重要)

15.和其它持久化层技术对比

16.MyBaties生命周期(重要)

17.动态代理

18.MyBatis的增删改查

19.MyBatis获取参数值的方式

20.${} 和#{} 区别?

21.主键回填:

22.使用ResultMap原因?

23.ResultMap映射关键词

24.resultMap 结果集映射的方式

25.级联(cascade),是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率

26.一对一映射

27.一对多

28.Mybatis 是如何进行分页的?分页插件的原理是什么?

29.动态SQL

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

31.Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?

32.Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?

33.一次性插入多条数据(面试)

34.模糊查询

35.什么是缓存

36.Mybatis 的一级、二级缓存?

优秀MyBatis总结: 


 1.JDBC概念

JDBC(Java Database Connectivity):是Java访问数据库的解决方案。

2.JDBC的实质

 JDBC 的实质是一种 Java API,为 Java 程序提供连接不同关系型数据库和执行数据库操作的标准统一接口。

3.什么是sql注入?

SQL注入(SQL Injection)是一种网络安全漏洞,允许攻击者在应用程序没有正确验证或清理用户输入数据的情况下,导致攻击者能够操纵数据库查询、获取、修改和删除敏感信息。

4.什么方法可以解决sql注入?

(1)使用预编译语句(prepared Statements):如使用?占位符,并通过编程语言的库绑定参数。

(2)使用存储过程(Stored Procedures):将SQL代码预先存储在数据库中,并通过参数调用

(3)验证和清理用户输入确保用户输入不包含恶意字符或SQL关键字

(4)使用ORM工具许多ORM工具会自动处理SQL构建,减少注入风险。

5.ORM框架是什么

1.ORM模型是数据库的表和简单Java对象(简称POJO)的映射关系模型。

2.主要解决数据库数据和POJO对象的相互映射

6.常见的ORM模型:Mybatis和HIBERNATE

7.为什么要有ORM模型?

  • 因为它能提高开发效率,降低数据库操作的复杂性,增强代码的可维护性和可读性,实现跨数据库平台的兼容性,减少代码错误,便于团队协作。
  • 可以实现类和表的映射、字段和属性的映射、Java数据类型和数据库数据类型映射、对象关系映射、继承关系映射、对象生命周期管理的映射

8.ORM映射哪些内容?

1.类和表的映射在 Java 中定义的类会对应到关系型数据库中的表。例如,定义一个名为 User 的类,它可能会映射到数据库中的 user 表。

2.字段和属性的映射类中的属性会对应到表中的字段。比如,User 类中的 id、name、age 等属性,会分别映射到 user 表中的 id、name、age 字段。

3.Java 数据类型和数据库中的数据类型 Java 中的基本数据类型(如 int、String、double 等)以及引用数据类型(如自定义的类)需要与数据库中的相应数据类型(如 INT、VARCHAR、DOUBLE 等)进行映射。例如,Java 中的 int 类型通常会映射到数据库中的 INT 类型,String 类型可能映射到 VARCHAR 或 TEXT 类型。

4.对象关系的映射:处理对象之间的关联关系,如一对一、一对多、多对多等。比如,一个 Order 类与 OrderItem 类可能存在一对多的关系,在数据库中通过外键来实现这种关联,ORM 框架会负责处理这种关系的映射和数据的同步。

5.继承关系的映射 如果在 Java 中存在类的继承关系,ORM 框架需要确定如何将这种继承关系映射到数据库中。常见的策略有单表继承、每个具体类一张表、类层次表等。

6.对象的生命周期管理:包括对象的创建、读取、更新和删除操作与数据库中的插入、查询、修改和删除操作的映射。通过这些映射,ORM 框架使得开发人员能够以面向对象的方式来操作数据库,而无需直接处理底层的 SQL 语句和数据库细节。

9.Mybatis和hibernate 区别(面试)

1. Hibernate是全自动化ORM; Mybatis是半自动化ORM。

2. Hibernate简化dao层,不用考虑SQL语句的编写和结果映射,重点放在业务逻辑上; Mybatis需要手写SQL语句以及结果映射。

3. Hibernate是一个重量级的框架,内部生成SQL语句,反射操作太多,导致性能下降;            Mybatis是一个轻量级的框架,需要自己写sql语句,有较少的反射操作。

4. Hibernate 不方便做SQL优化,遇到较复杂的SQL语句需要绕过框架实现复杂, 对多字段的结构进行部分映射困难;

  Mybatis 不仅可以做SQL优化还可以SQL与Java分离,还可以自行编写映射关系, 复杂的SQL语句Mybatis效率更高

Mybatis优势: 可以进行更细致的SQL优化;容易掌握

Hibernate优势:dao层开发比mybatis简单,mybatis需要维护SQL和结果映射

        hibernate数据库移植性好

10.JDBC的弊端 

1.代码繁琐需重复编写连接、语句执行、结果集处理等代码。如每次查询都要重复一系列操作流程。

2.存在 SQL 语句硬编码降低代码可读性和可维护性,数据库结构变化时修改困难。

3.类型转换复杂从结果集获取数据时手动类型转换易出错。

4.缺乏对象映射,不能直接将数据映射为对象,手动赋值易导致数据不一致。

5.有数据库特定代码,不同数据库差异可能导致大量特定处理逻辑。

6.错误处理复杂,要捕获处理各种异常。

总之,由于这些弊端,实际开发中常使用 ORM 框架替代

11.MyBatis 解决了jdbc 的问题(重要)

1.数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。

解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。

2.Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷酷无情小美

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值