使用spring jpa有感

2021-09-01 18:46:22 字數 2198 閱讀 3465

使用 spring jpa開發有段時間了,總體感覺是

開發簡單,但是不夠靈活.

比如是根據某個字段查詢,直接寫findby欄位 名稱的語法就可以了,相比mybatis還需要寫乙個 example物件,然後建立 criteria, 這樣省去了很多時間.

但是不夠靈活,比如聯表查詢.

在查詢時,通常需要同時根據多個屬性進行查詢,且查詢的條件也格式各樣(大於某個值、在某個範圍等等),spring data jpa 為此提供了一些表達條件查詢的關鍵字,大致如下:

and --- 等價於 sql 中的 and 關鍵字,比如 findbyusernameandpassword(string user, striang pwd);

or --- 等價於 sql 中的 or 關鍵字,比如 findbyusernameoraddress(string user, string addr);

between --- 等價於 sql 中的 between 關鍵字,比如 findbysalarybetween(int max, int min);

lessthan --- 等價於 sql 中的 "<",比如 findbysalarylessthan(int max);

greaterthan --- 等價於 sql 中的">",比如 findbysalarygreaterthan(int min);

isnull --- 等價於 sql 中的 "is null",比如 findbyusernameisnull();

isnotnull --- 等價於 sql 中的 "is not null",比如 findbyusernameisnotnull();

notnull --- 與 isnotnull 等價;

like --- 等價於 sql 中的 "like",比如 findbyusernamelike(string user);

notlike --- 等價於 sql 中的 "not like",比如 findbyusernamenotlike(string user);

orderby --- 等價於 sql 中的 "order by",比如 findbyusernameorderbysalaryasc(string user);

not --- 等價於 sql 中的 "! =",比如 findbyusernamenot(string user);

in --- 等價於 sql 中的 "in",比如 findbyusernamein(collectionuserlist) ,方法的引數可以是 collection 型別,也可以是陣列或者不定長引數;

notin --- 等價於 sql 中的 "not in",比如 findbyusernamenotin(collectionuserlist) ,方法的引數可以是 collection 型別,也可以是陣列或者不定長引數;

原生sql的支援:

直接貼**:

public inte***ce reguserdao extends pagingandsortingrepository, jpaspecificationexecutor

分頁支援:

mapsearchparams = new hashmap();

searchparams.put("eq_jobname",jobname);

pageable page = pageutils.buildpagerequest(pagenumber, pagesize, sorttype,"count");

specificationspecification = pageutils.buildspecification(searchparams,commonfriend.class);

pagepagecommonfriend = commonfrienddao.findall(specification, page);

public class pageutils  else if ("asc".equals(sorttype)) 

return new pagerequest(pagenumber - 1, pagesize, sort);

}/**

* 建立動態查詢條件組合.

*/public static specification buildspecification(mapsearchparams,class cls)

}

SpringJPA常見問題

原因懶載入引起 配置openentitymanagerinviewfilter在web.xml中 web.xml org.springframework.web.context.contextloaderlistener contextconfiglocation dispatchservlet o...

springjpa(五)QueryDsl查詢細

這邊介紹個簡便方法,使用projections。首先我們還是以學校和學生表作為例子。這邊我們先建乙個studentdto public class studentdto public void setid long id public string getname public void setna...

SpringJPA 直接實現count

剛開始使用jpa時,基本都依賴 query sql 註解通過原生sql來實現 根據編號統計條數 方法一 query select count t from followerinfo t where investuserid invuserid integer findfollowernumberby...