1. 程式人生 > >Spring JPA 自定義實體類和自定義sql語句多表關聯複雜子查詢

Spring JPA 自定義實體類和自定義sql語句多表關聯複雜子查詢

   最近在寫一個功能,因為不是很熟悉jpa操作,接觸時間不久,所以又習慣性地用了sql語句來查詢,主要是嫌麻煩,想返回的資料用一條資料返回來就可以了,所以就用spring  jpa寫了個自定義的實體類來裝我專門返回來的資料欄位,然後sql也有點複雜,join了幾張表,也寫了一點子查詢什麼的,估計後期要改這個sql,但是目前是為了方便,臨時寫的sql,後期資料量大的話,這個sql語句如果不優化,就不好載入了,會比較慢,然後下面講一下一些注意點,這也是踩的一些坑吧,最後再把一些圖片貼上,給各位參考參考:

    注意點: 

       1,自定義實體類的話,首先是要把這個類放到Repository尋找的model包路徑裡邊的,不然會報錯,說你新建的類不存在,建立Bean異常;

      2,自定義的實體類之後,要新建一個專門的Repository來呼叫它,一個Repository對應一個實體;

      3,@Column註解,在spring jpa中的命名預設是下劃線分隔的欄位命名,弄成駝峰形式的話,也會轉回下劃線的格式,這個挺坑的,反正我也弄了挺久,那時候不知道spring jpa有個這樣的預設情況,記得@Column的命名要與sql語句中的別名對應一樣,不然也會報錯,說找不到這個欄位;

      4,如果@Column註解,先用駝峰命名的話,就可以在配置檔案裡配置,配置一個好像是ImprovedNamingStrategy的命名配置吧,有點忘記了,然後就可以用了,可以參考別人的文章,這裡有說到:

https://blog.csdn.net/54powerman/article/details/76175482

     5,自定義的實體類,記得要有@Entity和@Id的起碼註解,不然識別不了。

   最後把我自定義的實體類和sql語句貼上來,給大家參考一下:

自定義的實體類(省略get,set):

下面是我的sql語句:

好了,就這樣,這sql其實算是湊合用的,歡迎各位大佬隨時指點,謝謝!

                                                                                                                                                                                2018年12月14日