import static org.mybatis.dynamic.sql.SqlBuilder.isEqualToWhenPresent;
import static org.mybatis.dynamic.sql.SqlBuilder.isIn;
import static org.mybatis.dynamic.sql.SqlBuilder.isNull;
import org.mybatis.dynamic.sql.select.MyBatis3SelectModelAdapter;
import org.mybatis.dynamic.sql.select.QueryExpressionDSL;
...
@Override
public Optional> searchEmployees(EmployeeCondition byCondition) {
QueryExpressionDSL>>.QueryExpressionWhereBuilder dsl =mapper.selectByExample()
.where(BpsnDynamicSqlSupport.bpeno, isEqualToWhenPresent(byCondition.getBpeno()))
.and(BpsnDynamicSqlSupport.alias, isEqualToWhenPresent(byCondition.getAlias()))
.and(BpsnDynamicSqlSupport.bpnme, isEqualToWhenPresent(byCondition.getBpnme()))
.and(BpsnDynamicSqlSupport.mobile1, isEqualToWhenPresent(byCondition.getMobile1()))
.and(BpsnDynamicSqlSupport.address, isEqualToWhenPresent(byCondition.getAddress()))
.and(BpsnDynamicSqlSupport.passportno, isEqualToWhenPresent(byCondition.getPassportno()));
if(EmployeeQuery.ACTIVE.equals(EmployeeQuery.valueOf(byCondition.getWorkType()))) {
dsl.and(BpsnDynamicSqlSupport.bpedy, isNull());
}else if(EmployeeQuery.TRANSFER.equals(EmployeeQuery.valueOf(byCondition.getWorkType()))) {
dsl.and(BpsnDynamicSqlSupport.deptNo, isIn("L","M"));
}
List list = dsl.build().execute();
return list==null ? Optional.empty() : Optional.of(list);
}
2019年5月6日 星期一
Mybatis dynamic sql
這次專案是對既有的DB資料來開發系統,用到 Mybatis的generator 和dynamic sql 產生mapper及sql語法(不用寫任何的xml及欄位對應) 其中selectByExample 是對所有欄位都取出,但條件是依照web UI所輸入的欄位動態產生where condition,isEqualToWhenPresent就是當參數非null才會產生該條件,另外一個需求是需透過程式的if condition來動態加上條件。這些寫法也是透過官網的範例逐一摸索出來的,給有需要的人參考看看。
訂閱:
文章 (Atom)
COVID-19 確診經歷紀實
原本以為真的是天選之人,就算先前家裡兩個小孩都確診都逃過了(可能有中獎但無症狀吧),不過就在2023年六月18日破解自認為天選之人的"心態",為什麼可以確認就是這天中獎的呢?因為在前都是居家上班,到人多的室內場所都會戴口罩,就剛好這天傍晚原本只想說要去附近的國...
-
因為使用alpine的base image,要讓OS的時區改成自己設定就需要額外安裝tzdata套件,再加上公司環境根本不能連外進行安裝,所以想在docker file設定 ENV TZ=“Asia/Taipei” 或mount volumn使用host的時區 /etc/tim...
-
案例: 收到的request資料中一個JSON格式的資料要保存,但為何不存JSON的字串就好?因為這個資料會不斷變動的,所以收到變動只要取出這個已將JSON轉成list的添加或刪除東西就好,不用再將JSON轉成list再轉回JSON存到DB去。 在Hibernate中是設定該欄...
-
公司某PC power supply壞了,過幾天換上新的後居然開不了機, 出現mkrootdev: label / not found mount : error 2 mounting ext3 .... ... Kernel panic - not syncing:Attemp...