MyBatis详细面试题以及答案

一,什么是MyBatis?

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

2,MyBatis可以使用xml或者注解来配置映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置的参数以及获取结果集

二,MyBatis的优点

1,基于SQL语句编程,相对灵活,接触sql与程序代码的藕合,便于统一管理,支持写动态sql语句并可重复使用

2,减少代码量,消除了冗余代码,

3,数据库兼容能够与Spring集成

4,提供映射标签支持字段关系映射

三, MyBatis框架的缺点

1,工作量较大,字段多,关联表多

2,数据库移植性差      

四、MyBatis 框架适用场合

1,DAO层解决方案

2,对性能的要求高,或者需求量变化较多的项目

五,MyBatis 与 Hibernate 有哪些不同?

1,MyBatis它不完全是一个ORM框架,因为MyBatis需要程序员自己编写sql语句

2,MyBatis直接编写sql语句,sql执行性能,灵活度高,适合对关系数据模式要求不高的软件开发,MyBatis无法做到数据库无关性

3,Hibernate 数据库无关性好,对于关系模式要求高的软件

六、#{}和${}的区别是什么?

1,#{}预编译处理,${}是字符串替换

2,#{}防止SQL注入,提高系统安全性

七、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?

第一种:通过查询的Sql语句中定义字段名的别名,让字段明的别名和实体类的属性名一致

<select id=”selectorder” parametertype=”int” resultetype=”
me.gacl.domain.order”>
select order_id id, order_no orderno ,order_price price form
orders where order_id=#{id};
</select>

第二种通过来映射字段名和实体类属性名的一一对应的关系。

1. 什么是 MyBatisMyBatis 是一种持久化框架,它可以帮助开发人员使用 Java 语言轻松地与关系数据库进行交互。MyBatis 的主要目标是提供与 SQL 映射的简单性和灵活性。 2. MyBatis 的优点是什么? MyBatis 具有以下优点: - 灵活性:MyBatis 允许开发人员使用 SQL 映射自定义 SQL 查询,从而提高了应用程序的灵活性。 - 易于使用:MyBatis 易于使用,因为它不需要开发人员执行任何复杂的 ORM 映射。 - 易于调试:MyBatis 可以轻松地启用日志记录,从而使开发人员更容易理解和调试其应用程序。 - 性能较好:MyBatis 的性能很好,因为它可以直接使用 SQL 查询数据库,而不需要通过 ORM 映射进行转换。 3. MyBatis 中的 Mapper 是什么? Mapper 是 MyBatis 中用于定义 SQL 映射的接口。它包含了数据访问方法的定义,以及这些方法使用的 SQL 语句。Mapper 接口可以使用注解或 XML 文件来定义 SQL 映射。 4. MyBatis 中的动态 SQL 是什么? 动态 SQL 是指根据条件动态生成 SQL 查询语句。MyBatis 中的动态 SQL 支持 if/else 条件判断、foreach 循环、choose/when/otherwise 选择语句等。 5. MyBatis 中的一级缓存和二级缓存是什么? 一级缓存是指在同一个 SqlSession 中,对于同一个查询语句,MyBatis 只查询一次,并将结果缓存起来。二级缓存是指在多个 SqlSession 中,对于同一个查询语句,MyBatis 只查询一次,并将结果缓存到多个 SqlSession 中共享。二级缓存需要在配置文件中进行配置。 6. MyBatis 中的插件是什么? 插件是 MyBatis 中的一种机制,可以在执行 SQL 语句之前或之后,对其进行拦截、修改或扩展。MyBatis 插件需要实现 Interceptor 接口,并在配置文件中进行配置。 7. MyBatis 中的 #{} 和 ${} 有什么区别? #{} 是 MyBatis 中的占位符,用于防止 SQL 注入攻击,同时也可以防止 SQL 语句中的特殊字符被转义。#{} 会将传入的参数解析为一个占位符,并将其替换为一个 ? 。 ${} 是 MyBatis 中的字符拼接符号,会将传入的参数直接拼接到 SQL 语句中。使用 ${} 可能会导致 SQL 注入攻击,因此不建议使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Java各大面试题

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

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

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

打赏作者

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

抵扣说明:

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

余额充值