SSH综合项目实战(快递) -- day02 EasyUI菜单、实体类导入、spring data使用

一、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);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值