實體儲存、更新時要保留操作人以及操作時間。
實體基類
/**
* @author punk
* @date 2021/02/20
*/@entitylisteners
(paasauditingentitylistener.
class
)public
abstract
class
baseentity
implements
serializable
public
void
setcreateby
(string createby)
public string getcreatebyname()
public
void
setcreatebyname
(string createbyname)
public date getcreatetime()
public
void
setcreatetime
(date createtime)
public string getupdateby()
public
void
setupdateby
(string updateby)
public string getupdatebyname()
public
void
setupdatebyname
(string updatebyname)
public date getupdatetime()
public
void
setupdatetime
(date updatetime)
public boolean getdisabled()
public
void
setdisabled
(boolean disabled)
}
審計器介面
/**
* 平台審計處理類
* @author punk
* @date 2020/05/19
*/public
inte***ce
audithandler
審計器實現
/**
* 平台審計實現類
* @author punk
* @date 2020/05/19
*/@component
public
class
paasaudithandler
implements
audithandler
/** * 實體更新前
* @param obj
*/@override
public
void
preupdate
(object obj)
/** * 普通單戶建立填充資訊
* @param be
*/public
void
markforcreate
(baseentity be)
}/**
* 普通單據更新填充資訊
* @param be
*/public
void
markforupdate
(baseentity be)
}
實體***定義
/**
* @author punk
* @date 2020/05/19
*/public
class
paasauditingentitylistener
@preupdate
private
void
preupdate
(object obj)
}
新增監聽註解@enablejpaauditing在啟動類
開發中,在某些場景下,需要對實體字段進行特殊的位運算。jpa本身不支援該功能,這裡我們結合query-dsl實現位運算。
引入依賴
>
>
com.querydslgroupid
>
>
querydsl-jpaartifactid
>
>
4.2.1version
>
dependency
>
>
>
com.querydslgroupid
>
>
querydsl-aptartifactid
>
>
4.2.1version
>
dependency
>
位運算表示式定義
/**
* 位運算表示式定義
* @author punk
* @date 2020/05/20
*/public
abstract
class
bitwiseexpressions
, )"
, arg1, arg2);}
/** * 按位或
* @param arg1
* @param arg2
* @return
*/public
static numbertemplate
bitor
(object arg1, object arg2)
, )"
, arg1, arg2);}
/** * 按位異或
* @param arg1
* @param arg2
* @return
*/public
static numbertemplate
bitxor
(object arg1, object arg2)
, )"
, arg1, arg2);}
}
資料庫綁定位運算
/**
* 向資料庫方言綁定位運算
* @author punk
* @date 2020/05/20
*/public
class
injectsqlfunctiondialectresolver
implements
dialectresolverif(
!functions.
containskey
(sql_function_bitor))if
(!functions.
containskey
(sql_function_bitxor)
)return dialect;
}}
屬性配置
spring:
jpa:
database-platform:
properties:
hibernate:
dialect_resolvers: com.zorpz.up.jpa.extend.injectsqlfunctiondialectresolver
測試
@repository
public
inte***ce
userrepository
extends
jparepository
對定義的sql進行動態拼接,比如加入租戶id,部門id或者部門人員id。
實現statementinteceptor
/**
* jpa 動態sql 攔截
* @author punk
* @date 2021/02/19
*/public
class
jpainteceptor
implements
statementinspector
else
}return s;
}
屬性配置
spring:
jpa:
properties:
hibernate:
session_factory:
statement_inspector: com.zorpz.up.jpa.interceptor.jpainteceptor
Linux常見使用命令小結
sync 將資料由記憶體同步到硬碟中。shutdown關機指令,你可以man shutdown 來看一下幫助文件。例如你可以執行如下命令關機 shutdown h 10 this server will shutdown after 10 mins 這個命令告訴大家,計算機將在10分鐘後關機,並且會...
JPA使用筆記
jpa的多表對映 一對多關係對映 預設一方放棄外來鍵維護,預設延遲載入 onetomany 作用 建立一對多的關係對映 屬性 targetentityclass 指定多的多方的類的位元組碼。cascade 指定要使用的級聯操作 fetch 指定是否採用延遲載入 orphanremoval 是否使用孤...
JPA中 Query的使用
在使用 query中,需要使用以下幾個註解 transactional 註解用於提交事務,若沒有帶上這句,會報事務異常提示 modifying clearautomatically true 自動清除實體裡儲存的資料 query value update t user set user title ...