mybatis 模糊查询_Java常见面试题整理(带答案)——Mybatis

最近正在准备面试,网上查了许多的面试题,但是却都很少有相关答案。因此特意在这里整理一份题型以及我自己填充的部分答案,如果有错误,或者部分我不知道结果的题目,可以请大家私信或评论我调整。同时本内容也会不定期进行更新,为了方便检索,会在前面先写问题和问题序号,下面会再写答案。其他相关内容spring、redis、数据库等稍后会一一进行编写。

侵删。

青藤门下走狗:Java常见面试题整理(带答案)——基础篇​zhuanlan.zhihu.com
7811f117caa051012afe95ae3e6d020b.png
青藤门下走狗:Java常见面试题整理(带答案)——多线程​zhuanlan.zhihu.com
7d820e6994b1ffd0a1bd695c9e1f9c6d.png
青藤门下走狗:Java常见面试题整理(带答案)——spring​zhuanlan.zhihu.com

Mybatis问题

  1. 什么是Mybatis
  2. Mybatis优缺点
  3. Mybatis适用场景
  4. Mybatis与Hibernate区别
  5. #{}和${}区别
  6. 模糊查询
  7. dao接口的工作原理
  8. 如何给sql传递多个参数
  9. 动态sql标签有哪些
  10. xml中常见标签
  11. 一对一,一对多的关联查询

Mybatis答案

1.什么是Mybatis

Mybatis是一个半ORM框架,内部封装了JDBC,开发时只需关注SQL语句本身。程序员直接编写原生态SQL,严格控制SQL执行性能,灵活性高。

2.Mybatis优缺点

优点:
(1)可以编写原生SQL,严格控制SQL执行性能,灵活性高。
(2)SQL语句解除与代码的耦合,便于统一管理。
(3)可编写动态SQL,可以重复引用同一段SQL
(4)内部使用JDBC连接数据库,理论上只要是JDBC支持的数据库,Mybatis都支持。
(5)减少了JDBC繁琐的程序代码,全部交由内部封装。
(6)提供标签映射,支持对象与数据库表的字段映射。
缺点:
(1)SQL语句编写量大,对开发人员SQL功底有一定要求
(2)由于使用原生态SQL,因此与数据库绑定,如果切换数据库,可能存在问题。

3.Mybatis适用场景

Mybatis特点在于原生SQL,因此可以用在对性能要求比较高的地方。比如互联网行业。

4.Mybatis与Hibernate区别

(1)Hibernate是一个完全的ORM框架,对象与数据库表的映射一一对应,通过对象来操作数据库表的数据。减少了许多的SQL语句编写。
(2)Mybatis是一个半ORM框架,支持对象与数据库表的映射(但不如Hibernate那样全面与功能强大),同时也支持原生态SQL的编写,可以严格控制SQL性能。

5.#{}和${}区别

#{}:预编译处理,会将参数部分转换为"?",再通过PreparedStatement的set方法来赋值。
${}:字符串替换,只会将传入的参数替换${}位置。可能会存在SQL注入问题。

6.模糊查询

参数拼接:在参数传入前,通过Java代码为其添加'%'。如String str = param + "%";
SQL拼接:在SQL语句中,拼接字符串后再执行like。如where name like 'yang' || '%'
标签拼接:在xml标签中为参数添加'%',再将标签ID传入SQL语句中。

7.dao接口如何与xml数据配置。

每一个xml文件的<mapper>标签中都有一个namespace属性,这里配置接口的全限定名。通过这个属性可以找到xml文件对应的接口类是哪一个。然后再通过<select>、<update>、<insert>、<delete>这四种标签的ID属性,找到对应的接口方法(由于xml文件是通过id与接口方法来匹配确定sql语句对应的方法。因此在Mybatis的配置接口中,不能存在方法重载)。
实际上上面的四种标签里的sql会被解析为一个MapperStatement对象。Myabtis通过JDK的动态代理技术对接口方法进行代理,如果程序调用相关的接口方法,会转为执行对应MapperStatement中的SQL语句,并返回执行结果。

8.如何给sql传递多个参数

传入一个对象:在sql中可以指定对象的属性来进行配置。
传入多个方法参数:通过@param注解来配置每一个参数的别名,也可以指定参数下标。

9.动态sql标签有哪些

<where>、<set>、<foreach>、<if>、<choose>、<when>、<otherwise>、<bind>、<trim>

10.xml中常见标签

<resultMap>、<parameterMap>、<sql>、<include>、<selectKey>等。

11.一对一,一对多的关联查询

太晚了,明天补充完整。

https://blog.csdn.net/a745233700/article/details/80977133

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值