6数据层相关框架-基本

news2024/12/29 13:10:55

MyBatis常见面试问题,以及和hibernate 的区别等_mybatis和hiberbate区别面试_my_styles的博客-CSDN博客*1、什么是MyBatis?*答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。*2、讲下MyBatis的缓存*答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置*3、Mybatis是如何进行分页的?分页插件的原理是什么?*答:1)Mybatis使用RowBounds对象进行分页_mybatis和hiberbate区别面试https://blog.csdn.net/qq_36961226/article/details/112802767

*9、MyBatis与Hibernate有哪些不同?*

答:

1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。

2)Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

3)Hibernate  对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的缺点是学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。

总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。

问题:怎么学习Hibernate?

11、MyBatis

#myabtis和mybatisplus

Mybatis和Mybatis Plus都是Java语言中的ORM框架,用于简化数据库操作。其中,Mybatis是一个轻量级的ORM框架,它通过XML或注解的方式将Java对象映射到数据库表中;而Mybatis Plus则是在Mybatis的基础上进行了封装,提供了更加便捷的操作方式和更加强大的功能。

相比于Mybatis,Mybatis Plus具有以下优点:
1. 提供了更加便捷的CRUD操作,例如自动生成SQL语句、自动分页等;
2. 提供了更加强大的查询功能,例如Lambda表达式查询、条件构造器等;
3. 提供了更加丰富的插件机制,例如性能分析插件、乐观锁插件等。

*myabtis和mybatisplus面试题

好的,请问您的问题是关于MyBatis和MyBatis Plus的面试题,还是您想了解这两个框架的区别和使用场景呢?

如果是前者,我可以为您提供一些常见的MyBatis和MyBatis Plus面试题:

1. MyBatis中#{}和${}的区别是什么?
2. MyBatis中如何进行分页查询?
3. MyBatis中如何进行一对多和多对多的关联查询?
4. MyBatis Plus中的Wrapper是什么?有哪些常用的Wrapper?
5. MyBatis Plus中如何进行分页查询?
6. MyBatis Plus中如何进行一对多和多对多的关联查询?

如果是后者,我可以为您简单介绍一下这两个框架的区别和使用场景:

MyBatis是一个半自动化的ORM框架,它通过XML或注解的方式将Java对象映射到数据库表中,提供了灵活的SQL编写方式和强大的动态SQL支持,但需要手动编写大量的SQL语句。

MyBatis Plus是在MyBatis基础上进行了封装和扩展,提供了更加便捷的CRUD操作、强大的条件构造器、代码生成器等功能,可以大大提高开发效率。但相对于MyBatis来说,MyBatis Plus的灵活性可能会稍有降低。

使用场景上,如果您的项目需要进行复杂的SQL编写和动态SQL拼接,或者您对ORM框架的灵活性有较高的要求,那么可以选择MyBatis;如果您的项目需要进行大量的CRUD操作,或者您对开发效率有较高的要求,那么可以选择MyBatis Plus。

*关于Mybatis和Mybatis Plus的常见面试题。

1. Mybatis和Mybatis Plus有什么区别?

Mybatis是一个基于Java的持久层框架,它通过XML或注解的方式将Java对象映射到数据库中的数据。而Mybatis Plus是在Mybatis的基础上进行了封装,提供了更加便捷的操作数据库的方式,例如自动生成代码、分页查询、条件构造器等。

2. Mybatis Plus的主键生成策略有哪些?

Mybatis Plus提供了多种主键生成策略,包括:

- 自增主键:使用数据库自增长字段作***一ID。
- 分布式全局唯一ID:使用美团Leaf算法生成分布式全局唯一ID。

3. Mybatis Plus的分页查询怎么实现?

Mybatis Plus提供了Page类来实现分页查询,具体步骤如下:

- 创建Page对象,并设置当前页码和每页显示数量。
- 调用mybatis plus提供的selectPage方法,传入Page对象和查询条件。
- 将查询结果封装到Page对象中,返回给前端。

*21、模糊查询like语句该怎么写*

答:

1)在java中拼接通配符,通过#{}赋值

2)在Sql语句中拼接通配符 (不安全 会引起Sql注入)

