springBoot數據庫jpa+對接mybatis


1  spring Data jpa

   hibernate引領數據訪問技術,使用orm對象關系映射來進行數據庫訪問,通過模型和數據庫進行映射,通過操作對象實現對數據庫操作,把數據庫相關操作從代碼中獨立出來。隨着hibernate盛行,hibernate主導了JPA規范,即 java persistence api。jps是一個基於orm映射的標准,主要實現有hibernate,eclipselinke,openjpa等。springDataJPA是spirng data的一個子項目,提供了基於jpa的Repository接口,極大減少了數據訪問的代碼開發。

   spring boot 對jpa的自動配置,放在org.springframework.boot.autoconfigure.com.jpa下面,包含hibernate的自動配置,說明spring默認jpa的實現者是hibernate。JpaProperties里面,使用的配置是@ConfigurationProperties(prefix = "spring.jpa"),所以在配置數據庫連接屬性時以這個為開頭。在JpaBaseConfiguration里面,自動配置了transactionManager,jpaVendorAdapter,enetityMappingFactory等bean,還包含一個getPackagesToScan方法,用於掃描所有@Entity的bean。對於使用hibernate時頁面出現的會話連接關閉錯誤,也自動配置了open session in view 過濾器 OpenEntityManagerInViewIntegerceptor,非常方便。

 

   (1)配置數據庫連接 和引入mvn

  引入mvn配置,以mysql為例,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>        

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.21</version>
</dependency>

 

        通過property配置需要的數據庫參數,如:

spring.datasource.url=jdbc:mysql://10.72.218.15:3306/MerchantQrCode?characterEncoding=UTF8&socketTimeout=60000
spring.datasource.username=merchantqrcode
spring.datasource.password=dp!@BJudIZgTA
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

   (2)定義數據訪問層

    繼承JpaRepository接口,  如

 public interface ShopTypeRepository extends JpaRepository<BcQrSceneShopType,Integer> ,繼承接口后會自動注入,不需要加@configuration @bean等進行配置,可以直接@Autowired注入使用。繼承JpaRepository接口,就已經默認可以使用下面一些基礎方法:

  (3)定制查詢

    spingdata jpa 支持通過定義在repository接口中的方法名來定義查詢,例如  findByName(String name) 就會以name為列進行查詢,findByNameLike 相當於name like xxx ,其中findBy可以用find,read,query,queryBy,get,getBy 來代替。各種定義規范實例如下表:

      如果想限制數量,可以使用findFirst10ByName這種,如果要使用排序,可以使用sort對象,如 findByName("xxx",new Sort(Derection.ASC,"age")),如果想使用分頁,就用PageRequest,如findByName("xx",new PageRequest(0,10))。如果排序+分頁,就在PageRequest里面再加個sort對象參數。

2 接入mybatis 

    首先加入mybatis依賴,

    <dependency>
             <groupId>org.mybatis.spring.boot</groupId>
             <artifactId>mybatis-spring-boot-starter</artifactId>
             <version>1.1.1</version>
    </dependency>

   然后編寫dao,注意加上@Mapper,使用起來和正常mybatis一樣,然后在調用處直接注入即可。

@Mapper
public interface QrcodeDAO {

@Select("select count(1) from BC_QR_Scene")
int findCount();


@Select("select ID,Name,SceneCode from BC_QR_Scene where ID = #{id}")
QrCodeScene findById(@Param("id")int id);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM