freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[精品]基于ssh的中小企業(yè)在線(xiàn)資產(chǎn)管理系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)(編輯修改稿)

2024-12-22 17:15 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ER圖 銷(xiāo)售明細(xì)實(shí)體映射的數(shù)據(jù)表為 tb_selldetail,資產(chǎn)對(duì)象及操作用戶(hù)的多對(duì)一關(guān)聯(lián)關(guān)系,映射后的數(shù)據(jù)表結(jié)構(gòu)如 表 : 表 銷(xiāo)售明細(xì)實(shí)體數(shù)據(jù)表 屬性 類(lèi)型 是否為空 自動(dòng)生成 描述 id Integer Not null Auto 主鍵 sellName Varchar Not null 產(chǎn)品名稱(chēng) sellPrice Double Not null 銷(xiāo)售單價(jià) sellCount Integer Not null 銷(xiāo)售數(shù)量 sellTime Datetime Not null 銷(xiāo)售時(shí)間 medid Integer 資產(chǎn) id userid Integer 用戶(hù) id 用戶(hù)實(shí)體用于封裝管理員的基本信息,如登錄的用戶(hù)名、密碼等屬性, 用戶(hù)實(shí)體ER圖如圖 : 圖 用戶(hù)實(shí)體 ER圖 用戶(hù)實(shí)體所映射的數(shù)據(jù)表為 tb_user,其結(jié)構(gòu)如表 : 表 用戶(hù)實(shí)體數(shù)據(jù)表 屬性 類(lèi)型 是否為空 自動(dòng)生成 描述 id Integer Not null Auto 主鍵 username Varchar Not null 用戶(hù)名 銷(xiāo)售明細(xì) 單價(jià) 用戶(hù) id 銷(xiāo)售時(shí)間 編號(hào) 銷(xiāo)售數(shù)量 資產(chǎn) id 產(chǎn)品名稱(chēng) 用戶(hù) 編號(hào) 密碼 創(chuàng)建時(shí)間 用戶(hù)名 password Varchar Not null 密碼 createTime Datetime 創(chuàng)建時(shí)間 系統(tǒng)中各 實(shí)體之間也有相應(yīng)的關(guān)系, 資產(chǎn)信息與資產(chǎn)類(lèi)別為多對(duì)一的關(guān)聯(lián)關(guān)系,一個(gè)類(lèi)別中包含多個(gè)資產(chǎn)對(duì)象;資產(chǎn)信息與銷(xiāo)售明細(xì)為一對(duì)多關(guān)聯(lián)關(guān)系,多個(gè)銷(xiāo)售明細(xì)對(duì)應(yīng)一個(gè) 資產(chǎn) 對(duì)象;銷(xiāo)售明細(xì)與用戶(hù)之間為多對(duì)多關(guān)聯(lián)關(guān)系,多個(gè)銷(xiāo)售 明細(xì)信息對(duì)應(yīng)多個(gè)用戶(hù)。實(shí)體對(duì)象之間的關(guān)系如圖 : 多對(duì)一 一對(duì)多 多對(duì)一 圖 實(shí)體對(duì)象之間的關(guān)系 公共類(lèi)設(shè)計(jì) 面向?qū)ο蟮拈_(kāi)發(fā)模式中可以簡(jiǎn)化程序中的代碼,提高程序的可讀性。 在此系統(tǒng)開(kāi)發(fā)過(guò)程中,某些功能被反復(fù)調(diào)用,故將該功能 抽取出來(lái)封裝為一個(gè)類(lèi)作為公共類(lèi),在需要此功能時(shí)通過(guò)此類(lèi)進(jìn)行實(shí)現(xiàn), 公共類(lèi)的實(shí)質(zhì)是代碼的重用的一種方式 。 Hibernate 過(guò)濾器 在 Web項(xiàng)目中,以普通方式使用 Hibernate 將無(wú)法解決 Hibernate 延遲加載。當(dāng)有一個(gè)業(yè)務(wù)請(qǐng)求查詢(xún)數(shù)據(jù)時(shí),首先要開(kāi)啟 Session對(duì)象 [12],然后 Hibernate 對(duì)數(shù)據(jù)進(jìn)行查詢(xún),再關(guān)閉 Session對(duì)象,最后通過(guò) JSP 頁(yè)面來(lái)顯示數(shù)據(jù)。在這一過(guò)程中,如果查詢(xún)數(shù)據(jù)時(shí)使用了延遲加載,當(dāng) JSP 頁(yè)面顯示數(shù)據(jù)信息時(shí), Hibernate 將拋出異常信息,因?yàn)榇藭r(shí)Session已經(jīng)關(guān)閉, Hibernate 不能再對(duì)數(shù)據(jù)進(jìn)行操作。 通過(guò)過(guò)濾器管理 Hibernate 的 Session對(duì)象則可以避免此問(wèn)題。在 Web容器啟動(dòng)時(shí),過(guò)濾器被初始化,它將執(zhí)行 init()方法,在后續(xù)的操作中不會(huì)再次被執(zhí)行;而當(dāng)容器關(guān)閉時(shí),過(guò)濾器將執(zhí)行 destroy()方法。這兩個(gè)方法恰好符合 SessionFactory對(duì)象的生命周期,在運(yùn)行期間只執(zhí)行一次操作,可用于實(shí)例化及銷(xiāo)毀 SessionFactory對(duì)象。對(duì)于 Session對(duì)象的關(guān)閉操作,可以在業(yè)務(wù)邏輯處理結(jié)束后、 response請(qǐng)求轉(zhuǎn)發(fā)到 View 層 (JSP頁(yè)面 )之前進(jìn)行。此代碼將其封裝在 HibernateFilter 類(lèi) [13]中,此類(lèi)繼承了 Filter 類(lèi),它是一個(gè)過(guò)濾器。 為了保證線(xiàn)程安全,將 Session對(duì)象存放于 ThreadLocal 對(duì)象中,當(dāng)用到一個(gè) Session對(duì)象時(shí),首先從 ThreadLocal 中獲取。在無(wú)法獲取的情況下才會(huì)開(kāi)啟一個(gè)新的 Session對(duì)象。同時(shí),為了保證 Session 對(duì)象能在 response 請(qǐng)求轉(zhuǎn)發(fā)到 View 層之前被關(guān)閉,采取try… catch語(yǔ)句對(duì) session進(jìn)行關(guān)閉。 其關(guān)鍵代碼如下: public class HibernateFilter implements Filter{ private static ThreadLocal threadLocal = new ThreadLocal()。 private static SessionFactory factory = null。 …… 資產(chǎn)類(lèi)別 資產(chǎn)信息 銷(xiāo)售明細(xì) 用 戶(hù) public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { (request, response)。 } finally{ Session session = (Session)()。 if(session != null){ if(()){ ()。 } ()。 } } } public void init(FilterConfig arg0) throws ServletException { //初始化 SessionFactory try { Configuration cfg = new Configuration().configure()。 factory = ()。 } catch (Exception e) { ()。 } } public static Session getSession() { Session session = (Session)()。 if (session == null) { session = ()。 (session)。 } return session。 } } SuperDao類(lèi) SuperDao類(lèi)為此系統(tǒng)中所有數(shù)據(jù)庫(kù)操作類(lèi)的父類(lèi),此類(lèi)中封裝了數(shù)據(jù)庫(kù)操作的常用方法,在此類(lèi)中,由于 Hibernate 對(duì)數(shù)據(jù)庫(kù)的操作都需要用到 Session接口,類(lèi)中定義了一個(gè) protected類(lèi)型的 Session對(duì)象 ,為其子類(lèi)提供方便。 save()方法及 saveOrUpdate()方法都用于保存一個(gè)對(duì)象,其入口參數(shù)均為 Object類(lèi)型。其中 saveOrUpdate()方法比 save()方法更智能一些,可以根據(jù)實(shí)體對(duì)象的標(biāo)識(shí)值來(lái)判斷 保存還是更新操作。 SuperDao類(lèi)中使用這兩個(gè)方法對(duì)實(shí)體對(duì)象進(jìn)行保存及更新操作,其關(guān)鍵代碼如下: public class SupperDao { protected Session session = null。 public void save(Object obj){ try { session = ()。 ()。 (obj)。 ().mit()。 } catch (Exception e) { ()。 ().rollback()。 } } public void saveOrUpdate(Object obj){ try { session = ()。 ()。 (obj)。 ().mit()。 、 } catch (Exception e) { …… } } 刪除操作的方法為 delete(),入口參數(shù)為 Object()類(lèi)型,此方法通過(guò) Session 接口的delete()方法進(jìn)行實(shí)現(xiàn),其關(guān)鍵代碼如下: public void delete(Object obj){ try { session = ()。 ()。 (obj)。 ().mit()。 } catch (Exception e) { …… } } Hibernate 的 HQL 查詢(xún)語(yǔ)言提供了更為靈活的查詢(xún)方式,在這個(gè)超類(lèi)之中應(yīng)該加入 HQL的操作方法,其中 findByHQL()方法用于根據(jù)指定的 HQL查詢(xún)語(yǔ)句查詢(xún)結(jié)果集,deleteByHQL()方法用于根據(jù)指定的 HQL查詢(xún)語(yǔ)句進(jìn)行刪除操作。關(guān)鍵代碼如下: public List findByHQL(String hql){ List list = null。 try { session = ()。 ()。 list = (hql) .list()。 ().mit()。 } catch (Exception e) { …… } return list。 } public void deleteByHQL(String hql){ try { session = ()。 ()。 (hql) .executeUpdate()。 ().mit()。 } catch (Exception e) { …… } } Hibernate單值檢索在查詢(xún)后返回單個(gè)對(duì)象,當(dāng)返回的結(jié)果包含多條數(shù)據(jù)時(shí), Hibernate將拋出異常。此種操作可用于查詢(xún)單條數(shù)據(jù),在 SupperDao 類(lèi)中,單值檢索的方法為uniqueResult(),此方法的入口參數(shù)為 HQL 查詢(xún) [14]語(yǔ)句及查詢(xún)條件,其中查詢(xún)條件為Object[]數(shù)組類(lèi)型,用于裝載查詢(xún)語(yǔ)句中的參數(shù)。比如 HQL語(yǔ)句“ from Property m where =?” ,此時(shí)即可通過(guò)參數(shù) where 對(duì)其進(jìn)行動(dòng)態(tài)賦值。 public Object uniqueResult(String hql,Object[] where){ Object obj = null。 try { session = ()。 ()。 Query query = (hql)。 if(where != null amp。amp。 0){ for (int i = 0。 i 。 i++) { if(where[i] != null){ query = (i, where[i])。 } } } obj = ()。 ().mit()。 } catch (Exception e) { …… } return obj。 } findPaging()方法用于分頁(yè)查詢(xún),此方法的入口參數(shù)有 4個(gè),其中參數(shù) hql 為 HQL查詢(xún)語(yǔ)句,它允許傳入?yún)?shù)中帶有占位符“ ?” 的 HQL語(yǔ)句;參數(shù) offset為查詢(xún)結(jié)果集的起始位置;參數(shù) length為查詢(xún)結(jié)果集的偏移量,也就是返回?cái)?shù)據(jù)的條目數(shù);參數(shù) where為查詢(xún)條件,屬于 Object[]數(shù)組類(lèi)型,用于裝載 HQL語(yǔ)句中的參數(shù)。關(guān)鍵代碼如下: public List findPaging(String hql,int offset,int length,Object[] where){ List list = null。 try { session = ()。 ()。 Query query = (hql)。 if(where != null amp。amp。 0){ for (int i = 0。 i 。 i++) { if(where[i] != null){ query = (i, where[i])。 } } } list = (offset).setMaxResults(length) .list()。 ().mit()。 } catch (Exception e) { …… } return list。 } }\ BaseAction類(lèi) BaseAction 類(lèi)是業(yè)務(wù)層,有一個(gè)超類(lèi)對(duì)象,繼承了 Struts 的 DispatchAction 類(lèi) [15],同時(shí)還為子類(lèi)對(duì)象提供公用方法。 DispatchAction類(lèi)繼承了 Action類(lèi),此類(lèi)在處理請(qǐng)求時(shí)首先要執(zhí)行 execute()方法,然后通過(guò)控制器再轉(zhuǎn)發(fā)到相應(yīng)的方法進(jìn)行業(yè)務(wù)處理。 此類(lèi)
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1