Mybatis-面试题

Mybatis 的缓存

Mybatis中 有一级缓存二级缓存

  • 一级缓存的作用域是在一个sqlSession中,当一个sqlSession结束后该sqlSession的缓存也就不存在了,默认是开启的
    缺点: 作用域小 命中率极低
  • 二级缓存的作用域是针对一个mapper进行缓存的默认也是开启的 需要在mapper的xml文件中添加标签才会使用到 二级缓存;
    二级缓存默认的实现类是 org.apache.ibatis.cache.impl.PerpetualCache 默认实现是是(HashMap)本地缓存不支持分布式缓存,在分布式服务的情况下开启二级缓存会出现脏读的情况;

Mybatis缓存的查询顺序

二级缓存->一级缓存 -> 数据库

Mybatis 的一/二级缓存在集群部署的方式中会存在那些问题以及怎么解决

在集群部署中使用一级/二级缓存 会发生脏读的情况;
拿二级缓存来说 服务部署多个节点 节点A,节点B,节点C三个阶段开启二级缓存,缓除是在非查询的操作中才会进行清除,当节点A 进行数据操作 清除缓存只是清除了节点A的缓存 节点B、C都是没有清除的 这个时候 B、C 执行查询操作还是会查到缓存的数据,会出现脏读的情况;
如何解决呢:可以使用redis替代二级缓存有两种方式,
一种是mybatis支持自定义缓存 实现Cache接口就可以

<cache type="自定义的缓存类"/>

第二种是 依赖 mybatis-redis 配置

<cache type="org.mybatis.caches.redis.RedisCache"/>
weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
weixin102旅游社交微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
以下是一些可能的 Mybatis-plus 面试题: 1. 什么是 Mybatis-plus? Mybatis-plus 是基于 Mybatis 的增强工具,简化了 Mybatis 的开发流程,提供了许多方便的功能,如自动生成代码、注解支持、通用 CRUD 操作等。 2. Mybatis-plus 的优势是什么? Mybatis-plus 有以下优势: - 简化开发流程,提高开发效率。 - 提供了许多方便的功能,如自动生成代码、注解支持、通用 CRUD 操作等。 - 提供了一些实用的插件,如分页插件、性能分析插件等。 - 支持 Lambda 表达式,可以更方便地编写条件查询。 3. Mybatis-plus 的架构是什么样的? Mybatis-plus 的架构包括以下组件: - Entity:实体类,对应数据库中的表。 - Mapper:数据访问层,与数据库交互的接口。 - Service:业务逻辑层,处理业务逻辑。 - Controller:控制层,接收请求并调用 Service 处理请求。 4. Mybatis-plus 的注解有哪些? Mybatis-plus 支持以下注解: - @TableName:指定实体类对应的数据库表名。 - @TableId:指定实体类的主键属性。 - @TableField:指定实体类属性对应的数据库列名。 - @Version:指定实体类的乐观锁属性。 5. Mybatis-plus 如何实现分页查询? Mybatis-plus 提供了一个分页插件,可以方便地实现分页查询。具体实现步骤如下: - 添加分页插件依赖。 - 在 Mybatis 配置文件中配置分页插件。 - 在 Mapper 接口中添加查询方法,并使用 Page 类作为参数。 - 在 Service 层中调用 Mapper 接口的查询方法,传入 Page 对象。 6. Mybatis-plus 如何实现条件查询? Mybatis-plus 支持 Lambda 表达式,可以更方便地编写条件查询。具体实现步骤如下: - 在实体类中定义查询条件属性。 - 在 Mapper 接口中添加查询方法,并使用 LambdaQueryWrapper 类构建查询条件。 - 在 Service 层中调用 Mapper 接口的查询方法,传入 LambdaQueryWrapper 对象。 7. Mybatis-plus 如何实现自动生成代码? Mybatis-plus 提供了一个代码生成器,可以方便地生成 Entity、Mapper、Service 和 Controller 等代码。具体实现步骤如下: - 添加代码生成器依赖。 - 在配置文件中配置代码生成器相关信息。 - 运行代码生成器,生成代码。 8. Mybatis-plus 如何实现多表关联查询? Mybatis-plus 支持多表关联查询,可以使用 JoinWrapper 类进行关联查询。具体实现步骤如下: - 在 Mapper 接口中添加查询方法,并使用 JoinWrapper 类构建关联查询条件。 - 在 Service 层中调用 Mapper 接口的查询方法,传入 JoinWrapper 对象。 9. Mybatis-plus 如何实现乐观锁? Mybatis-plus 支持乐观锁,可以使用 @Version 注解指定乐观锁属性。具体实现步骤如下: - 在实体类中添加 @Version 注解。 - 在 Mapper 接口中添加更新方法,使用 UpdateWrapper 类构建更新条件。 - 在 Service 层中调用 Mapper 接口的更新方法,传入 UpdateWrapper 对象。 10. Mybatis-plus 如何进行性能优化? Mybatis-plus 的性能优化可以从以下方面入手: - 使用缓存,减少数据库访问次数。 - 合理使用分页插件,避免一次查询过多数据。 - 避免使用大量嵌套查询。 - 使用索引优化查询效率。 - 合理使用数据库连接池,避免频繁创建连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一介草民丶

谢谢老板的一分钱

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

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

打赏作者

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

抵扣说明:

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

余额充值