SpringBoot使用JPA如何查詢部分字段

用過JPA的都知道,只需要繼承JpaRepository 根據(jù)Jpa的函數(shù)命名規(guī)范寫出接口中的函數(shù)斜友,不需要實(shí)現(xiàn)贰谣,底層就可以自動(dòng)解析成各種數(shù)據(jù)庫(kù)的sql語(yǔ)句,進(jìn)行增刪改查等操作薛闪。

自定義簡(jiǎn)單的查詢方法:

如findByUserName辛馆,findByUserNameOrEmail(String username, String email)等條件的屬性名稱與個(gè)數(shù)要與參數(shù)的位置與個(gè)數(shù)一一對(duì)應(yīng),JpaRepository能夠解析方法名自動(dòng)生成sql語(yǔ)句,主要的語(yǔ)法是findXXBy,readAXXBy,queryXXBy,countXXBy, getXXBy后面跟屬性名稱即可昙篙,

這種方式很簡(jiǎn)單腊状,但也有很多缺陷,不夠靈活苔可,不用擔(dān)心缴挖,Spring data jpa還支持自定義查詢語(yǔ)句。

? ? 使用 @Query注解焚辅,添加JPQL語(yǔ)句映屋,JPQL是一種面向?qū)ο蟮谋磉_(dá)式語(yǔ)言,通過類名和屬性訪問同蜻,而不是數(shù)據(jù)庫(kù)中的表名和屬性棚点,避免了不同數(shù)據(jù)庫(kù)語(yǔ)法的不同。

? ? 在@Query中添加nativeQuery = true表示使用原生的sql語(yǔ)句湾蔓,這時(shí)候就有要使用數(shù)據(jù)庫(kù)表名和字段名了瘫析。

? ? 當(dāng)涉及到刪除和修改在需要加上@Modifying.也可以根據(jù)需要添加 @Transactional對(duì)事物的支持,查詢超時(shí)的設(shè)置等默责。

使用JPA命名規(guī)范寫的函數(shù)能夠查詢出整個(gè)對(duì)象贬循,而不能只查詢出一個(gè)或幾個(gè)字段,因?yàn)橛袝r(shí)候我們只需要一個(gè)bean中的幾個(gè)字段就夠了桃序,不需要全部的杖虾。

例如用戶表,根據(jù)id查姓名葡缰,就不需要把密碼等重要信息查出來了亏掀,因?yàn)檫@些信息封裝在一個(gè)對(duì)象中返回到前端是很危險(xiǎn)的,即使沒有顯示泛释,但也可以在瀏覽器上調(diào)試看到滤愕。

原生的sql當(dāng)然可以做到,但是我們還想讓查詢出的結(jié)果封裝成一個(gè)對(duì)象怜校,以便后續(xù)的操作间影。

那么自定義的JPQL就可以實(shí)現(xiàn)這個(gè)功能了。

例如有一個(gè)用戶表茄茁,如下

現(xiàn)在需要根據(jù)部門編號(hào)查詢出這個(gè)部門所有人的用戶編號(hào)和用戶名稱魂贬,那么我們可以新建一個(gè)Model,就只有用戶編號(hào)和用戶名稱這兩個(gè)字段:

YhbModel.java 該類需要包含相對(duì)應(yīng)的getter setter方法以及構(gòu)造方法。

在用戶表的dao層可以這樣寫操作數(shù)據(jù)庫(kù)的方法:

public interface YhbDao extends JpaRepository<YHB,Integer>{

? ? //根據(jù)部門查找用戶

? ? @Transactional

? ? @Query(value = "select new com.nju.software.assessment.model.YhbModel(y.yhbh,y.yhmc) from YHB y where yhbm=?1")

? ? List<YhbModel> findYhmcByYhbm(String yhbm);

}

@Query中的JPQL意思是根據(jù)用戶部門編號(hào)yhbm查詢用戶的實(shí)體類YHB中的用戶編號(hào)yhbh和用戶名稱yhmc裙顽,并把查詢出的結(jié)果封裝成一個(gè)YhbModel對(duì)象,List<YhbModel>中類型也是YhbModel類型的付燥,之后的service層和controller層調(diào)用的時(shí)候返回類型也是List<YhbModel>。

原文鏈接:https://blog.csdn.net/jingyoushui/article/details/102875194

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末愈犹,一起剝皮案震驚了整個(gè)濱河市键科,隨后出現(xiàn)的幾起案子闻丑,更是在濱河造成了極大的恐慌,老刑警劉巖勋颖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗦嗡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡饭玲,警方通過查閱死者的電腦和手機(jī)侥祭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茄厘,“玉大人矮冬,你說我怎么就攤上這事〈喂” “怎么了欢伏?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)亿乳。 經(jīng)常有香客問我,道長(zhǎng)径筏,這世上最難降的妖魔是什么葛假? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮滋恬,結(jié)果婚禮上聊训,老公的妹妹穿的比我還像新娘。我一直安慰自己恢氯,他們只是感情好带斑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著勋拟,像睡著了一般勋磕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敢靡,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天挂滓,我揣著相機(jī)與錄音,去河邊找鬼啸胧。 笑死赶站,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纺念。 我是一名探鬼主播贝椿,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼陷谱!你這毒婦竟也來了烙博?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎习勤,沒想到半個(gè)月后踪栋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡图毕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年夷都,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片予颤。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡囤官,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛤虐,到底是詐尸還是另有隱情党饮,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布驳庭,位于F島的核電站刑顺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饲常。R本人自食惡果不足惜蹲堂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贝淤。 院中可真熱鬧柒竞,春花似錦、人聲如沸播聪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)离陶。三九已至稼虎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間招刨,已是汗流浹背渡蜻。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留计济,地道東北人茸苇。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像沦寂,于是被迫代替她去往敵國(guó)和親学密。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介: 本文由淺入深地講述了使用 Spring Data JPA 需要關(guān)注的各個(gè)方面传藏,為讀者了解和使用該框架提供了...
    AiPuff閱讀 4,493評(píng)論 1 28
  • Spring Data JPA 是 Spring 基于 ORM 框架腻暮、JPA 規(guī)范的基礎(chǔ)上封裝的一套 JPA 應(yīng)用...
    阿靖哦閱讀 1,566評(píng)論 0 4
  • 前言 第一次使用 Spring JPA 的時(shí)候彤守,感覺這東西簡(jiǎn)直就是神器,幾乎不需要寫什么關(guān)于數(shù)據(jù)庫(kù)訪問的代碼一個(gè)基...
    阿土伯已經(jīng)不是我閱讀 157,634評(píng)論 4 82
  • 2017年3月15日哭靖。 天氣陰 大風(fēng) 今天下午具垫,風(fēng)特別大,路邊的圍墻都讓大風(fēng)刮倒了试幽,風(fēng)推著車走筝蚕,大樹被風(fēng)吹...
    依銘1閱讀 250評(píng)論 0 0
  • 2018.11.5今日體驗(yàn): 不要急著讓生活 給予你所有的答案。 有時(shí)候铺坞,你要拿出耐心等等起宽。 即便你向空谷喊話, ...
    京心達(dá)_周莎閱讀 130評(píng)論 0 0