Java面试之mybaits常见面试题

1、MyBatis是什么?

MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。

2、MyBatis的优点是什么?

小巧、学习成本低:会写SQL上手就很快。
方便维护管理:SQL不需要在Java代码中找,SQL代码可以分离出来,重用。
接近JDBC、灵活:支持动态SQL。
支持对象与数据库ORM字段关系映射。

3、MyBatis的缓存机制是怎样的?

MyBatis的缓存分为一级缓存和二级缓存。
一级缓存:默认开启,基于SqlSession。当SqlSession关闭或清空时,一级缓存将不再可用或被清空。
二级缓存:默认关闭,需要手动配置,并且实现序列化的JavaBean才能被缓存。当执行更新、删除、增加操作时,会刷新二级缓存。

4、MyBatis中#{}和${}的区别是什么?

#{}:是预编译处理,它会替换为?,并设置ParameterHandler的相应参数值。它用于防止SQL注入。
${}:是字符串替换,它会直接替换SQL中的占位符。这种方式存在SQL注入的风险,需要谨慎使用。

5、MyBatis如何进行分页查询?

MyBatis Plus提供了Page类用于分页查询。通过调用Page对象的静态方法Page page(long current, long size),可以指定当前页和每页大小,然后通过传递Page对象到查询方法中实现分页查询。

6、MyBatis如何配置和使用?

需要配置SqlMapConfig.xml作为全局配置文件,包括mybatis的运行环境等信息。
编写mapper.xml文件作为SQL映射文件,其中配置了操作数据库的SQL语句。
通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂,由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

7、MyBatis与Hibernate的区别是什么?

MyBatis是半自动的ORM框架,开发者需要编写SQL语句,而Hibernate是全自动的ORM框架,无需编写SQL语句。
MyBatis灵活性高,支持动态SQL,而Hibernate则相对固定,灵活性较低。
MyBatis适用于需求变化频繁、需要灵活操作SQL的场景,而Hibernate适用于需求稳定、变化不大的场景。

8、MyBatis的核心组件有哪些?

SqlSessionFactoryBuilder:用于构建SqlSessionFactory。
SqlSessionFactory:会话工厂,用于创建SqlSession。
SqlSession:会话对象,用于执行SQL语句。
Mapped Statement:映射语句对象,包装了mybatis配置信息及sql映射信息等。

9、MyBatis支持事务吗?

MyBatis本身并不直接提供事务管理功能,但它可以与事务管理器(如JDBC、Spring等)集成,从而支持事务。

在MyBatis中,你可以通过配置数据源和事务管理器来启用事务。当你执行一系列的数据库操作时,这些操作要么全部成功,要么全部失败,这就是事务的原子性。

例如,在Spring框架中,你可以使用@Transactional注解来声明一个方法需要事务支持。Spring会为你管理事务的边界,包括开始事务、提交事务或回滚事务。在MyBatis的Mapper接口或Service层中,你可以调用这些方法,并确保这些操作在同一个事务中执行。

此外,MyBatis也提供了SqlSession接口,它表示和数据库的一次会话。你可以通过SqlSession的commit()和rollback()方法来手动控制事务的提交和回滚。但是,在实际应用中,我们更推荐使用Spring等框架来管理事务,因为它们提供了更强大和灵活的事务管理功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/784806.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.Python4:requests

1.requests爬虫原理 (1)requests是一个python的第三方库,主要用于发送http请求 2.正则表达式 #正则表达式 import re,requests str1aceace #A(.*?)B,匹配A和B之间的值 print(re.findall(a(.*?)e,str1))import re,requests str2hello com…

Redis-Jedis连接池\RedisTemplate\StringRedisTemplate

