Spring-data-jpa和mybatis的比较及两者的优缺点?

通过limit来获得分页记录

mybatis获得总记录数好像并不是通过执行count语句来获得的,可能是通过游标cursor的方式来获得的,通过druid监控,其只执行一条sql语句

  1. spring data jpa支持自己来写sql语句,有两种方式:

1)@Query或@Modifying配合@Query

2)通过entityManager

但要注意的是:如果自己写sql语句,那么有些拦截器可能并不能起作用,如@PreUpdate

相对来说,mybatis就比较简单,直接在mapper xml中写sql就可以了

ORM框架使用中的常见需求

  1. 后管系统做查询的时候,多个条件通过一个接口进行查询,带了哪个字段就加一段sql过滤,通过mybatis如何实现?

通过mybatis的dynamic sql是可以实现的,类似getEmpsByCondition,携带了哪个字段,查询条件就带上这个字段的值

似乎只能通过写mapper xml来做逻辑判断

spring data jpa是通过多个Predicate构造Specification创建where条件的,都是通过代码来控制逻辑的

2自动设置创建时间/更新时间

mybatis 也是使用metaObjectHandler来做?

还是通过拦截器来做?

还是只创建这两个字段,通过数据库语句来控制?

spring data jpa中有entityListener,可以不操作数据库,来实现此功能

3.字段自动加解密?

不知道如何实现自动

在mybatis中,查询出来之后做混淆处理

在spring data jpa中,使用entityManager查询出来之后做混淆处理

  1. 乐观锁功能

mybatis-plus提供了optimistic-lock plugin

spring data jpa也提供了@version注解来做

  1. 逻辑删除

mybatis-plus逻辑删除是放在DefaultSqlInjector中的

spring data jpa要自己写sql来实现逻辑删除

Original: https://www.cnblogs.com/mr-wuxiansheng/p/14491139.html
Author: Mr_伍先生
Title: Spring-data-jpa和mybatis的比较及两者的优缺点?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/541430/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 如何运营好技术相关的自媒体?

    一、前言 今天带来的分享是:如何运营好技术相关的自媒体? 这次我会从「理论」和「实践」两块去小小分享: 「理论」分享清楚里面的商业底层逻辑和框架。对于每个赚钱的案例,底层逻辑和理论…

    Java 2023年6月13日
    069
  • Ubuntu18.04下安装Docker并配置SSL证书加密远程连接

    下载安装包 containerd.io_1.4.6-1_amd64.deb docker-ce_20.10.73-0ubuntu-xenial_amd64.deb docker-c…

    Java 2023年6月7日
    080
  • Spring Boot 打包方式的选择

    新建Spring Boot后,会自带打包方式,现在一般都是打包成jar包,当然你想打包成war包也可以,我就不介绍了!本文主要想谈谈自带的打包方式和assembly打包方式,这两者…

    Java 2023年6月5日
    0120
  • WPF 静态资源(StaticResource)和动态资源(DynamicResource)

    简单的可以理解为,如果换皮肤而不重启程序,就需要用 DynamicResource <Window x:Class="WpfApp1.MainWindow&quot…

    Java 2023年6月14日
    052
  • Linux常用命令整理:文件目录管理

    据说,你要对Linux文件做的事情,98%都记录在这篇文章里了。 1.ls命令 最常见的命令,相信刚进入linux命令行界面的时候,都要用这个命令看看当前目录下都有哪些文件吧。 名…

    Java 2023年6月5日
    083
  • 校招总结

    第一次出去校招,面试比想象中困难。按理说之前面试经验不少,不该有什么问题,但校招和平时面试确实不一样,平时面试一天就面一两个,时间不是问题,聊一两个小时都可以,校招一天要面十多个,…

    Java 2023年6月16日
    058
  • PHP里的“夏令虫”

    今儿,我遇到一个大怪物 — 夏令虫 ╮(╯▽╰)╭,学艺不精,因为他掉进大坑里去了。坑是这样挖的: 以前,我为了表示当前时间的”明天”、&#82…

    Java 2023年5月29日
    071
  • Disruptor测试结果运算1亿次,耗时5503ms,吞吐量18171000/s,于是我扒开了Disruptor高性能的外衣

    能对比测试 为了直观地感受 Disruptor 有多快,设计了一个性能对比测试:Producer 发布 1 亿次事件,从发布第一个事件开始计时,捕捉 Consumer 处理完所有事…

    Java 2023年6月15日
    054
  • JAVA处理Blob大对象

    Blob对象是SQL Blob的Java语言映射。SQL Blob是一个内置类型,它可以将一个二进制大对象保存在数据库中。接口ResultSet、CallableStatement…

    Java 2023年5月29日
    062
  • 基于Gradle的Spring源码下载及构建技巧

    1 Spring 5源码下载 首先你的JDK需要升级到1.8以上版本。从Spring 3.0开始,Spring源码采用GitHub托管,不再提供官网下载链接。这里不做过多赘述,大家…

    Java 2023年6月7日
    0108
  • Nginx支持Socket转发过程详解

    序言 一网友在群中问,nginx支持socket转发吗? 实话说,我没做过socket转发,但是我知道socket跟http一样都是通过tcp或者udp通信的,我猜测啦一下ngin…

    Java 2023年5月30日
    0122
  • 【spring-boot】如何使用apollo

    文章背景 本文介绍如果在spring boot中接入apollo 官方文档:https://github.com/ctripcorp/apollo/wiki#%E4%B8%80%E…

    Java 2023年5月29日
    059
  • 微信扫码登录

    微信扫码登录 1. 使用背景 如今开发业务系统,已不是一个单独的系统。往往需要同多个不同系统相互调用,甚至有时还需要跟微信,钉钉,飞书这样平台对接。目前我开发的部分业务系统,已经完…

    Java 2023年6月13日
    0240
  • 枚举

    枚举 自定义类实现枚举 1.不需要提供set方法,因为枚举对象值通常为只读2.对枚举对象/属性使用final + static共同修饰,实现底层优化3.枚举对象名通常使用全部大写,…

    Java 2023年6月5日
    078
  • Java学习-087-自定义MANIFEST.MF 文件并打包生效

    在 src/main/resources 文件夹下创建 MANIFEST.MF 文件,文件内容如下所示: Created-By: 范丰平 Manifest-Version: 1.0…

    Java 2023年5月29日
    069
  • Netty-NIO基础

    一. NIO 基础 non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就…

    Java 2023年6月9日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球