*MyBatis 中 #{}和 ${}的区别是什么?
#{}是预编译处理,${}是字符替换。 在使用 #{}时,MyBatis 会将 SQL 中的 #{}替换成“?”,配合 PreparedStatement 的 set 方法赋值,这样可以有效的防止 SQL 注入,保证程序的运行安全。


*MyBatis 有几种分页方式?
分页方式:逻辑分页和物理分页。
逻辑分页: 使用 MyBatis 自带的 RowBounds 进行分页,它是一次性查询很多数据,然后在数据中再进行检索。
物理分页: 自己手写 SQL 分页或使用分页插件 PageHelper,去数据库查询指定条数的分页数据的形式。


*MyBatis 分页插件的实现原理是什么?
分页插件的基本原理是使用 MyBatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL,根据 dialect 方言,添加对应的物理分页语句和物理分页参数。
*MyBatis 逻辑分页和物理分页的区别是什么?
逻辑分页是一次性查询很多数据,然后再在结果中检索分页的数据。这样做弊端是需要消耗大量的内存、有内存溢出的风险、对数据库压力较大。
物理分页是从数据库查询指定条数的数据,弥补了一次性全部查出的所有数据的种种缺点,比如需要大量的内存,对数据库查询压力较大等问题。

*说一下 MyBatis 的一级缓存和二级缓存?
一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,它的声明周期是和 SQLSession 一致的,有多个 SQLSession 或者分布式的环境中数据库操作,可能会出现脏数据。当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认一级缓存是开启的。
二级缓存:也是基于 PerpetualCache 的 HashMap 本地缓存,不同在于其存储作用域为 Mapper 级别的,如果多个SQLSession之间需要共享缓存,则需要使用到二级缓存,并且二级缓存可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态)。
开启二级缓存数据查询流程:二级缓存 -> 一级缓存 -> 数据库。
缓存更新机制:当某一个作用域(一级缓存 Session/二级缓存 Mapper)进行了C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现即时沟通与协作的全功能IM即时通讯系统

在当今竞争激烈的商业环境中,高效的沟通和协作成为企业取得成功的关键。在过去,电子邮件和电话等传统工具是企业之间进行沟通和协作的重要手段,然而,随着科技的发展和社交化的趋势,IM即时通讯系统正逐渐成为企业协作的…

虹科方案 | 虹科ATTO 4K/8K以太网解决方案

一、方案背景 以太网为中小型媒体制作工作室提供经济高效的共享存储解决方案。尽管 10GbE 继续在 4K 工作流程中发挥重要作用,但 8K 等新格式需要额外的带宽。 为了使您的环境适应未来的新制作格式,需要一种更强大、低延迟的连接技术,一种足…

外卖点餐小程序源码 扫码点餐小程序源码

外卖点餐小程序源码 扫码点餐小程序源码 吃饭点外卖,坐车靠窗边,睡觉侧着身,洗澡要放歌,随时随地要自拍.......这些俨然早已成为我们当代新青年的真实生活写照。 近年来外卖行业蓬勃发展,外卖小哥走街串巷&#xff0…

FastAPI学习-26 并发 async / await

前言 有关路径操作函数的 async def 语法以及异步代码、并发和并行的一些背景知识 async 和 await 关键字 如果你正在使用第三方库,它们会告诉你使用 await 关键字来调用它们,就像这样: results await some_library()然后,通…

竞赛 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 人脸识别系统 该项目…

JVM第三讲:JVM 基础-字节码的增强技术详解

JVM 基础-字节码的增强技术详解 本文是JVM第三讲,JVM 基础-字节码的增强技术。在上文中,着重介绍了字节码的结构,这为我们了解字节码增强技术的实现打下了基础。字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术…

CV计算机视觉每日开源代码Paper with code速览-2023.10.12

精华置顶 墙裂推荐!小白如何1个月系统学习CV核心知识:链接 点击CV计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【目标检测】A Novel Voronoi-based Convolutional Neura…

二叉树题目:二叉树寻路

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树寻路 出处:1104. 二叉树寻路 难度 5 级 题目描述 要求 在一个无限的二叉树上,每个结点都有两个子结点,结…

logicFlow 流程图编辑工具使用及开源地址

一、工具介绍 LogicFlow 是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow 支持前端研发自定义开发各种逻辑编排场景,如流程图、ER 图、BPMN 流程等。在工作审批配置、机器人逻辑编排、无…

