版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
電力系統(tǒng)總結(jié)筆記
項目第一天(項目框架)
1:項目介紹
參考:《項目分析筆記》和【文檔】中的《國家電力系統(tǒng)技術(shù)點匯總(簡歷使用).doc》
2:項目框架(中創(chuàng)建ElecText.java
publicclassElecTextimplementsjava.io.Serializable{
privateStringtextID;//主鍵工D
privateStringtextName;//測拭名稱
privateDatetextDate;//測試日期
privateStringtextRemark;//;則試備,*
publicStringgetTextID(){
returntextID;
}
publicvoidsetTextID(StringtextID){
this.textID=textID;
}
publicStringgetTextName(){
returntextName;
}
publicvoidsetTextName(StringtextName){
this.textName=textName;
}
publicDategetTextDate(){
returntextDate;
}
publicvoidsetTextDate(DatetextDate){
this.textDate=textDate;
}
publicStringgetTextRemark(){
returntextRemark;
}
publicvoidsetTextRemark(StringtextRemark){
this.textRemark=textRemark;
(2)在cn.itcast.elec.domain目錄下,創(chuàng)建ElecText.java對應(yīng)的映射文件(ElecText.hbm.xml)
<?xmlversion=111.0"encoding=nUTF-8,r?>
<!DOCTYPEhibernate-mappingPUBLIC
itit)
<hibernate-mapping>
<classname="cn.itcast.elec.domain.ElecText"table="Elec_Textn>
<idname=ntextID"type="string"column="textIDn>
(generatorclass=,,uuid,,></generator>
</id>
<propertyname=MtextName'*type="string"column="textNamewx/property>
<propertyname="textDate"type="date"column=,rtextDateffx/property>
<propertyname="textRemark"type="string"
column=ntextFeznark°></property>
</class>
</hibernate-mapping>
(3)在src下創(chuàng)建hibernate.cfg.xml的配置文件
<?xmlversion="1.0"encoding=nUTF-8n?>
<!DOCTYPEhibernate-configurationPUBLIC
??_??
“B>
<hibernate-configuration>
<session-factory>
<1—連接數(shù)據(jù)庫的信息--〉
<property
name="hibernate.connection.driver_class,F>com.mysql.jdbc.Driver</property>
<propertyname="hibernate.connection.urlw>jdbc:mysql,F>root</property>
<property
name="hibernate.connection.pa">org.hibernate.dialect.MySQL5Dialect</properLy
>
<prope.rtyname="hibernate.hbm2ddl.autor,>update</property>
〈propertyname="hibernate.show_sqlrf>true</property>
<!—加載映射文件-->
〈mappingresource="cn/itcan/>
</session-factory>
</hibernate-configuration>
(4)使用junit在test包中進行測試(并且導入log4j的配置文件)
publicclassTe;//加載類路徑hibernate.cfg.xml和映射文件
SessionFactorysf=configuration.buildSessionFactory();
Sessions=sf.openSession();
Transactiontr=s.beginTransaction();
//測試操作對象的過程,就是操作數(shù)據(jù)庫表
ElecTextelecText=newElecText();
elecText.setTextName("測試Hibernate名稱");
elecText.setTextDate(newDate());
elecText.setTextRemark("測試Hibernate備注”);
s?save(elecText);
mit();
s.close();
}
第四步:DAO層
(1)在cn.itcast.elec.dao中創(chuàng)建2個接口(公用接口和業(yè)務(wù)接口)
?公用接口:
publicinterfaceICommonDao<T>{
voidsave(Tentity);
)
?業(yè)務(wù)接口(需要繼承公共接口,并且指定泛型T所對應(yīng)的對象:
pxiblicinterfacelElecTextDaoextendsICommonDao<ElecText>{
publicstaticfinalStringSERVICE_NAME=
ncn,itcast.elec.dao.impl.ElecTextDaoImplH;
)
(2)在cn.itcast.elec.dao.impl中創(chuàng)建2個接口的實現(xiàn)類
?公用類(需要繼承HibemaleDaoSupport,這樣可以方便使用HibernateTemplate對象):
publicclassCommonDaoImpl<T>extendsHibernateDaoSupportimplements
ICommonDao<T>{
/**使用?Resource注入SessionFactory*/
^Resource(name=HsessionFactory,1)
publicfinalvoidsetSessionFactoryDi(SessionFactorysessionFactory){
this.setSessionFactory(sessionFactory);
)
/**保存*/
publicvoidsave(Tentity){
this.getHibernateTemplate().save(entity);
)
?業(yè)務(wù)類(需要繼承公用類,這樣可以使用公用類中的定義的方法)
@Repository(lElecTextDao.SERVICE_NAME)
publicclassElecTextDaoImplextendsCommonDaoImpl<ElecText>implements
lElecTextDao{
}
(3)在src創(chuàng)建spring的配置文件(beans.xml)
<?xmlversion=.0"encoding="UTF-8n?>
<beansxmlns=""
xmlns:context=""
xmlns:aop="”
xmln”
xmlns:xsi="”
xsi:schemaLocation="
<!一1:開啟對注解的支持,組件的自動掃描,掃描在類上定義的?Controller?Service
?Repositiry注解,范圍是cn.itcast.elec的包一〉
<context:component-scanbase-package="cn.itcast.elec”/>
<!-2:?先不寫,大家想想項目中應(yīng)該添加什么?
<!--3:倉ij建SessionFactory,這是spring整合hibernat一的核心-->
<beanid=r,sessionFactory"
class=norg.springframework.orm.hibernate3.LocalSessionFactoryBeann>
<!一力【1載類路徑下的hibernate.cfg.xml—>
<propertyname="configLocation”>
<va1ue>cla</value>
</property>
</bean>
<!—4:聲明事務(wù)管理器(切面)-->
<beanid="trManager"
class="org.springframework..orm.hibernate3.HibernateTransactionManager">
<propertyname=nsessionFactory"ref=nsessionFactory"></proper\..y>
</bean>
<!--5:注解,在Service的類或者是Service的方法上,添加@Transcational()注解,用來控
制事務(wù)--〉
<tx:annotation-driventransaction-manager="trManagern/>
<!-也可以使用spring的配置文件的方式管理事務(wù)
<tx:adviceid=naantransaction-manager=ntrManager',>
<tx:attributes〉
<tx:methodname=Hsave*11isolation=,*DEFAULTMpropagation="REQUIRED*'
read-only=nfalse"/>
<tx:methodname=uupdate***isolation=nDEFAULTM
propagation^REQUIRED”read-only=nfalseH/>
<tx:methodname=ndelete*”isolation=MDEFAULT"
propagation=nREQUIREDHread-only=nfalsen/>
<tx:methodname=n*"read-only=Mtruen/>
</tx:attributes〉
</tx:advice>
<aop:config>
<aonid=Hbbn/>
<aop:advisoradvice-ref=naanpointcut-ref=nbbn/>
</aop:config>——>
</beans>
(4)使用junit完成測試
publicclassTestDao{
/**測試保存*/
QTest
publicvoidsave(){
〃加載類路徑下的spring容器
Applicationcontextac=newCla");
//調(diào)用接口
lElecTextDaoelecTextDao=(lElecTextDao)
ac,getBean(lElecTextDao.SERVICE_NAME);
//操作對象
ElecTextelecText=newElecText();
elecText.setTextName("測試Dao名稱”);
elecText.setTextDate(newDate());
elecText.setTextRemark("測試Da。備注”);
elecTextDao.save(elecText);
}
)
注意:如果數(shù)據(jù)沒有保存,需要設(shè)置事務(wù)自動提交:在hibernate.cfg.xml中添加:
<!--使用hibernate的方式提交事務(wù)(自動提交)-->
〈propu二一了name="hibernate.connection.autocommit,r>true</pro:j'&rty>
第五步:Service層
(1)在cn.itcast.elec.service中創(chuàng)建接口:
publicinterfacelElecTextService{
publicstaticfinalStringSERVICE_NAME=
ncn.itcast.elec.service.impl.ElecTextServicelmpl”;
voidsaveElecText(ElecTextelecText);
)
(2)Scn.itcast.elec.service.impl中創(chuàng)建接口的實現(xiàn)類:
eService(lElecTextService.SERVICE_NAME)
^Transactional(readOnly=true)
publicclassElecTextServicelmplimplementsIElecTextService{
gResource(name=IElecTextDao.SERVICE_NAME)
privatelElecTextDaoelecTextDao;
^Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIR
ED,readOnly=false)
publicvoidsaveElecText(ElecTextelecText){
elecTextDao.save(elecText);
)
)
(3)使用junit測試
publicclassTen);
IElecTextServiceelecTextService=(IElecTextService)
ac.getBean(lElecTextService.SERVICE_NAME);
//操作對象
ElecTextelecText=newElecText();
elecText.setTextName("測試Service名稱");
elecText.setTextDate(newDate());
elecText.setTextRemark("測試Service備注”);
elecTextService.saveElecText(elecText);
}
)
由于spring提供的聲明式事務(wù)處理,進行事務(wù)的控制,在業(yè)務(wù)層的類和方法上定義
@Transactional(),同時去掉hibernate.cfg.xml中的配置,由spring統(tǒng)一控制。去掉的代
碼是:
<!--使用hibernate的方式提交事務(wù)(自動提交)-->
<propertyname="hibernate.connection.autocommitr,>true</property>
第六步:控制層(MVC)
(1)在cn.itcast.elec.web.action中創(chuàng)建Action(業(yè)務(wù)Action)類和BaseAction(公用Action)
?Action類:(注意:這里要設(shè)置成多例,即@5(:(中?(value=prototype),因為struts2的
Action是多實例,多線程)
^Controller("elecTextAction'?)
@Scope(value="prototype")
publicclassElecTextActionextendsBaseAction<ElecText>{
ElecTextelecText=this.getModel();
^Resource(name=IElecTextService.SERVICE_NAME)
privateIElecTextServiceelecTextService;
/**執(zhí)行保存*/
publicStringsave(){
〃保存
elecTextService.saveElecText(elecText);
return"save”;
}
)
BaseAction類(封裝模型驅(qū)動對象,;
try(
entity=(T)entityclass.ne—Tns七;
}catch(Exceptione){
e.prin=req;
}
publicvoidsetServletResponse(=res;
}
}
(2)在cn.itcast.elec.util包下創(chuàng)建公用類(泛型轉(zhuǎn)換)。
泛型轉(zhuǎn)換的目的子類傳遞真實對象類型,在父類中使用泛型轉(zhuǎn)換成真實對象類型。
以后util包下封裝的就是公用類。
publicclassTUtils{
/**泛型轉(zhuǎn)換成真實類型(范類轉(zhuǎn)換)*/
publicstaticClassgetTClass(Classentity){
Parameter!zedTypeparameter!zedType=(ParameterizedType)
entity.getGenericSuperclass();
Classentityclass=(Class)
parameterizedType.getActualTypeArguments()[0];
returnentityclass;
(3)在src下創(chuàng)建struts2的配置文件struts.xml
<?xmlversion=nl.0"encoding="UTF-8,r?>
<!DOCTYPEstrutsPUBLIC
”-//ApacheSon
???〉
<struts>
<!—設(shè)置開發(fā)模式
<constantname="struts.devMode"value=Mtruewx/constant>
<!—設(shè)置U工標簽的主題—>
<constantname="struts.ui.theme"value=nsin?p2enx/constant>
<!一配置struts的URL訪問的后綴,改成do(此處可以不修改,此時默認是.action)―>
<constantname="struts.action.extension“value="do,rx/constant>
<!—系統(tǒng)管理
〈packagename="system"namespace="/system"extends="struts-default">
<actionname="elecTextAction_^nclass="elecTextAction"method="{1}n>
<resu.lname=,rsave,r>/system/textAdd.jsp</resul
</action>
〈/package〉
〈中添加配置:
<web-appversion="2.5"
xmlns=n"
xmlns:xsi=""
xsi:schemaLocation="
n>
<display-name></display-name>
<!一配置struts2的過濾器,這是struts2運行的核心一>
<filter>
<:i1:.er-name>struts2</fi].r.ername〉
<rilter-:zlass>org.apache.struts2.dispatcher.ng.filter.二巳〉
</context-param>
<listener>
<1is7.i-?r.er-cH>org.springframework.web.context.ContextLoaderListener</2i
stener-class>
</listener>
<welcome-file-list>
<welcomefi'e>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
(5)導入css,script,jsp,images進行測試
使用system/textAdd.jsp進行測試:頁面如圖
測試專用jsp
測試名稱:
測試日期:
測試備注:
[保存]
點擊【保存】完成。測試保存ElecText對象。
r
/**使用?Resource注入SessionFactory*/
@Resource(name=,,sessionFactoryn)
publicfinalvoidsetSessionFactoryDi(SessionFactorysessionFactory){
this.setSessionFactory(sessionFactory);
)
/★★保存*/
publicvoidsave(Tentity){
this.getHibernateTemplate().save(entity);
}
/**更新*/
publicvoidupdate(Tentity){
this.getHibernateTemplate().update(entity);
}
/*★使用主鍵工D,查詢對象★/
publicTfindObjectBylD(Serializableid){
return(T)-his.getHibernateTemplate().get(entityclass,id);
)
/**使用主鍵ID,刪除對象(刪除一個或者多個對象)*/
publicvoiddeleteObjectBylDs(Serializable...ids){
if(ids!=null&&ids.length>0){
for(Serializableid:ids){
Objectentity=this.findObjectBylD(id);
this.getHibernateTemplate().delete(entity);
)
)
}
/**使用封裝對象的集合,批量刪除對象*/
publicvoiddeleteObjectByCollection(List<T>list){
this.getHibernateTemplate().deleteAll(list);
}
/**測試指定查詢條件,查詢結(jié)果集(不分頁)*/
/**
這里工=1的目的是方便在Service層拼裝sql或者hql語句,連接統(tǒng)一使用and
*SELECToFROMElecTextoWHEREl=xxx#Dao層填寫
ANDo.textNameLIKE'%張%'#Service拼裝
ANDo.textRemarkLIKE1?#Service拼裝
ORDERBYo.textDateASC,o.textNamedesc#Service拼裝
*/
publicList<T>findCollectionByConditionNoPage(Stringcondition,
finalObject[]params,Map<StringzString>orderby){
Stringhql="SELECToFROMH+entityClass.getSimpleName()+noWHERE1=1n;
StringorderByHql=this.initOrderByHql(orderby);
finalStringfinalHql=hql+condition+orderByHql;
//執(zhí)行hq工語句
/**方式一:直接使用HibernateTemplate的find()方法,find方法支持執(zhí)彳了hql語句*/
//List<T>list=this.getHibernateTemplate().find(finalHql,params);
/**方式二:獲取SessionFactory,在獲取Session*/
//SessionFactorysf=this.getHibernateTemplate().getSessionFactory();
//Sessions=sf.getCurrentSession();
//Queryquery=s.createQuery(finalHql);
//query.setParameter(0,params[0]);
//query.setParameter(lzparams[1]);
//List<T>list=query.list();
/**方式三:使用hibernateTemplate調(diào)用回調(diào)函數(shù)★/
List<T>list=this.getHibernateTemplate().execute(new
HibernateCallback(){
publicObjectdoInHibernate(Sessionsession)
throwsHibernateException,SQLException{
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版車輛貸款保證合同規(guī)范樣本2篇
- 2024科技創(chuàng)新項目前期咨詢服務(wù)協(xié)議版
- 2024版權(quán)授權(quán)協(xié)議書范本
- 武漢警官職業(yè)學院《光學實驗》2023-2024學年第一學期期末試卷
- 文山學院《設(shè)施園藝學實踐》2023-2024學年第一學期期末試卷
- 2024版房屋出售委托協(xié)議3篇
- 二零二五年電子制造企業(yè)技術(shù)工人勞動合同范本2篇
- 二零二五年度人工智能教育股份分紅與人才培養(yǎng)協(xié)議3篇
- 圖木舒克職業(yè)技術(shù)學院《別墅空間設(shè)計》2023-2024學年第一學期期末試卷
- 天津石油職業(yè)技術(shù)學院《工程力學》2023-2024學年第一學期期末試卷
- 高二物理競賽霍爾效應(yīng) 課件
- 金融數(shù)學-(南京大學)
- 基于核心素養(yǎng)下的英語寫作能力的培養(yǎng)策略
- 現(xiàn)場安全文明施工考核評分表
- 亞什蘭版膠衣操作指南
- 四年級上冊數(shù)學教案 6.1口算除法 人教版
- DB32-T 3129-2016適合機械化作業(yè)的單體鋼架塑料大棚 技術(shù)規(guī)范-(高清現(xiàn)行)
- 6.農(nóng)業(yè)產(chǎn)值與增加值核算統(tǒng)計報表制度(2020年)
- 人工挖孔樁施工監(jiān)測監(jiān)控措施
- 供應(yīng)商物料質(zhì)量問題賠償協(xié)議(終端)
- 物理人教版(2019)必修第二冊5.2運動的合成與分解(共19張ppt)
評論
0/150
提交評論