第一個問題:依賴包下載下傳不全
這表明:在本地倉庫中出現了依賴jar包不完整的異常。此時需要對本地倉庫進行更新,或者在setting.xml中添加映射<mirror>(内部代碼請自行百度)</mirror>,然後在更新maven的整個項目時,勾選上如圖所示。
第二個問題:
web層一開始創建時,需要導入servlet-api的jar包,存在頁面檔案,還需要導入jsp-api的jar包。注意:一般某一層用到的jar包如果在其他層不會使用到,那麽就在該層導入即可。因爲有時候在比較上級的層結構中導入一些jar包時,會使得其他一些配置檔案出錯。
第三個問題:
在測試springData Jpa的時候,一定要記得開啓數據庫服務器,否則tomcat會一直報超時連接錯誤。
第四個問題:
SpringData Jpa在簡化dao層操作時,是通過動态代理的方式完成的。動态代理需要接口及其實作類,是以如圖所示。
定義一個接口,因為是簡化,是以我們隻需要繼承它寫好的接口即可,然後用實作類對象調用方法。
通過動态代理,生成實作類對象,然後調用接口中所有的增删改查方法。
注意:接口的兩個參數分别表示:
T:Standard,即實體類class
ID extends Serializable:資料表的主鍵屬性類型(eg:Integer/varchar)
第四個問題:springDataJpa在持久層dao中定義方法的兩種方式
/**
* 方式一:按照SpringDataJpa的規範定義方法名(即findBy開頭+實體類中的屬性名)
* 實體類中不存在的屬性名,會報錯
* @param sname
* @return
*/
public List<Standard> findByName(String sname);
/**
* 方式二:自定義方法名(指定執行的語句)
* 需要添加注解@Query
* 參數:nativeQuery--是否執行本地查詢,即執行sql語句;
* 預設為false,即執行jpql語句
* value="sql語句/jpql語句"
* 如果執行的是增删改語句,就需要再添加一個注解@Modifying
* @param sname
* @return
*/
//執行sql語句
@Query(nativeQuery=true,value="select * from T_STANDARD where C_NAME=?")
public List<Standard> findByAbc(String sname);
//執行jpql語句
@Query(value="from Standard where name=?")
public List<Standard> findByXyz(String sname);
//執行更新語句
@Query(value="update Standard set name=? where id=?")
@Modifying
public void update(String name,int id);