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)