spring boot中nativeQuery的用法

Springboot入門介紹

spring boot就是一個大框架裡面包含瞭許許多多的東西,其中spring就是最核心的內容之一,當然就包含spring mvc。
spring mvc 是隻是spring 處理web層請求的一個模塊。

因此他們的關系大概就是這樣:
spring mvc < spring <springboot。

Spring框架概述

什麼是Spring

Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是為瞭解決企業級應用開發的復雜性而創建的,使用Spring可以讓簡單的JavaBean實現之前隻有EJB才能完成的事情。但是Spring不僅僅局限於服務器端開發,任何Java應用都能在簡單性、可測試性和松耦合性等方面從Spring中獲益。

nativeQuery = true的作用

當語句中有 nativeQuery = true時, @Query中的sql語句可以為自己手寫的原生sql,並且寫的原生sql是可以執行的,例如:

    @Query(value = "select u.username,u.password from t_user u where u.username = ?1 and u.password = ?2", nativeQuery = true)
    List<User> findByZH(String username, String password);

當執行@Query時,會將該”select u.username,u.password from t_user u where u.username = ?1 and u.password = ?2″拷貝到數據庫,並填充占位符。但是執行語句時,有一個要求就是語句中的表名(t_user)和字段名(username,password)必須為數據庫中的表名和字段名,

當沒有nativeQuery = true時,@Query中value值的sql語句就隻能按照規范來寫。否則就會報錯

 Error creating bean with name ‘userMapper’ defined in com.example.demo.dao.UserMapper defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar

規范就是:表名必須是所寫的實體類名,字段名也必須是實體類中的自定義的變量名,例如:

@Query(value = "select u.userName from User u where u.userName = ?1")
    List<User> findByUserName(String username);

到此這篇關於spring boot中nativeQuery的作用的文章就介紹到這瞭,更多相關spring boot中nativeQuery內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: