首页 > 其他分享 >MyBatis的常见面试题

MyBatis的常见面试题

时间:2024-10-10 09:04:14浏览次数:6  
标签:面试题 映射 SQL 标签 常见 添加 sql MyBatis

MyBatis

1、什么是MyBatis

MyBatis是一款优秀的半自动化的持久层框架。支持自定义 SQL、存储过程以及高级映射。

2、MyBatis的特点?

简单、灵活、解耦、丰富的标签

3、MyBatis的核心组件

全局配置文件:MyBatis的一些全局信息,包含数据库链接信息和MyBatis运行时所需要的各种特性,以及设置和影响MyBatis行为的一些属性

核心映射文件:Mapper映射文件是一个xml格式文件,映射文件以作为根节点,再根节点中支持九个元素,分别为insert、update、select、delete等

SqlSession: SqlSession是MyBatis的关键对象,是执行持久化操作的独享,类似于JDBC中的Connection.它是应用程序与持久层之间执行交互操作的一个单线程对象。

4、MyBatis映射文件的增删改是否需要返回值类型

不需要,因为增删改返回值都是int类型,无需特别指定

5、MyBatis映射文件Mapper标签中的namespace的作用以及注意事项

作用:实现和dao层或mapper层接口的绑定 namespace称为命名空间

namespace和对应接口的全限定名且唯一

6、简要说明映射文件中id属性的作用

id属性标识唯一的标签,和对应mapper接口中的方法名一致

7、MyBatis中多参绑定的方式有哪些

使用#{param1}代表第一个参数#{param2}代表第二个参数以此类推

使用#{arg0}代表第一个参数#{arg1}代表第二个参数以此类推

在持久层方法的形参上添加@Param(name)的方式,在映射文件中使用#{name}获取

8、在MyBatis中#{param}和${param}的区别

在MyBatis中#{param}使用预编译方式,可以有效防止sql注入

${param}使用sql拼接的方式,无法防止sql注入,常用于模糊查询以及分页操作

9、MyBatis中如何获取添加自动生成的主键

两种方式:全局配置,局部配置

全局配置:

(1)在配置文件中添加如下内容:

<settings>
  <settings name="useGeneratedKeys" value="true">
</settings>

(2)在添加标签上添加keyProperty属性并指定接受的属性名

局部配置:

在添加标签上设置 useGeneratedKeys="true"和keyProperty="接收的属性名"

10、MyBatis中时间增删改查的两种方式

基于映射文件的方式

基于注解的方式

11、MyBatis核心配置文件中的常用标签

properties 加载数据库参数

settings 设置返回主键

typeAliases 设置别名

environments 设置数据源

mappers 设置映射资源

12、在MyBatis的配置文件中Settings标签可以设置哪些内容

开启二级缓存、配置日志、设置使用生成主键、设置获取值为空的字段

13、简述MyBatis中动态标签有哪些

where 当where中任意条件成立时,在sql中添加where关键字。所有条件都不成立,则不拼接where关键字,去掉第一个条件的and关键字

if 判断操作 里面使用test 如

set 当set标签中的条件成立时,拼接set关键字,如果条件不成立,则不拼接,去除最后一个符合条件的逗号

trim 可以指定前缀(perfix="")后缀(suffix="")以及去除多余的符号(suffixoverrides="")

foreach 遍历集合或列表,指定开始标识和结束标识,可以指定每次循环的拼接符号,常用于批量删除添加操作

collection :结果集
    1、如果入参是list、数组、map类型的可以直接写list、collection、array、map;
    2、或者按照参数的索引位置,arg0、arg1
item:集合中的每一个对象
index:下标
open:循环以某个字符开头
close:循环以某个字符结尾
separator:循环内容之间的分隔符,会自动去掉多余的分隔符

sql 将公共sql片段提取出来,封装在sql标签内 , include引入公共sql片段

sql片段:  <sql id=""> </sql>
使用sql片段: <include refid="对应sql片段id"/>

choose-when

<choose>
  	<when test=""></when>
	<when test=""></when>
	<otherwise></otherwise>
</choose>

14、MyBatis中时间一对一、多对多映射的核心标签是?

一对一使用association,一对多使用collection

15、请简述resultType,resultMap属性及resultMap标签的区别

resultType属性 指定结果对应的Java类型

resultMap属性 指定结果对应的映射

resultMap标签 实现实体类属性和表中字段的映射

16、log4j日志级别有哪些

log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从低到高依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。
了解:
ALL: 最低等级的,用于打开所有日志记录
DEBUG:主要用于开发过程中打印一些运行信息。
INFO: 消息在粗粒度级别上突出强调应用程序的运行过程。
WARN: 表明会出现潜在错误的情形
ERROR: 指出虽然发生错误事件,但仍然不影响系统的继续运行
FATAL: 指出每个严重的错误事件将会导致应用程序的退出。
OFF:用于关闭所有日志记录

17、MyBatis的持久层的接口的方法可以重载吗

不能,因为映射文件的id是唯一的

18、MyBatis如何解决多个参数的问题

使用#{param1} #{arg0} 在持久层接口方法形参使用@Param

19、MyBatis的常用标签有哪些

<select>
<update>
<delete>
<insert>

