版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目开发流程及注意事项
、开发环境
(1)开发工具:eclipse
(2)数据库:Oracle
(3)导入代码格式化模板
1.java代码格式化模板
导入java_formatter.xml
Window-Preferences-Java-CodeStyle-Formatter-ImportProfile
2.javascript代码格式化模板
导入iavascript_formatter.xml
Window—»Preferences—*JavaScript—>CodeStyle—*Formatter-»ImportProfile
@Preferences
0▼O▼▼
typefiltertextFormatter
General
ConfiqureProjectSpedficSettinqs...
Ant
Activeprofile:
DataManagement
»Helpjavascriptjormatter▼Edit-Remove
Install/UpdateNew-Import...
Java
Preview:
JavaEE
/•**
JavaPersistence
*Asamplesourcefileforthecodeformatterpreview
*JavaScript
*/
t>Appearance
/CodeStylevarindex=0;
CleanUpvararr=[];
CodeTemplatesvarobj={
x:
Formatter
y:function()(
t>Debug}
t>Editor};
fIncludePathfunctionfoo(){
t>Validatorvarl=newObje:t();
oMaven)
functionpop(){
»Mylyn
returnarr[inde<--];
Plug-inDevelopment)
RemoteSystemsfunctionpush(elein){
Run/Debugarr[index**]=elem;
Server)
functionisEmptyO{
“Team
returnindex==0;
Terminal
)
Validation
Web
WebServices<
XML
RestoreDefaultsApply
②OKCancel
二、开发流程及注意事项
(1)创立数据库
1.建立表空间
createtablespacetablespace_name
logging
datafile'D:\oracle\Administrator\oradata\orcl\tablespace_name.dbf
size200m
autoextendon
next10mmaxsizeunlimited
extentmanagementlocal;
2.建立数据库顾客
createuseruser_nameidentifiedbyuser_password
defaulttablespacetablespace_name;
grantconnect,resourcetouser_name;
grantdbatouser_name;
3.为顾客分派表空间
revokeunlimitedtablespacefromuser_name;
alteruseruser_namequotajnlimitedontablespace_name;
4.创立项目开发所需表
createtabletablc_nomc(
column_namedata_type
)
创立表也可以使用PL/SQLDevelcper工具通过图形界面来创立表.
(2)后台代码编写(SpringMVC+Mybatis)
1.通过配置文献自动生成domaindao和数据库映射文献
酉已/mars-»src-*marsGeneratorConfig.xml文献
<?xmIversion=7.0"encoding="UTF-8号〉
<!1X)(TYgeneratorConliguration
PUBLIC*-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0〃EN”
<generatorConfiguration>
数据库连接需要
<!-数据库连接开发包位置一》
<classPathEntrylocation=z/D:\program\mars\WebContent\WEB-INF\lib\ojdbc6.jar"/>
Goniexiid=oracle*targetRuntime=切物"M3。
<plugintype="">〈/p】ugin>
<commentGenerator>
<!一清除自动生成的注释一〉
<propertyname=suppressAUCommenrs*value="true"/>
</commentGenerator>
jdbc配置参数
<!-数据库连接一〉
<jdbcConnectiondriverClass=**
connectionURL=/,jdbc:oracle:thin:@127.0.0.1:1521zorcK
userld="mars"password="mars》
</jdbcConr»eclion>
<javaTypeResolver>
<[)ropertyname=^forceBigDecimaIsvva1ue="faIse”/>
</javaTypeResolver>
-domain生成位置一>
domain生成位置途径
<javaModelGeneratortargetPackage=""targetProject=二*>
<propertyname=^enableSubPackages"value="true"/>
<propertyname="trimStrings"value="true"/>
</javaModelGcnerator>
<!—数据库映射文献生成位置一》
<sqlMapGeneratortargetPackage=**targetProject=*6
<!-enableSubPackaqes:与否让schema作为包的后缀-->
<propertyname="enab1eSubPackages"value="true"/>
</sqlMapGenerator>
<!—DAO生成位置一>
ddu切位置途径
<!—type:XMLMAPPER,ANNOTATEDMAPPER—>
<javaClientGeneratortargetl,ackage=""type="XMLMAPPER"targetProject=:。
<propertyname=^enableSubPackages"value="true"/>
措施的可见性
<propertyname=z,exampleMethodVisibi1ity*value="private”/>
</javaClientGenerator>
<!-数据库表一〉首字母大写
<tableschema=**tableName=^TBL_PRACTICE*domainObjectName="Practice"alias="pra)
<propertyname="useActualColumnNames“value="false"/'
事先创立一种序列
<generatedKeycolumn="ID"sqlStatement=*SELECT
STBI,PRACTICE.NEXTVALASIDFROMDUAL'/)
</table>
</contexi|>
</generatorConfiguration>
运行bulid-mybatis.xml文献
<?xmlversion=*l.0*encoding=*UTF-8,,?>
<prnjpeldafault="gaifi1as"haspdiv=".">
<propertyname=""value=*$(basedir}*/>
<targetname="genfiles“description=,,Generatethefiles”)
<taskdefname="mb«enerator"classname=""classpath="mars-mybatis-generator-
corc-1.3.2.jar"/>
<mbgencratorovcrwrite="tru。"configfile=/,niarsGcncratorConfig.xml”
verbose=*false">
<propertyset>
<propertyrefname="/>
</propertyset>
</mbgenerator>
</target>
</project>
自动生成domain文献
自动生成dao文献
PracticeMapperextendsIMapperDAO接口继承IMapper接口DAO中的接口实现类即可自动被mybatis注册
自动生成数据库映射文献
service
service接口
package;
publicinterfaceIPracticeservice{
publicintinsert(Practcepractice);
publicintupdate(Practicepractice);
publicintdelete(PracticeExamplepracticeExample);
publicList<Practice〉select(PracticeExamplepracticeExample);
publicintcount(PractceExamplepracticeExample);
publicPracticeselectByPrimaryKey(Longi);
.•…〃根据项目需求自行添加措施
)
service接口实现类
package;
©Service
publicclassPracticeServicelmpIextendsBaseServiceimplementsIPracticeService{
privatePracticeMapperpracticeMapper=null;
©Override
publicintinsert(Practicepractice){
returnpracticeMapper.insert(practice);
}
©Override
publicintupdate(Practicepractice){
intresult=practiceMapper.updateByPrimaryKeySelective(practice);
returnresult.
}
©Override
publicintdelete(PracticeExamplepracticeExample){
intresult=practiceMapper.deleteByExample(practiceExample);
returnresult.
}
©Override
publicList<Practice>S2lect(PracticeExamplePracticeExamplei(
returnpracticeMapper.selectByExample(PracticeExaT)ple);
}
©Override
publicintcount(PracticsExamplePracticeExample){
intresult=practiceMapper.countByExample(PracticeExample);
returnresult.
)
©Override
publicPracticeselectByPrimaryKey(Longid){
returnpracticeMapper.selectByPrimaryKey(id);
}
controller
package;
@RequestMapping(7ist")
表达返回值将自动转为json格式
@ResponseBody
publicResultlist(StringtestName,StringtestUser,Pagepage){
PracticeExamplepracticeExample=newPracticeExample();
Criteriac=practiceExample.or();
if((testName!=null)&&!("".equals(testName))){
c.andTestNameLike(testName);
if((testuser!=null)&&!("".equals(testUser))){
c.andTestUserLike(testUser);
)
practiceExample.setDrderByClause("pra.iddesc");
practiceExample.set3age(page);//将分页类set入查询条件类,若不set则无分页
List<Practice>list=practiceService.select(practiceExample);
//(lisl.size());
returnnewListResult<Practice>(page.getTotalRecord(),list);
@RequestMapping(7save")
表达此参数可由前台json自动转换成本参数对象
©ResponseBody
publicResultsave(@RequestBodyPracticepractice){
practice.setTestNarre(practice.getTestName());
practice.setTestUser(getCurrentUser().getName());
practice.setTestState(practice.getTestNameO);
practice.setTestDate(newDate。);
practiceservice.insert(practice);
returnnewOperResult(true,"保留!");
©RequestMappingC'/update")
©ResponseBody
publicResultupdate(@RequestBodyPracticepractice){
if(practice.getld()!=null){
practiceService.update(practice);
)
returnnewOperResult(true,"更新!");
)
@RequestMapping("/delete")
@ResponseBody
publicResultdelete(@RequestBodyList<Long>ids)throwsMarsException{
PracticeExamplepracticeExample=newPracticeExample();
practiceExample.or().andIdIn(ids);
practiceService.dele:e(practiceExample);
returnnewOperResult(true,"删除成功!");
)
)
措施简介
list:列表直询,参数:查询条件,page对象
save:添加保留,参数:新增的对象
update:修改保留,参数:修改的对象
delete:删除,参数:删除的对象ID
(3)前台代码编写31皿
Ext.application中name值
1.model
Ext.defineCX^^
阐明皤在,model层下
命名与java类命名规则一致首字母大写
本模型的字段,也是Retd数组
fields:[{
name:'id',
可以实现排序功能
type:'Long',
sortable:true
},{
name:'testName',
type:'string,,
sortable:true
},{
name:'testDate,,
type:'Date;
convert:function(value){
vard=null;
if(value!=null){
d=newDate();
d.setTime(value);
)
returnd;
》,{
name:'testuser'.
type:'Strirg',
sortable:true
),{
name:'testState,,
type:'String',
sortable:true
]
)
2.store
Ext.define(",{
extend:",
model:"
});
view
注意命名规范及大小写尤其是别名
添加页面
Ext.define(",{
extend:",
创立别名以便通过
alias:'widget.practiceadd',
xtpe来创立该组件
buttonAlign:'center;_
frame:true,
defaultType:'textfield',
items:[{
name:'testName1,
fieldLabel:'测试名称
afterLabelTextTpl:'<fontcolcr=red>*</font>
allowBlank:false
name:'testUser1,
fieldLabel:'测试顾客匚
afterLabelTextTpl:'<fontcolcr=red>*</font>'z
allowBlank:false
),{
name:'teststate',
fieldLabel:'测i献态
afterLabelTextTpl:'<fontcolcr=red>*</font>'z
allowBlank:false
},
xtype:'datefield',
name:'testDate',
fieldLabel:'测试时间',
format:'Y-m-d',
editable:false
)
],
bulluilb;[{
text:提交,,
formBind:true,〃所有验证都通过后才可点击
disabled:true,
action:'create'
},{
text:建置',
handler:function(){
this.upCform').getForm().reset();
)
}]
));
编辑页面
Ext.define(",{
extend:'Ext.panel.Panel',
别名命名规范所有小写
alias:'widget.practiceedit',
buttonAlign:'center;
frame:true,
defaultType:'textfield',
items:[{
xlype:'hidden',
name:'id'
},{
name:'testName',
fieldLabel:'测试名称',
afterLabelTextTpl:*<fontcolor=red>*</font>',
allowBlank:false
//表单项只读
},{
name:'testllser;
fieldLabel:'测试顾客
afterLabelTextTpl:'<fontcolcr=red>*</font>'z
allowBlank:false
},《
name:'teststate',
fieldLabel:测试状态)
afterLabelTextTpl:'<fontcolcr=red>*</font>'z
allowBlank:false
},{
xtype:'datefield,,
name:'testDate'z
fieldLabel:'测试时间
format:'Y-m-d'z
editable:false
}
I
buttons:[{
text:'提交',
formBind:true,〃所有验证都通过后才可点击
disabled:true,
action:'update'
},{
text:'S£\
handler:function(){
this.up('form').getForm().reset();
)
}]
));
注意大小写及命名规范
展示页面
Ext.define(",{
extend:'Ext.panel.Panel,,
alias:'widget.practiceview,,
buttonAlign:'center',
frame:true,
items:[{
xtype:'fieldset,,
title:'基本信息
items:[{
xtype:'hidden;
name:'id'
),{
xtype:'container',
layout:'column,,
items:[{
xtype:'container,.
columnwidth:.4,
layout:'form;
items:[{
xtype:'displayfield',
name:'testName',
fieldLabel:'测试名称'
}]
}]
},{
xtype:'container',
layout:'column1,
items:[{
xtype:'container',
columnwidth:.4,
layout:'form',
items:[{
xtype:'displayfield',
name:'testUser'z
fieldLabel:'测试顾客’
}]
}]
},{
xtypp:'rnntainpr,.
layout:'column'.
items:[{
xtype:'container,,
columnWidth:.4,
layout:'form',
items:[{
xtype:'displayfield,,
name:'testState',
fieldLabel:'测试状态'
//表单项非空
}]
}]
},{
xtype:'container',
layout:'column',
items:[{
xtype:'container',
columnWidth:.4,
layout:'form',
items:[{
xtype:'displayfield',
name:'testDate,,
fieldLabel:'测蝴间'
//表单项非空
)]
}]
});
注意大〃泻和命名规范
主页面
Ext.define(",{
extend:'Ext.panel.Panel',//Form布局,查询条件与列表纵向排列
alias:'widget.practicelist',//别名
items:[{
xtype:'form',//Form布局,组件纵向排列
border:false,//去掉边框
//title:,查询到中,
itemld:'practiceListQuery',//泡件ID
items:[{
xtype:'container;
laycut:'cnlnmn',//列布局,横向排列
items:[{
xtype:'container',
columnwidth:.3,
layout:'form',
items:[{
xtype:'textfield',//文本椎
fieldLabel:'测试名称
labelAlign:'right",
labelWidth:80,
name:'testName',
maxWidth:300
}]
},
{
xtype:'container',
columnwidth:.3,
layout:'form',
items:[{
xtype:'textfield',//文本框
fieldLabel:测试顾客
labelAlign:'right',
labelWidth:80,
name:'testllser',
maxWidth:300
}]
}]
}],
buttons:[{
text:'查询',
itemld:'search'//标识名称
},{
text:'重置
handler:function(){
this.upCform').getForm().reset();//表单元素重置
)
}]
},{
xtype:'form',
border:false,//去掉边框
items:[{
xtype:'grid;//指定一种grid子元素
itemld:'practiceListGrid',//在组件中设百itemld
selModel:{
selType:"checkboxmodel"
},
rnulliSelecL:true,//可复选
loadMask:true,//可遮踹
columns:[{
text:'测试名称',〃表头该列的显示名称
datalndex:'testName',//指定Store的id字段来作为该列的value值
flex:1
//列宽
},{
text:测试顾客,〃表头该列的显示名称
datalndex:'testUser',//指定Store的name字段来作为该列的value值
flex:1
//列宽
},{
text:'测试状态’,〃表头该列的显示名称
datalndex:'teststate',//指定Store的name字段来作为该列的value值
flex:1
//列宽
},{
text:测试时间',〃表头该列的显示名称
datalndex:'testDate',//指定Store的name字段来作为该列的value值
注意书写精确的
〃列宽
力,
store:'practice.PracticeStore,,//使用的数据
dockedItems:[{
xtype:'pagingtoolbar',〃分页工具栏
store:'practice.PracticeSto-e',//分页使用的数据
dock:'bottom;//面板的停克位置为底部
displayinfo:true
//与否显示信息
}],
tbar:[{
xtype:'button',
itemld:'add',标识名称
text:'添加',
iconCIs:'icon-add'//图标
},{
xtype:'button',
itemld:'edit',标识名称
text:编辑
iconCIs:'icon-edit'//图标
},{
xtype:'button',
itemld:'delete',〃标识名称
text:删除',
iconCIs:'icon-delete'//图标
},{
xtype:'button',
itemld:'view',//标识名称
text:'查看',
iconCIs:'icon-view'//图标
)]
}]
}]
));
注意大小写及命名规范
controller
精确书写storesmodelsvievss
Ext.define(",{
extend:",
stores:['practice.PracticeStore'],
models:['practice.PracticeModel'],
views:['practice.PracticeUst1,'practice.PracticeAdd',
'practicelistbutton[itemld=search],:{//列表的查询按钮事件
click:this.searchPractice
视图层的别名
'practicelistbutton[itemld=add],:{//列表页面的按钮的itemld为addE勺点击事件
click:this.addPractice
),
'practicelistbutton[itemld=delete],:{//列表页面的按钮的itemld为add点击事件
click:this.deletePractice
,practiceaddbutton[action=create],:<//增长页面的保留按钮点击事件
click:this.savePractice
,practicelistbutton[itemld=view],:{//列表的编辑按钮事件
click:this.viewPractice
},
'practicelistbutton[itemld=edit],:{//列表的编辑按钮事件
click:this.editPractice
},
'practiceeditbutton[action=update]':{//更新页面09保留按钮点击事件
click:this.updatePractice
)
});
},
searchPractice:function(btn){
varstore=this.getStore('practice.PracticeStore');//得到practicestore
varpractice!istQuery=btn.upCpracticelist'J.queryC^practiceListQuery'JtO];//检索组件
varform=practicelistQuery.cetForm();//得到查询的form
varvalues=form.getValues(};//直询页面的所有值
varnew_params={//直询的参数
testName:values.testName,
testuser:values.testllser
);
Ext.apply(,new_params);//传递参数
store.Ioad();
}.
addPractice:function(btn){
Ext.create(",{
title:'增长测试',
width:650,
height:600,
iconCIs:",
layout:布局:自动填满容器
视图层的别名
items:[{,8ss
xtype:'practiceadd'//定义组件实例
)]
}).show();〃增长的弹出窗口显示
〉,
savePractice:function(button){
varstore=this.getStore('practice.PracticeStore');//彳导到Practicestore的store
varwin=button.up('window');//查找匹配简朴选择器的window窗口
form=win.down('form');//容器的第一层子组件,得到页面的form
varvalues=form.getValues(};//获取form中所有表单域目前值得
varmyMask=newExt.LoadMask(Ext.getBody(),{
msg:"请稍等,正在提交…“
));
myMask.show();//遮罩层显示
Ext.Ajax.request({//独工方式强交
url:'practice/save',//向服务器发送祈求时使用的URL
method:'post',//使用的)祈求方式
scope:this,
jsonData:values,//为jSQn_格式
success:function(response,options)(〃顺利执行完毕后进入success措施
varresult=Ext.decode(response.responseText);//解码(解析)JSON字符串对象
if(myMask!=undefined){
myMask.hide();//遮罩层隐藏
)
if(result.success){//接受后台发送的result状态.若result.success=true则成功,false则执行框架级提醒,此处
不需处理
Ext.Msg.alert("提醒",result.message,function(){
win.close();//弹出窗口关闭
store.loadO;//重新加载数据到Store中
»;
}else{
Ext.Msg.alert("提醒",result.message);
)
}
});
},
editPractice:function(btn){
varstore=this.getStore('practice.Practicestore');〃得到user的store
vargrid=;//得到grid
vardata=grid.getSelectionModel().getSelection()[0];//目前被选择时记录的数组
if(grid.getSelectionModel().getSelection().length==0){
ExtMsg.alert("提醒丁请至少选择一^数据!");
returnfalse;
)
varrecord=store.getByld(da-a.getCid'));//根据选择的记录,去store中获得最新数据
varview=Ext.create("z{
title:编辑测试
width:650,
height:600,
iconCIs:",
modal:true,
layout:'fit',//布局:自动填满容器
items:[{
xtype:'practiceedit1//定义组件实例
)]
}).show();//编辑窗口显示
view.down('fonn').loadRecord(record);//加载选择数据
}.
updatePractice:function(button){
varstore=this.getStore('practice.PracticeStore');//得到user的store
varwin=button.up('window');//查找匹配简朴选择器的window窗口
form=win.down(form');〃容器的第一层子组件彳号到页面H9form
varvalues=form.getValues();//获取form中所有表单域目前值得
varmyMask=newExt.LoadMask(Ext.getBody(),{
msg:"请稍等,正在提交…”
});
myMask.show();//遮罩层显示
Ext.Ajax.request({//ajax方式遛交
url:'practice/update',//向月防器发送祈求时使用的URL
method:'post;//使用的)祈求方式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年病死畜禽无害化处理试题及答案
- 2026年吉林省德惠市高一数学下册期末考试模拟测试卷审定版附答案
- 宁波市临床执业医师考试(实践技能)模拟题及答案(2026年)
- 2026年河北省新乐市高一数学下册期末考试模拟检测卷及参考答案(轻巧夺冠)
- 2026年村居村级污水处理站除臭风机故障恶臭扩散周边居民临时开窗通风管控异味扰民降低影响应急预案
- 2026年贵州省清镇市高一数学下册期末考试模拟试卷含完整答案【易错题】
- 2026年吉林省临江市高一数学下册期末考试模拟检测卷及完整答案(典优)
- 2026年广东省陆丰市高一数学下册期末考试模拟检测卷附答案(综合卷)
- 2026年广东省阳春市高一数学下册期末考试模拟考试卷及参考答案【综合卷】
- 2026年吉林省大安市高一数学下册期末考试模拟检测卷【夺分金卷】附答案
- 6、第六章-中药提取液的分离与纯化-《中药提取物生产技术》同步教学(劳动版)
- 药典培训课件
- 混凝土养护委托协议书
- 雨课堂在线学堂《马克思与当代欧陆思想》单元考核测试答案
- 安全工伤培训总结课件
- 山东省潍坊市2024-2025学年高二下学期期末考试政治试题(含答案)
- 2025年1月国家开放大学汉语言文学本科《外国文学专题》期末纸质考试试题及答案
- 轧钢机械装备及其智能化技术 课件 第7章 剪切机
- 04S520埋地塑料排水管道施工标准图集
- 锅炉更换烟管安装施工方案
- 安徽大学《数据结构与算法》2023-2024学年第一学期期末试卷
评论
0/150
提交评论