mybatis數據層的三種實現方式(xml、@Select註解、代碼實現)

 引言

       在平常的日常java開發過程中,功能之間的交互,不可避免的要與數據庫打交道,這中間就涉及到數據層的實現問題,有xml、@Select註解、Java代碼三種實現方式,具體的可以根據自己的業務難易程度來選擇某個實現方式,接下來具體看一下每種實現方式的是如何實現的。

1:XML的 方式

     XML的方式也是項目開發中應用最多的一種方式,就是建一個Mapper的接口,然後對應建一個名字一樣的XML文件,具體的業務Sql都在xml中去實現

 

2:@Select 註解的方式

     就是將具體的業務邏輯Sql直接寫在mapper中對應的方法上

@Select("select * from dfcv_vps_plus_crm_order_dfl_vl_gps_01" +
"where 1=1" +
"and if(#{chassisNo} is null,1=1,chassis_no like CONCAT('%',#{chassisNo},'%'))" +
"and if(#{orderNo} is null,1=1,order_no like CONCAT('%',#{orderNo},'%'))")
List<CarStatus> getList(String chassisNo,String orderNo);

 然後在ServiceImpl業務實現層直接調用mapper中的方法即可

 

3:Java代碼的方式

    就是將具體的業務Sql通過mybatis提供對應的類和方式去進行實現和組裝,如and、like、or、等等,其底層原理也是通過實體類上邊對應的@TableName註解,找到是需要查詢那張表,然後根據業務中的拼接條件,就知道我們是需要and、like、or或是排序分組等等,就能拼接出一條完整的sql了

 上邊的java代碼對應的sql就是

select *  from dfcv_vps_plus_api_boxing_unlock_vehicle

where chassis_no like '%chassisNo%' or chassis_new like '%chassisNew%'and order_no like '%orderNo%'

總結:

    三種方式各有各的優勢和利弊

    xml適用於需要多表聯合查詢的複雜業務場景,sql代碼清晰明瞭,查詢邏輯也一清二楚,但是要建xml文件,寫大量的代碼sql

   @Select註解的方式適合業務不是很負責,不想寫xml文件的,可以直接在mapper方法上通過註解的方式寫sql代碼,但是不適合複雜業務,通過編碼起來不方便,不直觀

   Java代碼的方式 適合於單表的簡單業務,不用寫xml了,但是不適合複雜業務,sql的具體實現也不直觀,需要執行代碼了才知道估計拼接的sql

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章