首页 > 其他分享 >ERP项目笔记-Day02

ERP项目笔记-Day02

时间:2022-10-09 22:38:30浏览次数:50  
标签:ERP Dep Day02 void 笔记 dep dep1 import public


今日任务:条件查询+实现分页功能+部门表的增删改查

 

01:条件查询:

需求分析:条件查询是我们最基本的功能,在表查询的时候,一般都是需要的。

在做条件查询的时候,我们首先想到的是sql插叙你语句的拼接,这是最笨的方法,使用起来很不方便,所以我们一般做条件查询的时候,都采用离线查询的方式,QBC查询。从前台,使用属性驱动的方式传数据到后台。

关于条件查询的流程图如下:(解析:先从前端哪部分,我们采用的是属性驱动的方法,需要传到后台的数据命名都是属性的名,然后点击查询,就将数据传给后台,然后后台进行各层的调用,最后到Dao层,然后在Dao层进行数据处理,处理完了以后将数据返回给页面,返回的是JOSN字符串的格式,最后前台再去做数据处理,因为我们前端采用的是esayUI的技术,想要将数据渲成表格的形式,就需要得到的是JSON的格式。)

ERP项目笔记-Day02_ide

 

 

静态页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>部门管理</title>
<link rel="stylesheet" type="text/css" href="ui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="ui/themes/icon.css">
<script type="text/javascript" src="ui/jquery.min.js"></script>
<script type="text/javascript" src="ui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="ui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="ui/jquery.serializejson.min.js"></script>

<script type="text/javascript">
var method="";
$(function(){
//使用数据表格的方式在页面上显示json格式的数据
$('#grid').datagrid({
url:'dep_getList',
striped:true,
//每次只能选中一行,默认为false
singleSelect:true,
//显示分页的工具栏
pagination:true,
columns:[[
{field:'uuid',title:'部门编号',width:100},
{field:'name',title:'部门名称',width:100},
{field:'tele',title:'部门联系电话',width:100,align:'right'},
{field:'-',title:'操作',width:150,align:'right',formatter: function(value,row,index){
var oper='<a href="javascript:void(0)" onclick="edit(' + row.uuid+ ')">修改</a>';
oper +=' ||<a href="javascript:void(0)" onclick="del(' + row.uuid+ ')">删除</a>';
return oper;
}
}
]],
toolbar: [{
text:'新增',
iconCls: 'icon-add',
handler: function(){
method="add";
$('#editDlg').dialog('open');
}
}]
});
$('#btnSearch').bind('click',function(){
//把表单数据转换成json对象
var formData= $('#searchForm').serializeJSON();
$('#grid').datagrid('load',formData);
// alert(JSON.stringify(formData));
/* 其实上边的load方法,就是加载下边ajax,下边我们给指定了一个url。而上边的没有指定url,就用原来的url。
$.ajax({
url:'dep_getList',
data:formData,
dataType:'json',
type:'post',
success:function(rtn){
//加载数据
//datagrid(参数1,参数2)是方法,里边有两个参数,参数一是我们的方法名称,
$('#grid').datagrid('loadData',rtn);
}
});
**/
});
$('#editDlg').dialog({
title: '部门编辑',
width: 300,
height: 200,
closed: true, //初始化窗口是否为关闭
modal: true
});
$('#btnSave').bind('click',function(){
var formData= $('#editForm').serializeJSON();
$.ajax({
url: 'dep_'+method,
data: formData,
dataType: 'json',
type: 'post',
success:function(rtn){
$.messager.alert("提示",rtn.message,'info',function(){
//如果成功就关闭窗口
$('#editDlg').dialog('close');
//还要刷新表单数据
$('#grid').datagrid('reload');
});
}
});
});
});
/**删除**/
function del(uuid){
$.messager.confirm("确认","确认要删除吗?",function(ok){
if(ok){
$.ajax({
url: 'dep_delete?id='+uuid,
dataType: 'json',
type: 'post',
success:function(rtn){
$.messager.alert("提示",rtn.message,'info',function(){
//还要刷新表单数据
$('#grid').datagrid('reload');
});
}
});
}
});
}
/**修改**/
function edit(uuid){
//弹出窗口
$('#editDlg').dialog('open');
//清空表单里边的内容
$('#editForm').form('clear');
method="update";
//加载数据
$('#editForm').form('load','dep_get?id='+uuid);
}