玩转Linux Shell Terminal Tmux

一、Shell编程☘️ 1. Shell指令快捷操作 1. echo # 系统指令 $ echo $(pwd) # 对于系统自带的pwd,此处不能写echo $pwd# 自定义变量 $ foo$(pwd) $ echo $foo # 不同于pwd,对于自定义的foo,不能用$(foo)2. !! # 假设你先执行了以下原本…

JOSEF约瑟 矿用一般型选择性漏电继电器 LXY2-660 Φ45 JKY1-660

系列型号: JY82A检漏继电器 JY82B检漏继电器 JY82-380/660检漏继电器 JY82-IV检漏继电器 JY82-2P检漏继电器 JY82-2/3检漏继电器 JJKY检漏继电器 JD型检漏继电器 JY82-IV;JY82J JY82-II;JY82-III JY82-1P;JY82-2PA;JY82-2PB JJB-380;JJB-380/660 JD-12…

Generics/泛型, ViewBuilder/视图构造器 的使用

1. Generics 泛型的定义及使用 1.1 创建使用泛型的实例 GenericsBootcamp.swift import SwiftUIstruct StringModel {let info: String?func removeInfo() -> StringModel{StringModel(info: nil)} }struct BoolModel {let info: Bool?func removeInfo() -> BoolModel…

解析Moonbeam的安全性、互操作性和市场竞争力

Moonbeam依托Polkadot Substrate框架构建,用Rust程序设计语言创建的智能合约区块链平台,在继承Polkadot安全性的基础上为项目提供以太坊虚拟机(EVM)的兼容性和原生的跨链互操作性优势。Moonbeam的EVM兼容性表示开发者无需学习Subs…

LeetCode-102-二叉树的层序遍历

题目描述: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 题目链接:LeetCode-102-二叉树的层序遍历 解题思路: 使用队列 先进先出的特点存储每次遍…

spring 通过有参构造方法注入

1.先写一个有参构造方法 2.给构造方法里面的属性 name 赋值 lisi 3.测试

[ROS2系列] ubuntu 20.04测试rtabmap 3D建图(二)

接上文我们继续 如果我们要在仿真环境中进行测试&#xff0c;需要将摄像头配置成功。 一、配置位置 sudo vim /opt/ros/foxy/share/turtlebot3_gazebo/models/turtlebot3_waffle/model.sdf 二、修改 <joint name"camera_rgb_optical_joint" type"fixed&…

【数据库】Sql Server数据迁移,处理自增字段赋值

给自己一个目标&#xff0c;然后坚持一段时间&#xff0c;总会有收获和感悟&#xff01; 在实际项目开发中&#xff0c;如果遇到高版本导入到低版本&#xff0c;或者低版本转高版本&#xff0c;那么就会出现版本不兼容无法导入&#xff0c;此时通过程序遍历创建表和添加数据方式…

CRMEB多商户商城系统阿里云集群部署教程

注意: 1.所有服务创建时地域一定要选择一致,这里我用的是杭州K区 2.文件/图片上传一定要用类似oss的云文件服务, 本文不做演示 一、 创建容器镜像服务&#xff0c;容器镜像服务(aliyun.com) ,个人版本就可以 先创建一个命名空间 然后创建一个镜像仓库 查看并记录镜像公网地址…

Flink之窗口聚合算子

1.窗口聚合算子 在Flink中窗口聚合算子主要分类两类 滚动聚合算子(增量聚合)全窗口聚合算子(全量聚合) 1.1 滚动聚合算子 滚动聚合算子一次只处理一条数据,通过算子中的累加器对聚合结果进行更新,当窗口触发时再从累加器中取结果数据,一般使用算子如下: aggregatemaxmaxBy…

Unity中Shader光照模型Phong

文章目录 前言一、Phong光照模型二、图示解释Phone光照模型1、由图可得&#xff0c;R 可以由 -L 加上 P 得出2、P等于2*M3、因为 N 和 L 均为单位向量&#xff0c;所以 M 的模可以由 N 和 L得出4、得到M的模后&#xff0c;乘以 单位向量N&#xff0c;得到M5、最后得出 P 和 R 前…