一、JQuery EasyUI中menubutton下来菜单的使用
1、html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 引入easyui资源文件 -->
<link rel="stylesheet" type="text/css" href="../js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../js/easyui/themes/icon.css">
<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="../js/easyui/jquery.easyui.min.js"></script>
</head>
<body>
<!-- 制作一个下来菜单 -->
<a data-options="iconCls:'icon-edit',menu:'#mm'" class="easyui-menubutton">Edit</a>
<!-- 以下是Edit下拉菜单中的选项 -->
<div id="mm">
<div data-options="iconCls:'icon-undo'">Undo</div>
<div>Redo</div>
<div class="menu-sep"></div><!-- 此处是一个分割线 -->
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
</div>
</body>
</html>
2、页面展示效果
二、JqueryEasyUI中 messager 消息提示对象的使用
1、Alert
(1)、API
(2)、html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 引入easyui资源文件 -->
<link rel="stylesheet" type="text/css" href="../js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../js/easyui/themes/icon.css">
<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="../js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="../js/easyui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript">
$(function(){
//alert提示
$.messager.alert("这里写标题","这里写内容","info");
});
</script>
</head>
<body>
</body>
</html>
(3)、页面展示效果
2、Confirm
(1)、API
(2)、html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 引入easyui资源文件 -->
<link rel="stylesheet" type="text/css" href="../js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../js/easyui/themes/icon.css">
<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="../js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="../js/easyui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript">
$(function(){
//alert提示
$.messager.confirm("这里写提示信息","确定要删除数据吗?",function(r){
alert(r);
});
});
</script>
</head>
<body>
</body>
</html>
(3)、页面展示效果
3、show
(1)、API
(2)、html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 引入easyui资源文件 -->
<link rel="stylesheet" type="text/css" href="../js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../js/easyui/themes/icon.css">
<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="../js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="../js/easyui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript">
$(function(){
//alert提示
$.messager.show({
title:'实时新闻',//标题
msg:'点击观看',
timeout:5000,//5秒后消失
showType:'slide' //显示效果,slide:滑动显示
});
});
</script>
</head>
<body>
</body>
</html>
(3)、页面效果展示
三、物流项目基础设置部分需求分析并导入相关实体(基于JPA注解)
1、项目整体分布
整个物流项目分为基础设置、取派、中转、路由、报表、财务、PDA等几大部分。
2、导入domain中的实体类
(1)、项目整体图
(2)、Archive
package com.itheima.bos.domain.base;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* @description:档案类,记录所有的分类信息,在子档中
*/
@Entity
@Table(name = "T_ARCHIVE")
public class Archive {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_ARCHIVE_NUM", unique = true )
private String archiveNum;// 档案编号
@Column(name = "C_ARCHIVE_NAME")
private String archiveName; // 档案名称
@Column(name = "C_REMARK")
private String remark; // 备注
@Column(name = "C_HASCHILD")
private Integer hasChild;// 是否分级 0代表不分级 1代表分级
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
@OneToMany(mappedBy = "archive")
private Set<SubArchive> subArchives = new HashSet<>(); // 子档案
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getArchiveNum() {
return archiveNum;
}
public void setArchiveNum(String archiveNum) {
this.archiveNum = archiveNum;
}
public String getArchiveName() {
return archiveName;
}
public void setArchiveName(String archiveName) {
this.archiveName = archiveName;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Date getOperatingTime() {
return operatingTime;
}
public void setOperatingTime(Date operatingTime) {
this.operatingTime = operatingTime;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public Set<SubArchive> getSubArchives() {
return subArchives;
}
public void setSubArchives(Set<SubArchive> subArchives) {
this.subArchives = subArchives;
}
public String getOperatingCompany() {
return operatingCompany;
}
public void setOperatingCompany(String operatingCompany) {
this.operatingCompany = operatingCompany;
}
public Integer getHasChild() {
return hasChild;
}
public void setHasChild(Integer hasChild) {
this.hasChild = hasChild;
}
}
(3)、Area
package com.itheima.bos.domain.base;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
* @description:地域信息实体类,主要包含 省市区(县)
*/
@Entity
@Table(name = "T_AREA")
public class Area {
@Id
@Column(name = "C_ID")
private String id;
@Column(name = "C_PROVINCE")
private String province; // 省
@Column(name = "C_CITY")
private String city; // 城市
@Column(name = "C_DISTRICT")
private String district; // 区域
@Column(name = "C_POSTCODE")
private String postcode; // 邮编
@Column(name = "C_CITYCODE")
private String citycode; // 城市编码
@Column(name = "C_SHORTCODE")
private String shortcode; // 简码
@OneToMany(mappedBy = "area")
private Set<SubArea> subareas = new HashSet<SubArea>();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district = district;
}
public String getPostcode() {
return postcode;
}
public void setPostcode(String postcode) {
this.postcode = postcode;
}
public String getCitycode() {
return citycode;
}
public void setCitycode(String citycode) {
this.citycode = citycode;
}
public String getShortcode() {
return shortcode;
}
public void setShortcode(String shortcode) {
this.shortcode = shortcode;
}
public Set<SubArea> getSubareas() {
return subareas;
}
public void setSubareas(Set<SubArea> subareas) {
this.subareas = subareas;
}
@Override
public String toString() {
return "Area [id=" + id + ", province=" + province + ", city=" + city
+ ", district=" + district + ", postcode=" + postcode
+ ", citycode=" + citycode + ", shortcode=" + shortcode + "]";
}
}
(4)、Courier
package com.itheima.bos.domain.base;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
/**
* @description:快递员
*/
@Entity
@Table(name = "T_COURIER")
public class Courier {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_COURIER_NUM", unique = true)
private String courierNum; // 快递员工号
@Column(name = "C_NAME")
private String name; // 快递员姓名
@Column(name = "C_TELEPHONE")
private String telephone; // 快递员联系电话
@Column(name = "C_PDA")
private String pda; // PDA号
@Column(name = "C_DELTAG")
private Character deltag; // 作废标志 1 为标记作废
@Column(name = "C_CHECK_PWD")
private String checkPwd; // 查台密码
@Column(name = "C_TYPE")
private String type; // 取件员类型
@Column(name = "C_COMPANY")
private String company; // 单位
@Column(name = "C_VEHICLE_TYPE")
private String vehicleType; // 车辆类型
@Column(name = "C_VEHICLE_NUM")
private String vehicleNum; // 车牌号
@ManyToOne
@JoinColumn(name = "C_STANDARD_ID")
private Standard standard;
@ManyToOne
@JoinColumn(name = "C_TAKETIME_ID")
private TakeTime takeTime;
@ManyToMany(mappedBy = "couriers")
private Set<FixedArea> fixedAreas = new HashSet<FixedArea>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCourierNum() {
return courierNum;
}
public void setCourierNum(String courierNum) {
this.courierNum = courierNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public Character getDeltag() {
return deltag;
}
public void setDeltag(Character deltag) {
this.deltag = deltag;
}
public String getCheckPwd() {
return checkPwd;
}
public void setCheckPwd(String checkPwd) {
this.checkPwd = checkPwd;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getVehicleType() {
return vehicleType;
}
public void setVehicleType(String vehicleType) {
this.vehicleType = vehicleType;
}
public String getVehicleNum() {
return vehicleNum;
}
public void setVehicleNum(String vehicleNum) {
this.vehicleNum = vehicleNum;
}
public Set<FixedArea> getFixedAreas() {
return fixedAreas;
}
public void setFixedAreas(Set<FixedArea> fixedAreas) {
this.fixedAreas = fixedAreas;
}
public TakeTime getTakeTime() {
return takeTime;
}
public void setTakeTime(TakeTime takeTime) {
this.takeTime = takeTime;
}
public String getPda() {
return pda;
}
public void setPda(String pda) {
this.pda = pda;
}
public Standard getStandard() {
return standard;
}
public void setStandard(Standard standard) {
this.standard = standard;
}
}
(5)、FixedArea
package com.itheima.bos.domain.base;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* @description:定区
*/
@Entity
@Table(name = "T_FIXED_AREA")
public class FixedArea {
@Id
@Column(name = "C_ID")
private String id; // 主键
@Column(name = "C_FIXED_AREA_NAME", unique = true)
private String fixedAreaName; // 定区名称
@Column(name = "C_FIXED_AREA_LEADER", unique = true)
private String fixedAreaLeader;// 定区负责人
@Column(name = "C_TELEPHONE")
private String telephone;// 联系电话
@Column(name = "C_COMPANY")
private String company; // 所属单位
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
@OneToMany(mappedBy = "fixedArea")
private Set<SubArea> subareas = new HashSet<SubArea>(0);
@ManyToMany
@JoinTable(name = "T_FIXEDAREA_COURIER", joinColumns = { @JoinColumn(name = "C_FIXED_AREA_ID", referencedColumnName = "C_ID") }, inverseJoinColumns = { @JoinColumn(name = "C_COURIER_ID", referencedColumnName = "C_ID") })
private Set<Courier> couriers = new HashSet<Courier>(0);
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFixedAreaName() {
return fixedAreaName;
}
public void setFixedAreaName(String fixedAreaName) {
this.fixedAreaName = fixedAreaName;
}
public String getFixedAreaLeader() {
return fixedAreaLeader;
}
public void setFixedAreaLeader(String fixedAreaLeader) {
this.fixedAreaLeader = fixedAreaLeader;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public Date getOperatingTime() {
return operatingTime;
}
public void setOperatingTime(Date operatingTime) {
this.operatingTime = operatingTime;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public Set<SubArea> getSubareas() {
return subareas;
}
public void setSubareas(Set<SubArea> subareas) {
this.subareas = subareas;
}
public Set<Courier> getCouriers() {
return couriers;
}
public void setCouriers(Set<Courier> couriers) {
this.couriers = couriers;
}
public String getOperatingCompany() {
return operatingCompany;
}
public void setOperatingCompany(String operatingCompany) {
this.operatingCompany = operatingCompany;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
}
(6)、Standard
package com.itheima.bos.domain.base;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* @description:收派标准
*/
@Entity
@Table(name = "T_STANDARD")
public class Standard {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_NAME")
private String name; // 标准名称
@Column(name = "C_MIN_WEIGHT")
private Integer minWeight; // 最小重量
@Column(name = "C_MAX_WEIGHT")
private Integer maxWeight; // 最大重量
@Column(name = "C_MIN_LENGTH")
private Integer minLength; // 最小长度
@Column(name = "C_MAX_LENGTH")
private Integer maxLength; // 最大重量
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getOperatingTime() {
return operatingTime;
}
public void setOperatingTime(Date operatingTime) {
this.operatingTime = operatingTime;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public Integer getMinWeight() {
return minWeight;
}
public void setMinWeight(Integer minWeight) {
this.minWeight = minWeight;
}
public Integer getMaxWeight() {
return maxWeight;
}
public void setMaxWeight(Integer maxWeight) {
this.maxWeight = maxWeight;
}
public Integer getMinLength() {
return minLength;
}
public void setMinLength(Integer minLength) {
this.minLength = minLength;
}
public Integer getMaxLength() {
return maxLength;
}
public void setMaxLength(Integer maxLength) {
this.maxLength = maxLength;
}
public String getOperatingCompany() {
return operatingCompany;
}
public void setOperatingCompany(String operatingCompany) {
this.operatingCompany = operatingCompany;
}
@Override
public String toString() {
return "Standard [id=" + id + ", name=" + name + ", minWeight="
+ minWeight + ", maxWeight=" + maxWeight + ", minLength="
+ minLength + ", maxLength=" + maxLength + ", operatingTime="
+ operatingTime + ", operator=" + operator
+ ", operatingCompany=" + operatingCompany + "]";
}
}
(7)、SubArchive
package com.itheima.bos.domain.base;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* @description:子档案类,记录了档案分级后的子信息
*/
@Entity
@Table(name = "T_SUB_ARCHIVE")
public class SubArchive {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_SUB_ARCHIVE_NAME")
private String subArchiveName; // 子档名称
@Column(name = "C_MNEMONIC_CODE")
private String mnemonicCode; // 助记码
@Column(name = "C_REMARK")
private String remark; // 备注
@Column(name = "C_MOTHBALLED")
private Character mothballed; // 封存标志
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
@ManyToOne
@JoinColumn(name = "C_ARCHIVE_ID")
private Archive archive; // 关联基本档案信息
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSubArchiveName() {
return subArchiveName;
}
public void setSubArchiveName(String subArchiveName) {
this.subArchiveName = subArchiveName;
}
public String getMnemonicCode() {
return mnemonicCode;
}
public void setMnemonicCode(String mnemonicCode) {
this.mnemonicCode = mnemonicCode;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Date getOperatingTime() {
return operatingTime;
}
public void setOperatingTime(Date operatingTime) {
this.operatingTime = operatingTime;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public Archive getArchive() {
return archive;
}
public void setArchive(Archive archive) {
this.archive = archive;
}
public String getOperatingCompany() {
return operatingCompany;
}
public void setOperatingCompany(String operatingCompany) {
this.operatingCompany = operatingCompany;
}
public Character getMothballed() {
return mothballed;
}
public void setMothballed(Character mothballed) {
this.mothballed = mothballed;
}
}
(8)、SubArea
package com.itheima.bos.domain.base;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
/**
* @description:分区
*/
@Entity
@Table(name = "T_SUB_AREA")
public class SubArea {
@Id
@Column(name = "C_ID")
private String id;
@Column(name = "C_START_NUM")
private String startNum; // 起始号
@Column(name = "C_ENDNUM")
private String endNum; // 终止号
@Column(name = "C_SINGLE")
private Character single; // 单双号
@Column(name = "C_KEY_WORDS")
private String keyWords; // 关键字
@Column(name = "C_ASSIST_KEY_WORDS")
private String assistKeyWords; // 辅助关键字
@ManyToOne
@JoinColumn(name = "C_AREA_ID")
private Area area; // 区域
@ManyToOne
@JoinColumn(name = "C_FIXEDAREA_ID")
private FixedArea fixedArea; // 定区
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Character getSingle() {
return single;
}
public void setSingle(Character single) {
this.single = single;
}
public String getStartNum() {
return startNum;
}
public void setStartNum(String startNum) {
this.startNum = startNum;
}
public String getEndNum() {
return endNum;
}
public void setEndNum(String endNum) {
this.endNum = endNum;
}
public String getKeyWords() {
return keyWords;
}
public void setKeyWords(String keyWords) {
this.keyWords = keyWords;
}
public String getAssistKeyWords() {
return assistKeyWords;
}
public void setAssistKeyWords(String assistKeyWords) {
this.assistKeyWords = assistKeyWords;
}
public Area getArea() {
return area;
}
public void setArea(Area area) {
this.area = area;
}
public FixedArea getFixedArea() {
return fixedArea;
}
public void setFixedArea(FixedArea fixedArea) {
this.fixedArea = fixedArea;
}
}
(9)、TakeTime
package com.itheima.bos.domain.base;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* @description:收派时间管理
*/
@Entity
@Table(name = "T_TAKE_TIME")
public class TakeTime {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_NAME")
private String name; // 收派时间名称
@Column(name = "C_NORMAL_WORK_TIME")
private String normalWorkTime; // 平常上班时间
@Column(name = "C_NORMAL_DUTY_TIME")
private String normalDutyTime; // 平常下班时间
@Column(name = "C_SAT_WORK_TIME")
private String satWorkTime; // 周六上班时间
@Column(name = "C_SAT_DUTY_TIME")
private String satDutyTime; // 周六下班时间
@Column(name = "C_SUN_WORK_TIME")
private String sunWorkTime; // 周日上班时间
@Column(name = "C_SUN_DUTY_TIME")
private String sunDutyTime; // 周日下班时间
@Column(name = "C_STATUS")
private String status; // 状态
@Column(name = "C_COMPANY")
private String company; // 所属公司
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNormalWorkTime() {
return normalWorkTime;
}
public void setNormalWorkTime(String normalWorkTime) {
this.normalWorkTime = normalWorkTime;
}
public String getNormalDutyTime() {
return normalDutyTime;
}
public void setNormalDutyTime(String normalDutyTime) {
this.normalDutyTime = normalDutyTime;
}
public String getSatWorkTime() {
return satWorkTime;
}
public void setSatWorkTime(String satWorkTime) {
this.satWorkTime = satWorkTime;
}
public String getSatDutyTime() {
return satDutyTime;
}
public void setSatDutyTime(String satDutyTime) {
this.satDutyTime = satDutyTime;
}
public String getSunWorkTime() {
return sunWorkTime;
}
public void setSunWorkTime(String sunWorkTime) {
this.sunWorkTime = sunWorkTime;
}
public String getSunDutyTime() {
return sunDutyTime;
}
public void setSunDutyTime(String sunDutyTime) {
this.sunDutyTime = sunDutyTime;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public Date getOperatingTime() {
return operatingTime;
}
public void setOperatingTime(Date operatingTime) {
this.operatingTime = operatingTime;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getOperatingCompany() {
return operatingCompany;
}
public void setOperatingCompany(String operatingCompany) {
this.operatingCompany = operatingCompany;
}
}
(10)、Vehicle
package com.itheima.bos.domain.base;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @description:车辆
*/
@Entity
@Table(name = "T_VEHICLE")
public class Vehicle {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id;
@Column(name = "C_ROUTE_TYPE")
private String routeType; // 线路类型
@Column(name = "C_ROUTE_NAME")
private String routeName; // 线路名称
@Column(name = "C_SNIPPER")
private String shipper; // 承运商
@Column(name = "C_DRIVER")
private String driver; // 司机
@Column(name = "C_VEHICLE_NUM")
private String vehicleNum; // 车牌号
@Column(name = "C_TELEPHONE")
private String telephone; // 电话
@Column(name = "C_VEHICLE_TYPE")
private String vehicleType;// 车型
@Column(name = "C_TON")
private Integer ton; // 吨控
@Column(name = "C_REMARK")
private String remark;// 备注
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getRouteType() {
return routeType;
}
public void setRouteType(String routeType) {
this.routeType = routeType;
}
public String getRouteName() {
return routeName;
}
public void setRouteName(String routeName) {
this.routeName = routeName;
}
public String getShipper() {
return shipper;
}
public void setShipper(String shipper) {
this.shipper = shipper;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getVehicleNum() {
return vehicleNum;
}
public void setVehicleNum(String vehicleNum) {
this.vehicleNum = vehicleNum;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getVehicleType() {
return vehicleType;
}
public void setVehicleType(String vehicleType) {
this.vehicleType = vehicleType;
}
public Integer getTon() {
return ton;
}
public void setTon(Integer ton) {
this.ton = ton;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
四、配置spring、struts2、hibernate(JPA)整合并完成自动建表
1、配置web项目中的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>bos_management_web</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 初始化spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置spring配置文件位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置struts2核心控制器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
2、在web项目中添加spring配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<!-- 连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
<property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.37.128:1521:ORCL" />
<property name="user" value="heima_64" />
<property name="password" value="heima_64" />
</bean>
<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql:///test" />
<property name="user" value="root" />
<property name="password" value="root" />
</bean> -->
<!-- spring整合JPA -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 指定扫描的包,存放实体类 -->
<property name="packagesToScan" value="com.itheima.bos.domain" />
<!-- 指定持久层提供者为Hibernate -->
<property name="persistenceProvider">
<bean class="org.hibernate.ejb.HibernatePersistence" />
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<!-- 自动建表 -->
<property name="generateDdl" value="true" />
<property name="database" value="ORACLE" />
<property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="showSql" value="true" />
</bean>
</property>
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- 组件扫描 @Server @Controller @Repository -->
<context:component-scan base-package="com.itheima.bos.service,com.itheima.bos.web"/>
<!-- 事务注解支持 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 整合 spring data jpa-->
<jpa:repositories base-package="com.itheima.bos.dao" />
</beans>
3、创建各个子模块之间的依赖关系
web依赖service
service依赖dao
dao依赖domain
4、配置log4j.properties日志文件
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:\mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=info, stdout
5、启动项目,自动创建表
五、spring data jpa简化持久层dao开发
1、spring data简介
2、使用spring data JPA的好处
使用spring data JPA只需要定义一个接口,不需要实现类,在运行期间为我们自动生成一个代理
3、导入spring data jpa的坐标
4、在spring配置文件中配置spring data
5、定义收派标准的dao接口
package com.itheima.bos.dao.base;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import com.itheima.bos.domain.base.Standard;
/**
* 收派标准的持久层几口
* 集成JpaRepository<arg,arg> 参数1:实体类 参数2:实体类中主键的类型
* 自定义的方法需要遵循spring data JPA的命名规范
* @author Administrator
*
*/
public interface StandardDao extends JpaRepository<Standard, Integer> {
/*
* 根据名称查询
*/
public Standard findByName(String name);
/*
* 根据名称模糊查询
*/
public Standard findByNameLike(String string);
/*
* 根据操作员进行查询所有手牌标准
*/
public List<Standard> findByOperator(String operator);
/*
* 根据名称是null的查询所有
*/
public List<Standard> findByNameIsNull();
/*
* 不标准的命名方法与JPQL语句进行单独映射
*/
@Query("from Standard s where s.name like ?") //JPQL
public Standard findByXXXNameLike(String name);
/*
* 不标准的命名方法与SQL语句进行单独映射
*/
@Query(value = "select * from T_STANDARD s where s.C_NAME like ?",nativeQuery=true) //SQL
public Standard findByXXXXNameLike(String name);
/*
* 多参数查询
*
*/
public List<Standard> findByNameAndOperator(String name, String operator);
/*
* 命名不规范的多参数查询
*
*/
@Query("from Standard s where s.name like ? and s.operator like ?")
public List<Standard> findByXXXNameAndXXXOperator(String name, String operator);
/*
* 命名不规范且参数顺序与条件顺序不对应的的多参数查询
*
*/
@Query("from Standard s where s.name like ?2 and s.operator like ?1")
public List<Standard> findByXXNameAndXXOperator(String operator,String name );
/*
* 自定义的根据name删除实体类方法
* 注意:删除方法是需要提交事务的
*/
@Query("delete from Standard where name = ?")
@Modifying //此注解用来提交事务
public void deleteByName(String name);
}
6、在web项目中编写测试类
package bos_management_web;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.itheima.bos.dao.base.StandardDao;
import com.itheima.bos.domain.base.Standard;
/**
* spring data JPA中只提供简单的增删改查方法,如果需要使用复杂的查询方法,需要在接口中自定义
* 注意:在接口中自定义的方法,spring data JPA会自动进行实现,但是需要遵循spring data JPA定义的一套命名规范
*
* @author Administrator
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class SpringDataTest {
@Autowired
private StandardDao dao;
// 测试spring data JPA的查询方法 -- 查询所有
@Test
public void testQuery() {
List<Standard> list = dao.findAll();
for (Standard standard : list) {
System.out.println(standard.toString());
}
}
// 测试spring data JPA的查询方法 -- 根据id查询
@Test
public void testQueryById() {
Standard standard = dao.findOne(2);
System.out.println(standard);
}
// 测试spring data JPA的查询方法 -- 根据name查询
//注意:此时需要在接口中自定义findByName的方法
@Test
public void testQueryByName() {
Standard standard = dao.findByName("修改收派标准");
System.out.println(standard);
}
// 测试spring data JPA的查询方法 -- 根据name模糊查询
//注意:此时需要在接口中自定义findByNameLike的方法
@Test
public void testQueryByNameLike() {
Standard standard = dao.findByNameLike("修改收派");
System.out.println(standard);
}
// 测试spring data JPA的查询方法 -- 根据收派员查询所有标准
//注意:此时需要在接口中自定义findByOperator的方法
@Test
public void testQueryListByOperator() {
List<Standard> list = dao.findByOperator("冠希哥");
for (Standard standard : list) {
System.out.println(standard);
}
}
// 测试spring data JPA的查询方法 -- 根据名称和收派员查询所有标准
//注意:此时需要在接口中自定义findByNameAndOperator的方法,查询顺序即是查询条件的顺序
@Test
public void testQueryListByNameAndOperator() {
List<Standard> list = dao.findByNameAndOperator("修改收派标准","冠希哥");
for (Standard standard : list) {
System.out.println(standard);
}
}
// 测试spring data JPA的删除方法 -- 根据名称山粗
//注意:此时需要在接口中自定义deleteByName的方法
@Test
@Transactional
public void testDeleteByName() {
dao.deleteByName("修改收派标准");
}
// 测试spring data JPA的保存方法
@Test
public void testSave() {
Standard standard = new Standard();
standard.setName("测试添加收派标准");
dao.save(standard);
}
// 测试spring data JPA的删除方法
@Test
public void testDele() {
dao.delete(1);
}
// 测试spring data JPA的修改方法
@Test
public void testUpdate() {
Standard standard = new Standard();
standard.setId(2);
standard.setName("修改收派标准");
dao.save(standard);
}
}
7、spring data JPA自定义方法命名规范
六、收派标准添加
1、Window弹窗和Validation校验框的API
2、在html页面添加窗口弹出事件
3、页面展示效果
4、收派标准添加前台页面实现
目的:为保存按钮绑定事件
<!-- 页面加载完成,给上面的保存按钮 -->
<script type="text/javascript">
$(function(){
//为按钮绑定单击事件
$("#save").click(function(){
//进行表单校验,获取所有表单校验结果,当所有校验都通过时,返回值为true
var v = $("#standradForm").form("validate");
//alert(v);
if(v){
//表单校验通过,提交表单
alert(v);
$("#standardForm").submit();
}
});
});
</script>
5、收派标准添加后台页面实现
(1)、Action动作类
package com.itheima.bos.web.action.base;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.itheima.bos.domain.base.Standard;
import com.itheima.bos.service.base.StandardService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
* 收派标准的动作类
* @author Administrator
*
*/
@Namespace("/")
@ParentPackage("struts-default")
@Controller
@Scope("prototype")
public class StandardAction extends ActionSupport implements ModelDriven<Standard> {
private Standard model = new Standard();
@Override
public Standard getModel() {
return model;
}
@Autowired
private StandardService standardService;
/*
* 保存收派标准
*/
@Action(value="standardAction_save",results={
@Result(name="success",location="/pages/base/standard.html")
})
public String save(){
standardService.save(model);
return "success";
}
}
(2)、Service层代码
package com.itheima.bos.service.base;
import com.itheima.bos.domain.base.Standard;
public interface StandardService {
public void save(Standard model);
}
package com.itheima.bos.service.base.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.itheima.bos.dao.base.StandardDao;
import com.itheima.bos.domain.base.Standard;
import com.itheima.bos.service.base.StandardService;
@Service
@Transactional
public class StandardServiceImpl implements StandardService {
@Autowired
private StandardDao standardDao;
@Override
public void save(Standard model) {
standardDao.save(model);
}
}
(3)、Dao层代码
package com.itheima.bos.dao.base;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import com.itheima.bos.domain.base.Standard;
/**
* 收派标准的持久层几口
* 集成JpaRepository<arg,arg> 参数1:实体类 参数2:实体类中主键的类型
* 自定义的方法需要遵循spring data JPA的命名规范
* @author Administrator
*
*/
public interface StandardDao extends JpaRepository<Standard, Integer> {
/*
* 根据名称查询
*/
public Standard findByName(String name);
/*
* 根据名称模糊查询
*/
public Standard findByNameLike(String string);
/*
* 根据操作员进行查询所有手牌标准
*/
public List<Standard> findByOperator(String operator);
/*
* 根据名称是null的查询所有
*/
public List<Standard> findByNameIsNull();
/*
* 不标准的命名方法与JPQL语句进行单独映射
*/
@Query("from Standard s where s.name like ?") //JPQL
public Standard findByXXXNameLike(String name);
/*
* 不标准的命名方法与SQL语句进行单独映射
*/
@Query(value = "select * from T_STANDARD s where s.C_NAME like ?",nativeQuery=true) //SQL
public Standard findByXXXXNameLike(String name);
/*
* 多参数查询
*
*/
public List<Standard> findByNameAndOperator(String name, String operator);
/*
* 命名不规范的多参数查询
*
*/
@Query("from Standard s where s.name like ? and s.operator like ?")
public List<Standard> findByXXXNameAndXXXOperator(String name, String operator);
/*
* 命名不规范且参数顺序与条件顺序不对应的的多参数查询
*
*/
@Query("from Standard s where s.name like ?2 and s.operator like ?1")
public List<Standard> findByXXNameAndXXOperator(String operator,String name );
/*
* 自定义的根据name删除实体类方法
* 注意:删除方法是需要提交事务的
*/
@Query("delete from Standard where name = ?")
@Modifying //此注解用来提交事务
public void deleteByName(String name);
}