</script>
</head>
<body>
<div class="easyui-panel" style="padding-left:4px;border-bottom:0 px;">
<div style="height:2px;"></div>
<form id="searchForm">
<table>
<tr>
<td>部门名称</td>
<td><input name="dep1.name"></td>
</tr>
<tr>
<td>部门电话</td>
<td><input name="dep1.tele"></td>
</tr>
</table>
<button type="button" id="btnSearch">查询</button>
</form>
<div style="height:2px;"></div>
</div>
<table id="grid"></table>
<div id="editDlg">
<form id="editForm">
<table>
<tr>
<td>部门名称</td>
<td><input name="dep.name"><input type="hidden" name="dep.uuid"/></td>
</tr>
<tr>
<td>部门电话</td>
<td><input name="dep.tele"></td>
</tr>
</table>
<button type="button" id="btnSave">保存</button>
</form>
</div>
</body>
</html>

web层代码:

package com.angus.erp.action;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.alibaba.fastjson.JSON;
import com.angus.erp.biz.IDepBiz;
import com.angus.erp.entity.Dep;

/**
* 部门action
*
* @author DELL
*
*/
public class DepAction {

private IDepBiz depBiz;

public void setDepBiz(IDepBiz depBiz) {
this.depBiz = depBiz;
}

private Dep dep;

public Dep getDep() {
return dep;
}

public void setDep(Dep dep) {
this.dep = dep;
}

// 属性驱动:条件查询
private Dep dep1;
private Dep dep2;
private Object param;

public Dep getDep1() {
return dep1;
}

public void setDep1(Dep dep1) {
this.dep1 = dep1;
}

public Dep getDep2() {
return dep2;
}

public void setDep2(Dep dep2) {
this.dep2 = dep2;
}

public Object getParam() {
return param;
}

public void setParam(Object param) {
this.param = param;
}

//分页查询
private int page;//页码
private int rows;//每页的记录数


public int getPage() {
return page;
}

public void setPage(int page) {
this.page = page;
}

public int getRows() {
return rows;
}

public void setRows(int rows) {
this.rows = rows;
}

/**
* 查询所有部门的方法 并使用fastJson将查询到的数据转成json格式
*/
public void list() {
// 调用部门的业务查询所有的部门信息
List<Dep> list = depBiz.getList();
// 把部门列表转换成Json格式
String listString = JSON.toJSONString(list);
write(listString);
}

/** 部门表的条件查询 **/
public void getList() {
int firstResult=(page-1)*rows;

List<Dep> list = depBiz.getList(dep1,dep2,param,firstResult,rows);
long total=depBiz.getCount(dep1,dep2,param);

Map<String,Object> mapData=new HashMap<String,Object>();

mapData.put("total", total);
mapData.put("rows", list);

// 把部门列表转换成Json格式
String listString = JSON.toJSONString(mapData);
write(listString);
}
/**新增方法**/
public void add() {
//{"success":true,"message":""}
//返回前端的JSON数据
Map<String,Object> rtn=new HashMap<String,Object>();
try {
depBiz.add(dep);
ajaxReturn(true, "添加成功");
} catch (Exception e) {
e.printStackTrace();
ajaxReturn(false, "添加失败");
}

}

private long id;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}
/**删除**/
public void delete() {
try {
depBiz.delete(id);
ajaxReturn(true, "删除成功");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
ajaxReturn(false, "删除失败");
}
}
/**根据编号查询用作数据回显**/
public void get() {
Dep dep=depBiz.get(id);
String jsonString=JSON.toJSONString(dep);
//{"name":"吃货部","tele":"1245","uuid":17}
String jsonStringAfter=mapData(jsonString,"dep");

write(jsonStringAfter);

}
/**修改部门数据**/
public void update() {

try {
depBiz.update(dep);
ajaxReturn(true, "修改成功");
} catch (Exception e) {
e.printStackTrace();
ajaxReturn(false, "修改失败");
}
}
/**这个方法的作用是在json字符串的key上加上前缀,方便我们的前天数据的回显**/
/** jsonString 是字符串 prefix 是前缀**/
public String mapData(String jsonString,String prefix ) {
Map<String,Object> map=JSON.parseObject(jsonString);
//存储加上前缀的Key值
Map<String,Object> dataMap=new HashMap<String,Object>();
//给每个Key值加上前缀
for(String key : map.keySet()) {
dataMap.put(prefix+"."+key, map.get(key));
}
return JSON.toJSONString(dataMap);
}
/**相同代码的抽取**/
public void write(String jsonString) {
try {
// 相应对象
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");

// 将json格式的数据输出给页面
response.getWriter().write(jsonString);
} catch (IOException e) {
e.printStackTrace();
}
}
/**相同代码的抽取,向页面写数据**/
public void ajaxReturn(boolean success,String message) {
Map<String,Object> rtn=new HashMap<String,Object>();
rtn.put("success", success);
rtn.put("message", message);
write(JSON.toJSONString(rtn));
}
}

