版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电力系统总结笔记
项目第一天(项目框架)
1:项目介绍
参考:《项目分析笔记》和【文档】中的《国家电力系统技术点汇总(简历使用).doc》
2:项目框架(中创建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目录下,创建ElecText.java对应的映射文件(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下创建hibernate.cfg.xml的配置文件
<?xmlversion="1.0"encoding=nUTF-8n?>
<!DOCTYPEhibernate-configurationPUBLIC
•»_»•
“B>
<hibernate-configuration>
<session-factory>
<1—连接数据库的信息--〉
<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();
//测试操作对象的过程,就是操作数据库表
ElecTextelecText=newElecText();
elecText.setTextName("测试Hibernate名称");
elecText.setTextDate(newDate());
elecText.setTextRemark("测试Hibernate备注”);
s・save(elecText);
mit();
s.close();
}
第四步:DAO层
(1)在cn.itcast.elec.dao中创建2个接口(公用接口和业务接口)
•公用接口:
publicinterfaceICommonDao<T>{
voidsave(Tentity);
)
•业务接口(需要继承公共接口,并且指定泛型T所对应的对象:
pxiblicinterfacelElecTextDaoextendsICommonDao<ElecText>{
publicstaticfinalStringSERVICE_NAME=
ncn,itcast.elec.dao.impl.ElecTextDaoImplH;
)
(2)在cn.itcast.elec.dao.impl中创建2个接口的实现类
•公用类(需要继承HibemaleDaoSupport,这样可以方便使用HibernateTemplate对象):
publicclassCommonDaoImpl<T>extendsHibernateDaoSupportimplements
ICommonDao<T>{
/**使用©Resource注入SessionFactory*/
^Resource(name=HsessionFactory,1)
publicfinalvoidsetSessionFactoryDi(SessionFactorysessionFactory){
this.setSessionFactory(sessionFactory);
)
/**保存*/
publicvoidsave(Tentity){
this.getHibernateTemplate().save(entity);
)
•业务类(需要继承公用类,这样可以使用公用类中的定义的方法)
@Repository(lElecTextDao.SERVICE_NAME)
publicclassElecTextDaoImplextendsCommonDaoImpl<ElecText>implements
lElecTextDao{
}
(3)在src创建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:?先不写,大家想想项目中应该添加什么?
<!--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:声明事务管理器(切面)-->
<beanid="trManager"
class="org.springframework..orm.hibernate3.HibernateTransactionManager">
<propertyname=nsessionFactory"ref=nsessionFactory"></proper\..y>
</bean>
<!--5:注解,在Service的类或者是Service的方法上,添加@Transcational()注解,用来控
制事务--〉
<tx:annotation-driventransaction-manager="trManagern/>
<!-也可以使用spring的配置文件的方式管理事务
<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");
//调用接口
lElecTextDaoelecTextDao=(lElecTextDao)
ac,getBean(lElecTextDao.SERVICE_NAME);
//操作对象
ElecTextelecText=newElecText();
elecText.setTextName("测试Dao名称”);
elecText.setTextDate(newDate());
elecText.setTextRemark("测试Da。备注”);
elecTextDao.save(elecText);
}
)
注意:如果数据没有保存,需要设置事务自动提交:在hibernate.cfg.xml中添加:
<!--使用hibernate的方式提交事务(自动提交)-->
〈propu二一了name="hibernate.connection.autocommit,r>true</pro:j'&rty>
第五步:Service层
(1)在cn.itcast.elec.service中创建接口:
publicinterfacelElecTextService{
publicstaticfinalStringSERVICE_NAME=
ncn.itcast.elec.service.impl.ElecTextServicelmpl”;
voidsaveElecText(ElecTextelecText);
)
(2)Scn.itcast.elec.service.impl中创建接口的实现类:
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提供的声明式事务处理,进行事务的控制,在业务层的类和方法上定义
@Transactional(),同时去掉hibernate.cfg.xml中的配置,由spring统一控制。去掉的代
码是:
<!--使用hibernate的方式提交事务(自动提交)-->
<propertyname="hibernate.connection.autocommitr,>true</property>
第六步:控制层(MVC)
(1)在cn.itcast.elec.web.action中创建Action(业务Action)类和BaseAction(公用Action)
•Action类:(注意:这里要设置成多例,即@5(:(中©(value=prototype),因为struts2的
Action是多实例,多线程)
^Controller("elecTextAction'•)
@Scope(value="prototype")
publicclassElecTextActionextendsBaseAction<ElecText>{
ElecTextelecText=this.getModel();
^Resource(name=IElecTextService.SERVICE_NAME)
privateIElecTextServiceelecTextService;
/**执行保存*/
publicStringsave(){
〃保存
elecTextService.saveElecText(elecText);
return"save”;
}
)
BaseAction类(封装模型驱动对象,;
try(
entity=(T)entityclass.ne—Tns七;
}catch(Exceptione){
e.prin=req;
}
publicvoidsetServletResponse(=res;
}
}
(2)在cn.itcast.elec.util包下创建公用类(泛型转换)。
泛型转换的目的子类传递真实对象类型,在父类中使用泛型转换成真实对象类型。
以后util包下封装的就是公用类。
publicclassTUtils{
/**泛型转换成真实类型(范类转换)*/
publicstaticClassgetTClass(Classentity){
Parameter!zedTypeparameter!zedType=(ParameterizedType)
entity.getGenericSuperclass();
Classentityclass=(Class)
parameterizedType.getActualTypeArguments()[0];
returnentityclass;
(3)在src下创建struts2的配置文件struts.xml
<?xmlversion=nl.0"encoding="UTF-8,r?>
<!DOCTYPEstrutsPUBLIC
”-//ApacheSon
•»«〉
<struts>
<!—设置开发模式
<constantname="struts.devMode"value=Mtruewx/constant>
<!—设置U工标签的主题—>
<constantname="struts.ui.theme"value=nsin?p2enx/constant>
<!一配置struts的URL访问的后缀,改成do(此处可以不修改,此时默认是.action)―>
<constantname="struts.action.extension“value="do,rx/constant>
<!—系统管理
〈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);
}
/**测试指定查询条件,查询结果集(不分页)*/
/**
这里工=1的目的是方便在Service层拼装sql或者hql语句,连接统一使用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;
//执行hq工语句
/**方式一:直接使用HibernateTemplate的find()方法,find方法支持执彳了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调用回调函数★/
List<T>list=this.getHibernateTemplate().execute(new
HibernateCallback(){
publicObjectdoInHibernate(Sessionsession)
throwsHibernateException,SQLException{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022人教版六年级上册数学期末检测卷及答案【各地真题】
- 2022人教版六年级上册数学期末考试试卷【夺分金卷】
- 人教版六年级上册数学期末测试卷带答案ab卷
- 人教版六年级下册数学期末考试试卷及参考答案一套
- 人教版四年级上册数学期末测试卷【名校卷】
- 2023人教版新课标六年级下册数学期末卷及参考答案(满分必刷)
- 2022人教版数学二年级上册期末测试卷附参考答案(考试直接用)
- 2023年小学六年级下册数学期末测试卷及参考答案(预热题)
- 2022六年级上册数学《期末测试卷》(综合卷)
- 人教版三年级下册数学期中测试卷含完整答案【典优】
- 中考前安全教育主题班会
- 2024年四川能投高县电力限公司招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 海关法规培训课件
- 刑事检察培训课件教学
- 鸿蒙应用开发 容器组件介绍
- 《婴幼儿生长发育评估》课程标准
- 护理核心制度培训通用课件
- 土地管理学课件
- 阿糖胞苷的护理
- 广东省2023年第二次普通高中学业水平合格性考试生物试题(7月)
- 恩施州农业和农村经济发展
评论
0/150
提交评论