20、MyBatis如何调用存储过程

持久层方法没有返回值,因为存储过程没有返回值

映射文件对应SQL的执行器要修改:callable

SQL使用Call关键字调用,#{} 中使用 mode=IN/OUT 标记输入/输出参数。

存储过程的输出的结果会入参的对象

statementType:SQL执行器的类型
statement:执行普通SQL,不能防止SQL注入
prepared:执行普通SQL,可以防止SQL注入
callable:执行存储过程或者函数
useCache:使用缓存;false是不使用缓存,每次执行的时候都从数据库查询最新的
mode:指定参数是输入还是输出参数。in和out

21、MyBatis怎么防止入参为空(无效列类型:1111)

在值后面添加 jdbcType #{数据,jdbcType.类型}

22、如何解决Map映射为空的问题

在MyBatis配置文件中添加

<settings>
	<setting name="callSettersOnNulls" value="true"/>
</settings>

23、MyBatis的核心对象

SqlSessionFactory

24、MyBatis分页插件是什么?如何使用

PageHelper、PageInfo

导入PageHelper依赖

PageHelper.startPage(pageNum, pageSize);

PageInfo 分页信息:数据、上一页、下一页、当前页、页码数组、是否有上下页、是否是首尾页等

标签:面试题,映射,SQL,标签,常见,添加,sql,MyBatis
From: https://www.cnblogs.com/xlbky/p/18455583

相关文章

  • [SpringBoot] 苍穹外卖--面试题总结--上
    前言     1--苍穹外卖-SpringBoot项目介绍及环境搭建详解-CSDN博客2--苍穹外卖-SpringBoot项目中员工管理详解(一)-CSDN博客3--苍穹外卖-SpringBoot项目中员工管理详解(二)-CSDN博客4--苍穹外码-SpringBoot项目中分类管理详解-CSDN博客5--苍穹外卖-SpringBoot项目......
  • JAVA——常见算法
    查找算法基本查找从0索引开始查找是否找到packagecom.itheima.search;importjava.security.KeyStore;publicclassBasicSearchDemo1{publicstaticvoidmain(String[]args){int[]arr={23,34,54,24,43,46};intnumber=43;......
  • Redis数据库常见命令
    Redis数据库常见命令Linux启动Redis#启动服务redis-server#开启客户端redis-cli#关闭redis服务shutdown#查看服务是否运行pingRedis安全配置密码配置方式一:使用CONFIGsetrequirepass"密码"命令来设置密码。设置密码后,客户端连接redis服务就需要密码验证,否则......
  • 常见文件格式 十六进制 文件头
    常见文件格式十六进制文件头JPEG(jpg),FileHeader:FFD8FFPNG(png),FileHeader:89504E47GIF(gif),FileHeader:47494638TIFF(tif),FileHeader:49492A00WindowsBitmap(bmp),FileHeader:424DCAD(dwg),FileHeader:41433130AdobePhotoshop(psd),FileHeader:38425053Ric......
  • vue2面试题
    vue2生命周期系统自带:beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed2.一旦进入到页面或者组件,会执行哪些生命周期,顺序。beforeCreatecreatedbeforeMountmounted3.在哪个阶段有$el,在哪个......
  • MyBatis-Plus 的核心插件及其使用介绍
    MyBatis-Plus是基于MyBatis的增强工具,为简化MyBatis的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率,提供了CRUD(Create,Read,Update,Delete)操作的简化方法以及多种实用插件。以下是MyBatis-Plus的核心插件及其使用介绍:1.分页插件(PaginationInt......
  • 股票常见日线数据
    股票日线数据分析:了解股票市场的关键指标股票市场的波动是投资者决策的重要参考。日线数据提供了股票每日交易的详细情况,是分析股票走势的基础。本文将介绍日线数据中的一些关键指标,帮助投资者更好地理解股票市场。1.日线数据概览日线数据记录了股票在一个交易日内的交......
  • Chaosblade 常见场景演练
    1CPU满负载注入例如:执行测试,对3个cpu做压力测试,分别对1,2,0做压力,cpu压力da./bladecreatecpufullload --cpu-count3--cpu-list1,2,0--cpu-percent90top查看cpu状态./bladecreatecpufullload --cpu-count1--cpu-list0--cpu-percent90销毁:./......
  • 在K8S中,Pod常见调度方式有哪些?
    在Kubernetes(K8s)中,Pod的调度是一个关键过程,它决定了Pod在集群中的哪个节点上运行。K8s提供了多种调度方式,以满足不同应用的需求。以下是Pod常见的调度方式:1.默认调度(自由调度)功能:Kubernetes的默认调度器(kube-scheduler)会根据一系列内置的调度策略自动选择适合的节点。考虑因......
  • 一文通Java 锁:锁机制及锁常见问题的深入解析(Java 并发编程(偏向、轻/重量级、读写、可
    在并发编程中,锁机制是保障线程安全的核心工具。锁的类型、使用场景、以及锁引发的种种问题都是开发者在设计高并发系统时必须应对的挑战。本篇博客将围绕锁的类型、应用场景、以及常见的锁问题展开详细讨论,帮助大家深入理解Java锁机制的优缺点与其适用场景。文章目录......