JpaUtils 工具类

JpaUtils 工具类
JpaUtils 封装了对 jpql , sql ,存储过程等常用的操作方法,并结合前端列表的数据格式,
可以实现少量代码即完成一次查询,并且在业务发生修改时,相比 IDEV7 改动会更少。
JpaUtils 封装了 entityManager 和事务,减少开发的重复代码量。
JpaUtils 静态工具类对数据库操作的常用功能进行完整的封装,并对 entityManager 和事
务,进行了封装,使开发时无需再引入额外代码。
JpaUtils 主要特点 (1) 无需关注 entityManager ,最快一行代码就能实现一次查询 (2) 不使用
继承,一个类内可以对多个实体进行增删改 (3) 使用简单,学习成本低 (4) 统一封装通用
AuditEntiyBean 实体,减少业务代码。
核心 api 介绍 :
(1) EntityManager getEntityManager() 获取 entityManager
(2) <T> T findById(Class<T> clazz, Serializable id) 按照主键获取实体

(3) List<T> findAll(String jpql,QueryParamLs paramLs) 按照 jpql 查询
使用 QueryParamLs 为占位符赋值,防止 sql 注入

(4) HdEzuiDatagridData findByEz(String jpql , QueryParamLs paramLs , HdQuery query)
列表用的查询, HdQuery 为 HdEzuiQueryParams 子类,高级查询,分页,排序等均
通过 HdQuery 传递

(5) HdQuery 核心方法 :

pageInfo 获取分页信息,列表查询时, jpql 的分页求总数会根据 jpql ,自动转为 select
count(*) ,满足大多数业务场景,如果且存在 count(*) 错误,就需要通过代码中给 PageInfo
的 pageHql 和 pageParams 单独设置求和语句 alias 为 jpql 别名,需要与 jpql 的别名相同
specLs 前台传过来的字段,并非主实体属性的时候,需要通过 specLs 单独匹配
如下图, orgnName 是前台属性,点击 orgnName 进行排序或者高级查询时,通过
指定 orgnName 对应的表名和字段名即可实现查询和排序
new HdQuerySpec("orgnName" , "a.authOrgn" , "orgnId")

HdQuery 继承自 HdEzuiQueryParams ,并扩展了如下一些方法,
(6) void save(Object entity) 实体 insert
(7) HdMessageCode save(HdEzuiSaveDatagridData<T> esdg) 列表上直接增删改使用
(8)

(9) void update(Object entity) 实体更新 ( 数据库表有相同主键则 update ,没相同主键的
则 insert)
(10)void remove(Class<T> clazz , Serializable id) 根据主键删除实体
(11)int execUpdate(String jpql , QueryParamLs paramLs) 针对 jpql 批量 update 和删除使
用,注 : 使用批量更新,日志无法监听到修改前台的数据变化

(12)List findBySql(String nativeSql , QueryParamLs paramLs , Class cls) 使用 sql 查询,
cls 为最后生成的实体 ( 产品不推荐使用原生 sql)
(13)Object executeProcWithResult(String procName , List<Object> paramLs) ( 产品不推荐
使用原生 sql)

相关推荐
许彰午14 分钟前
状态模式实战——Row对象的状态机
java·ui·状态模式
搬石头的马农32 分钟前
Claude Code SpringBoot开发:从0到1搭建企业级项目的6个核心Skill
java·人工智能·spring boot·后端·ai编程
西安邮电大学32 分钟前
Redis为什么快?
java·redis·后端·其他·面试
折哥的程序人生 · 物流技术专研41 分钟前
《Java 100 天进阶之路》第39篇:Java泛型方法的定义和使用
java·开发语言·后端·面试·求职招聘
土狗TuGou1 小时前
SQL内功笔记 · 第6篇:窗口函数的使用ROW_NUMBER等
java·数据库·后端·sql·mysql
Chase_______1 小时前
【Java基础核心知识点全解·09】Java 内存布局与垃圾回收详解:栈、堆、栈帧、GC Roots 与对象回收
java·开发语言
武子康1 小时前
Java-11 深入浅出 MyBatis 一级缓存详解:从原理到失效场景 Executor
java·后端
寻道码路1 小时前
LangChain4j Java AI 应用开发实战(十):Embedding 模型与文本分类 - 语义向量化
java·人工智能·ai·embedding
折哥的程序人生 · 物流技术专研1 小时前
Java 23 种设计模式:从踩坑到精通 | 抽象工厂 —— 支付/收款如何成套创建?跨平台 UI 如何一键换肤?
java·开发语言·后端·设计模式
方也_arkling1 小时前
【Java-Day11】抽象类和抽象方法
java·开发语言