Redis-Jedis连接池\RedisTemplate\StringRedisTemplate 1. Jedis连接池1.1 通过工具类1.1.1 连接池:JedisConnectionFactory:1.1.2 test:(代码其实只有连接池那里改变了) 2. SpringDataRedis(lettuce&#…

滑动窗口(同向的双指针)

通过 双指针的 同向移动 算法应用的场景: 满足xxx条件(计算结果,出现次数,同时包含) 最长/最短 子串 /子数组/子序列 例如:长度最小的子数组 滑动窗口 使用思路 (寻找最长) –核心…

刷题(day01)

1、leetcode485.最大连续1的个数 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1: 输入:nums [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.…

基于CentOS Stream 9平台搭建FRP内网穿透

内网穿透方法很多,本文以github上很火的frp为例 1.frp官方 文档:https://gofrp.org/zh-cn/docs/overview/ 1.1 下载 https://github.com/fatedier/frp/releases 选中合适的版本 2. 服务端(服务器)搭建frps 需要公网IP服务器 选…

假期笔记1:anaconda的安装与pycharm中的引用

1.下载安装 Download Anaconda Distribution | Anaconda 2.填个邮箱 11111.. 3.下载。有点需要时间 4.安装,双击,根据实际进行,记清安装路径 5。环境设置 conda -V 6.创建环境 conda create --name env_name conda create --na…

Qt文档阅读笔记-Queued Custom Type Example

此篇展示了使用Qt编写多线程程序。 概述 此案例创建一Block类,用于存储数据,并且在元对象系统中注册后,在多线程中进行信号与槽函数的连接中充当参数。 Block类 在元对象系统中,注册类,需要类在public部分提供默认构…

基于SSM的志愿者服务平台

基于SSM的志愿者服务平台系统主要其系统包括不同的端组成,前端主要包括系统用户管理、新闻数据管理、变幻图管理、志愿者管理、培训视频管理、志愿者项目管理、服务时长管理、交流分享管理、志愿者表彰管理。前台主要包括网站首页、培训视频、志愿者项目、交流分享、…

React+TS前台项目实战(二十六)-- 高性能可配置Echarts图表组件封装

文章目录 前言CommonChart组件1. 功能分析2. 代码详细注释3. 使用到的全局hook代码4. 使用方式5. 效果展示 总结 前言 Echarts图表在项目中经常用到,然而,重复编写初始化,更新,以及清除实例等动作对于开发人员来说是一种浪费时间…

C语言相关内容模块

C语言相关内容模块 1、函数指针定义方式 1、函数指针定义方式 函数指针的具体用法

最近点对问题(算法与数据结构设计)

课题内容和要求 最近点对问题,在二维平面上输入n个点列P。其中任一点pi(xi,yi),编写程序求出最近的两个点。使用穷举法实现,算法复杂度O(n2);优化算法,以O(nlog2n)实现这一问题 数…

阶段三:项目开发---民航功能模块实现:任务24:航空实时监控

任务描述 内 容:地图展示、飞机飞行轨迹、扇区控制。航空实时监控,是飞机每秒发送坐标,经过终端转换实时发送给塔台,为了飞机位置的精准度,传输位置的密度很大,在地图位置显示不明显。本次为了案例展示效…

AI系统的PyTorch:TextGrad框架基于文本梯度实现大语言模型AI系统自优化!

AI系统的PyTorch:TextGrad框架基于文本梯度实现大语言模型AI系统自优化! 原创 旺知识 旺知识 2024年07月07日 16:21 广东 人工智能(AI)正在经历一场范式转变,这一转变是由系统协调多个大型语言模型(LLMs&…

51 单片机[7]:计时器

一、定时器 1. 定时器介绍 51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: (1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作 &#…

【零基础】学JS之APIS(基于黑马)

喝下这碗鸡汤 披盔戴甲,一路勇往直前! 1. 什么是事件 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 2. 什么是事件监听? 就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 注…

【人工智能】—基于成都市各区(市)县租房价格预测建模研究

引言 随着城市化进程的加速,人口流动日益频繁,租房市场作为城市生活的重要组成部分,其价格波动对居民生活质量和城市经济发展具有显著影响。成都市,作为中国西部地区的经济、文化、交通和科技中心,近年来吸引了大量人…

5.Python学习:面向对象

1.面向对象和面向过程的区别 以下五子棋为例: 2.类和实例 (1)类是抽象的模板,实例是根据模板创建出来的具体的对象 (2)比如人类就是一个类,刘亦菲就是人类的一个实例 2.1 新建类和类的实例…

王老师 linux c++ 通信架构 笔记(三)安装 xftp、

(11)调整 xshell 终端的字体大小,默认字体大小是 9 : (12) 共享文件夹 hgfs 的含义: (13)安装 xftp , 傻瓜式安装,出了修改下默认安装位置。 操作…

上位机图像处理和嵌入式模块部署(mcu项目2:串口日志记录器)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 淘宝上面有一个商品蛮好玩的,那就是日志记录器。说是记录器,其实就是一个模块,这个模块的输入是一个ttl串口&am…

18.动态规划之斐波那契数列模型1

1.第N个斐波那契数 1137. 第 N 个泰波那契数 - 力扣(LeetCode) 做题流程 1. 状态表示: 这道题可以【根据题目的要求】直接定义出状态表示: dp[i] 表示:第 i 个泰波那契数的值。 2. 状态转移方程: …