jpa自定義sql的三種方式

2021-10-16 21:23:42 字數 1797 閱讀 8953

1 :在repository介面上註解@query引數

1:@query("select o from  agentinfo  o  where o.userid = ?1 and o.balance<0")

2:@query(value = "select * from fl_agentinfo a inner join(select id from fl_agentinfo where user_id = ?1 and device_wxid = ?2 order by id desc limit ?3,15) b on a.id = b.id",nativequery = true)

加上 nativequery = true 欄位名稱就要對應資料庫,可以實現稍微複雜一些的連表查詢

修改的話注意要加@modifying 和 @transactional註解

2.第二種 實現specification可以用來做一些需要過濾條件的查詢

agentinforepository.findall(newspecification()

if(stringutils.isnotempty(wxname))

query.where(predicates.toarray(newpredicate[predicates.size()]));

returnnull;

}

}, pageable);

3.使用entitymanager完全自定義的拼接sql

stringbuilder datasql = new stringbuilder("select * from fl_handlercash a inner join (select id from fl_handlercash where user_id ="+userid);

stringbuilder countsql = new stringbuilder("select count(*) from fl_handlercash where user_id ="+userid);

date starttime = null;

date endtime = null;

if (stringutils.isnotempty(starttimestr))

if (status != -1) else

}if (stringutils.isnotempty(wxid))

if (stringutils.isnotempty(devicewxid))

listhandlercashes = entitymanager.createnativequery(datasql.tostring(),handlercash.class).getresultlist();

biginteger count = (biginteger)entitymanager.createnativequery(countsql.tostring()).getsingleresult();

pagebeanpagebean = new pagebean(page+1, count.intvalue(), 0,handlercashes);

js自定義物件的三種方式

js是物件導向的程式語言。物件具有三大特徵 繼承 封裝 多型 物件包含屬性和行為。常規定義物件var person newobject 設定屬性 person.name 張三 person.age 8 設定物件的方法 person.eat function 簡單版定義物件var cat 有關該類的成...

自定義View的三種實現方式及自定義屬性使用介紹

實現自定義view的方式,從整體上看,只分為三種 組合控制項,繼承控制項,自繪控制項。然後就是根據需要來新增自定義的屬性,就這麼簡單。本文將會針對這4個方面進行詳細的講解。主要內容如下 一 組合控制項 組合控制項,顧名思義,就是將系統原有的控制項進行組合,構成乙個新的控制項。這種方式下,不需要開發者...

自定義類,三種寫法

自定義類,設定為public,方便但不安全,被他人引用而造成異常 方法1 3 class user public string name 設定為public,方便但不安全,被他人引用而造成異常 public string public void set string values if values...