spring整合hibernate(三)

//業務類,用來對注冊信息進行篩選,調用dao實現類完成數據庫保存user數據
public class UserServiceImpl implements UserService {
    private UserDao userDao;
    
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public boolean register(String name, String password) {
        if(!"".equals(name) && !"".equals(password) && name != null && password != null){
            userDao.addUser(name, password);
            return true;
        }
        return false;
    }

}
//外部配置文件,配置了連接池所需要的一些屬性,便于修改維護
jdbc.url = jdbc:mysql://localhost:3306/dbTest?useUnicode=true&characterEncoding=utf8
jdbc.username = root
jdbc.password=123456
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.maxPoolSize = 40
jdbc.minPoolSize = 1
jdbc.initialPoolSize = 1
jdbc.maxIdleTime = 20
//struts2配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    <package name="test" extends="struts-default">
        <action name="*Action" class="testAction" method="{1}">
            <result name="success">/WEB-INF/success.jsp</result>
            <result name="fail">/WEB-INF/fail.jsp</result>
            <result name="register">/WEB-INF/registerSuccess.jsp</result>
            <result name="registerFail">/WEB-INF/registerFail.jsp</result>
        </action>
        
    </package>
    
</struts>

其余jsp就不再展示了。

注冊用戶結果:

![ ![注冊用戶](http://upload-images.jianshu.io/upload_images/2352668-2eddd8f31ac7d2e0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](http://upload-images.jianshu.io/upload_images/2352668-5cf2f195e5ad1fd0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

點擊注冊之后我們發現在數據庫里成功插入了一條記錄了。證明整合成功。當然在容器第一次運行時就已經為我們創建了對應的表。


在整合過程中遇到了一個小問題是我之前沒有發現的,也算是撿漏了,所以自己親自實踐是非常有必要的。

<!-- //加載實體類的映射文件位置及名稱 -->
        <property name="mappingLocations">
            <list>
                <value>classpath:resources/hibernate/*.hbm.xml</value>
            </list>
        </property>

錯誤就是在上面配置文件發生的,當然現在的配置是改過來之后的了。當時我寫的是mappingResources,在運行時一直報找不到對應hbm.xml文件。當時我就納悶了路徑沒有寫錯啊,為何會找不到呢?度娘了一下原來發現原因出在<property name="mappingLocations"> 這里。原來不同的屬性有不同的限制的。我想這個點估計也是剛起步的人容易掉的坑吧。他們的具體區別如下:

mappingResources、mappingLocations、mappingDirectoryLocations、mappingJarLocations   
他們的區別:   
1. mappingResources:指定classpath下具體映射文件名   
<property name="mappingResources">   
    <value>petclinic.hbm.xml </value>   
</property>   
2. mappingLocations:可以指定任何文件路徑,并且可以指定前綴:classpath、file等   
<property name="mappingLocations">   
    <value>/WEB-INF/petclinic.hbm.xml </value>   
</property>   
<property name="mappingLocations">   
    <value>classpath:/com/company/domain/petclinic.hbm.xml </value>   
</property>   
也可以用通配符指定,'*'指定一個文件(路徑)名,'**'指定多個文件(路徑)名,例如:   
<property name="mappingLocations">   
    <value>classpath:/com/company/domainmaps/*.hbm.xml </value>   
</property>   
上面的配置是在com/company/domain包下任何maps路徑下的hbm.xml文件都被加載為映射文件   
  
3. mappingDirectoryLocations:指定映射的文件路徑    
  
<property name="mappingDirectoryLocations">  <list>   
  <value>WEB-INF/HibernateMappings</value>   
  </list>   
</property>   
也可以通過classpath來指出   
<property name="mappingDirectoryLocations">   
  <list>   
  <value>classpath:/XXX/package/</value>   
  </list>   
</property>  

到這里ssh框架的整合就已經完成了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,953評論 6 342
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,835評論 0 11
  • 深夜降臨,年輕的管理者輾轉難以入睡,一直有一個疑問在大腦里盤繞不去,“我被提升為管理者了,說明我的能力是可以的啊,...
    IAMTESTER閱讀 488評論 0 0