每日八股day31

本系列帖子为鼠鼠复习八股巩固记忆和个人理解所写,如有错误纯属本人实力不佳,欢迎各位大佬阅读指正

1.MybatisPlus和Mybatis的区别?

Mybatis

原生MyBatis,SQL需要自己写,Mapper.xml自己定义。

优点,SQL完全可控,适合复杂多表查询。

缺点,简单CRUD也要手写大量xml、SQL,重复代码多,分页、条件构造需要自己封装。

MyBatis-Plus

在MyBatis之上封装,不需要写XML就可以完成基础CRUD。

MP核心增强能力

内置通用CRUD,BaseMapper接口,提供selectByid,insert,updateByld,deleteByld等方法,单表操作不用写任何SQL和XML。

条件构造Wrapper,QueryWrapper、LambdaQueryWrapper、用Java代码组装查询条件,不用写XML,支持where,like,in,排序,Lambda手法还可以防止字段名写错。

内置分页插件,直接调用page方法实现分页,不用自己写分页SQL、不用手写count。

代码生成器,一键生成Entity、Mapper、Service、Controller,提升开发效率。

附加能力,主键策略,逻辑删除,自动填充,乐观锁插件,开箱即用。

对比区别

底层:MP基于MyBatis,底层依旧是MyBatis,原有mapper.xml完全兼容,可以混合使用,单表用MP,复杂多表关联依旧手写MyBatisXML。

开发效率:

MyBatis,单表CRUD也要手写SQL/XML,重复代码多。

MP,单表不用写SQL,开发速度快。

SQL控制自由度:

MyBatis,SQL完全自己掌握,复杂查询友好。

MP,简单查询封装好,复杂多表,复杂join还是要回到MyBatis写xml。

适配场景:

MyBatis,复杂业务,大量多表关联,SQL优化要求高。

MP,业务以单表操作为主,追求快速开发。

2.项目中要用到原生的mybatis去查询,该怎样写?

原生MyBatis使用,需要准备全局配置文件,Mapper接口与Mapper映射文件。

先读取全局配置,用构造器去生成会话工厂,会话工厂是重量级,整个项目创建一个,多线程下是安全的。

接着打开数据库会话,注意这个会话对象是线程不安全的,不能多个线程共用。

通过会话拿到Mapper的代理对象,直接调用方法就能完成查询。

用完之后,一定要把会话关闭,释放数据库连接,一般写在finally里面,保证资源一定释放。

第一个构建器,就只是用来造工厂的工具,用完就可以丢掉。

第二个会话工厂,全局就一份线程安全。

第三个数据库会话,每次用都要新建,用完关闭,不能共享。

相关推荐
阿达和自己19 小时前
springboot学习-springboot引入MyBatis-Plus
spring boot·学习·mybatis
2603_969694851 天前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
wang_shu_mo_ran1 天前
MyBatis 从入门到进阶(一)
java·spring·mybatis
瑞雪兆丰年兮2 天前
JavaWeb-day14-SpringBootWeb原理篇
java·开发语言·spring boot·spring·bean·mybatis·javaweb
bksczm5 天前
Redis 持久化:RDB 快照与 AOF 日志
数据库·redis·mybatis
CoderYanger6 天前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
CoderYanger9 天前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
真上帝的左手11 天前
30. 技术专题-‌应用框架组件-关系型数据库-MySQL-Mybatis
数据库·分布式·mysql·中间件·mybatis
雪芽蓝域zzs11 天前
第 2 章:整合 MySQL + MyBatis,搭建数据库基础、实体类、Mapper、测试查询
数据库·mysql·mybatis
wljt11 天前
公司二-面试题
java·开发语言·mybatis