业务层代码:

package com.angus.erp.biz.impl;

/**
* 查询所有部门的实现类
*/
import java.util.List;

import com.angus.erp.biz.IDepBiz;
import com.angus.erp.dao.IDepDao;
import com.angus.erp.entity.Dep;

public class DepBiz implements IDepBiz {

private IDepDao depDao;

public void setDepDao(IDepDao depDao) {
this.depDao = depDao;
}

@Override
public List<Dep> getList() {
return depDao.getList();
}
/**分页查询**/
@Override
public List<Dep> getList(Dep dep1,Dep dep2,Object param,int firstResult,int maxResults) {

return depDao.getList(dep1,dep2,param, firstResult, maxResults);
}
/**总记录数**/

@Override
public long getCount(Dep dep1,Dep dep2,Object param) {

return depDao.getCount(dep1,dep2,param);
}
/**新增**/
@Override
public void add(Dep dep) {
depDao.add(dep);
}
/**删除**/
@Override
public void delete(Long uuid) {
depDao.delete(uuid);
}
/**根据编号查询用作修改的数据回显**/
@Override
public Dep get(Long uuid) {
return depDao.get(uuid);
}
/**更新部门数据**/
@Override
public void update(Dep dep) {
depDao.update(dep);
}



}

 

dao层代码:

package com.angus.erp.dao.impl;
/**
* 部门数据访问
*/
import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import com.angus.erp.dao.IDepDao;
import com.angus.erp.entity.Dep;

