第一个问题:依赖包下载不全
這表明:在本地倉庫中出現了依賴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);