电气配件管理系统总结
来源:互联网 发布:rf1800软件下载 编辑:程序博客网 时间:2024/06/08 17:19
1. 项目架构
当然是刚刚学完的ssh了,也是当下最热门的。感觉hibernate里的细节好多,尤其是优化方面,感觉我这次写的程序有100人同时访问就挂掉了。。。还有spring,感觉她很神秘,不知不觉省了好多事情,但感觉她的功能肯定不止于此。应该还是缺少原理的理解。
具体版本号:struts2.3.16 spring3.2 hibernate4.1.4
Jar包也在整合的开始搭配好了
分包:
第一次写,在Action层与service层上的设计还有些混乱,事务控制的不好,有些原子性操作写在了Action层,这是错误的。
2. 大体编码顺序
1.确认数据库后,根据需求确认菜单划分,然后建立jsp模型。
2.根据菜单确定好Action的颗粒度,一般为一个子菜单(一个jsp)
3.根据数据库写好domain层,按照需要配置好hibernate
4.根据需要考虑:
a).是否需要分页展示
b).进入页面前的准备工作
c).domain中的主键是否需要enrich主键等内容
5.回到jsp写html界面原型
6.写web层的Action:
a).需要成员变量或DTO(前后传递东西)
b).方法(搭架子)
7.写domain对应的persist层
8.根据原子操作写service层
9.补充好Action层内容
3.hibernate中关于中间表带属性的多对多配置
一般将关系拆分为两个一对多
4.CURD之U
4.1Ajax方式:异步更新,成功后弹框:
$("#submitId").click(function(){ if(confirm("您确认更改吗?")){ varinputs = $("#formId").find("input"); vardata = {}; vardataKey; vardataValue; inputs.each(function(){ if($(this).index != 6){ dataKey= $(this).attr("name"); dataValue= $(this).val(); data[dataKey]= dataValue; } }); data['user.role.roleId']= $("#roleIdId ").val(); $.ajax({ type:"POST", url:"userManagerAction!updateUser", data:data, cache:false, success:function(){ alert("修改成功!"); }, //success回调函数结束 error:function(){ alert("服务器异常!修改失败!"); } })//ajax结束 returntrue; }else{ returnfalse; }
4.2表单提交到Action 同步执行,更新后,查询更新Entity的PK
public String updateSupp(){ try{ supplierManagerImpl.modifySupplier(supplier); results = newArrayList<Suppliers>(); results.add(supplierManagerImpl.findSupplierById(supplier.getSupplierId())); return SUCCESS; }catch(Exception e){ e.printStackTrace(); return ERROR; } }
5.CRUD之D
1.Ajax方式:
Action层:
public String updateSupp(){ try{ supplierManagerImpl.modifySupplier(supplier); results = newArrayList<Suppliers>(); results.add(supplierManagerImpl.findSupplierById(supplier.getSupplierId())); return SUCCESS; }catch(Exception e){ e.printStackTrace(); return ERROR; } }
Jsp:
public String updateSupp(){ try{ supplierManagerImpl.modifySupplier(supplier); results = newArrayList<Suppliers>(); results.add(supplierManagerImpl.findSupplierById(supplier.getSupplierId())); return SUCCESS; }catch(Exception e){ e.printStackTrace(); return ERROR; } }
2.同步跳转:
Action层:
public String updateSupp(){ try{ supplierManagerImpl.modifySupplier(supplier); results = newArrayList<Suppliers>(); results.add(supplierManagerImpl.findSupplierById(supplier.getSupplierId())); return SUCCESS; }catch(Exception e){ e.printStackTrace(); return ERROR; } }
6.CRUD之C
添加操作一般采用同步跳转
结果可视化:查询结果按照插入时间排序,插入成功后查询所有
插入成功后按照PK查找,只查一个
Action层:
publicString addUser(){ Date regDate = new Date(); user.setRegisterTime(regDate); if(userManagerImpl.addUser(user)){ findAllUsers(); //插入成功后查找所有的用户,按照注册时间排序。 return SUCCESS; }else{ return ERROR; } }
7.CRUD之R
查找分为:查所有、条件查找。
条件查找又分为:固定条件个数、非固定条件个数
以为实际中数据量一般较大,故一般采用分页查找方式
7.1查找所有分页
三个常用方法:
@Override //查找并返回所有用户 publicList<Users> selectUsersByPage(int page, int rowsPerPage) { Sessionsession = sessionFactory.getCurrentSession(); Queryq = session.createQuery("from Users u order by u.registerTime desc"); q.setMaxResults(Constants.rowsPerPage); //每页最多可显示条数 q.setFirstResult((page-1)* rowsPerPage); //每页从第几条记录开始 List<Users>users = new ArrayList<Users>(); users= (List<Users>)q.list(); returnusers; } @Override //返回所有用户数 publicint getUsersNum() { Sessionsession = sessionFactory.getCurrentSession(); Stringhql = "select count(*) from Users"; int rows = 0; Query q = session.createQuery(hql); rows = ((Long)q.iterate().next()).intValue(); return rows; } @Override //返回共多少页计划数据 publicint getUsersTotalPage(int rowsPerPage) { introws = getUsersNum(); if(rows % rowsPerPage == 0) { return rows / rowsPerPage; } else { return rows / rowsPerPage + 1; } }
7.2条件查找分页
固定条件查找:
查询函数:publicList<Users> findUsersByType(Map type, int page, int rowsPerPage);
//Map中存放类型名和值
非固定条件个数查找:
查询函数:publicList<Users> findUsersByType(int page, int rowsPerPage, Map … types);
//利用java的可变参数特性
拼接hql函数:publicString createHql(Map … types);
- 电气配件管理系统总结
- 电气电力图纸文档管理系统
- 文樾配件销售管理系统 v3.43 bt
- 数据库课程设计(电脑配件库存管理系统)
- 钟表维修管理系统技术解析(四) 订购配件
- 利用Access数据库实现AutoCAD系统电气元件管理
- 海马汽车经销商管理系统技术解析(十)预约配件资源释放
- 配件
- 嵌入式系统的电气隔离
- 嵌入式系统的电气隔离
- 嵌入式系统的电气隔离
- 文件管理系统总结
- 学生管理系统总结
- 权限管理系统总结
- 交通灯管理系统总结
- Extjs管理系统总结
- 交通灯管理系统总结
- 【学生管理系统】--总结
- enum枚举类型详解
- 手把手教你使用Git
- AIDL的使用
- Java之基于Eclipse搭建SSH框架(上)
- SpringMVC定义Interceptor
- 电气配件管理系统总结
- CentOS之更新
- Android:AIDL进程之间的通信
- Android与html5交互 -- WebView使用(一)
- json与javaBean的序列化与反序列化(待续...)
- schema.xml文件配置
- Eclipse关于设置code style的问题
- win7下安装mysql
- C语言中内存分配