public class DepDao extends HibernateDaoSupport implements IDepDao {

/** 查询出所有的部门信息**/
@Override
public List<Dep> getList() {
return (List<Dep>) this.getHibernateTemplate().find("from Dep");
}

@Override
/**部门表的条查询**/
public List<Dep> getList(Dep dep1,Dep dep2,Object param,int firstResult,int maxResults) {
DetachedCriteria dc=getDetachedCriteriaDep(dep1);
return (List<Dep>) this.getHibernateTemplate().findByCriteria(dc,firstResult,maxResults);
}
/**查询部门表的总的数据数得到count**/
@Override
public long getCount(Dep dep1,Dep dep2,Object param) {
DetachedCriteria dc=getDetachedCriteriaDep(dep1);
dc.setProjection(Projections.rowCount());
List<Long> list=(List<Long>)getHibernateTemplate().findByCriteria(dc);
return list.get(0);
}
/**关于查询时的相同代码的抽取**/
private DetachedCriteria getDetachedCriteriaDep(Dep dep1) {
DetachedCriteria dc=DetachedCriteria.forClass(Dep.class);
if(null!=dep1) {
//判断是否输入了部门名称,并且判断去掉空格以后的长度大于0
if(null!=dep1.getName()&&dep1.getName().trim().length()>0) {
//MatchMode.ANYWHERE 相当于是 % %
//MatchMode.END 相当于是 % name 以什么什么结尾的模糊查询
//MatchMode.START 相当于是以什么开始的迷糊查询
dc.add(Restrictions.like("name", dep1.getName(),MatchMode.ANYWHERE));
}
//判断输入的部门电话是否为空
if(null!=dep1.getTele()&&dep1.getTele().trim().length()>0) {
dc.add(Restrictions.like("tele", dep1.getTele(),MatchMode.ANYWHERE));
}
}
return dc;
}

@Override
public void add(Dep dep) {
this.getHibernateTemplate().save(dep);
}
/**删除的方法**/
@Override
public void delete(Long uuid) {
//让对象进入持久化状态
Dep dep=this.getHibernateTemplate().get(Dep.class, uuid);
getHibernateTemplate().delete(dep);
}
/**通过编号进行修改**/
@Override
public Dep get(Long uuid) {

return getHibernateTemplate().get(Dep.class, uuid);
}
/**更新部门数据**/
@Override
public void update(Dep dep) {
this.getHibernateTemplate().update(dep);
}

}

第一天知识点总结:

 

ERP项目笔记-Day02_ide_02

ERP项目笔记-Day02_数据_03

 

ERP项目笔记-Day02_数据_04

标签:ERP,Dep,Day02,void,笔记,dep,dep1,import,public
From: https://blog.51cto.com/u_15812686/5741844

相关文章

  • 学习笔记274—VC6.0下载和安装图文教程
    MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)是Microsoft公司推出的以C++语言为基础的开发Windows环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动......
  • MyBatis-学习笔记-day02
    parameterType(输入类型) 传递简单的类型 传递pojo对象  Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。 传递包装类  包装类的......
  • springMVC学习笔记
    为什么要学习springMVC,springMVC和struts2的比较SpringMVC与Struts2区别对比项目SrpingMVCStruts2优势国内市场情况有大量用户,一般新项目启动都会选用springmvc有部分老用户......
  • 第三章学习笔记
    第三章Unix/Linux进程管理一、知识点归纳以及收获内容多任务处理该部分主要介绍了多任务处理的定义,多任务处理指的时同时进行几项独立活动的能力。多任务处理是通过......
  • bootstrap入门学习笔记
    本来这记着一天的笔记,网上搜了一下教程手册,整理得比我的强多了。果断删掉。相应的bootStrap教程网址 ​​https://www.runoob.com/bootstrap/bootstrap-typography.html......
  • 20201322陈俊池学习笔记6
    20201322陈俊池学习笔记63.1多任务处理多任务处理指的是同时执行几个独立的任务。在单处理器(单CPU)系统中,一次只能执行一个任务。多任务处理是通过在不同任务之间......
  • drf学习笔记
    今日内容概要权限类使用频率类使用认证类源码分析权限类源码分析部分频率类源码分析鸭子类型今日内容详细权限类使用第一步:写一个类,继承BasePermission第......
  • ABC272 做题笔记
    打得比较漂亮的一场,光速过ABCDE,但是FGH都太过神仙,EX干脆赛时只有两人AC/kkAProblemlink->https://atcoder.jp/contests/abc272/tasks/abc272_a。Solution按题意......
  • 【SSM】学习笔记(一)—— Spring 概念、Spring IoC、Spring Bean相关知识、依赖注入、
    原视频:https://www.bilibili.com/video/BV1Fi4y1S7ix?p=1P1~P27目录一、Spring概述1.1、Spring家族1.2、Spring发展史1.3、SpringFramework系统架构图1.4、......
  • 【图像处理笔记】图像分割之区域生长、区域分离与聚合
    0引言本章的大多数分割算法都基于图像灰度值的两个基本性质之一:不连续性和相似性。第一类方法根据灰度的突变(如边缘)将图像分割为多个区域:首先寻找边缘线段,然后将这些线段......