SSH+EasyUI实现对表的CRUD操作

目录

一.分页查询功能

1.1 后端实现

1.1.1 创建实体类

1.1.2 实现dao层

1.1.3 业务biz层

1.1.4 web层

1.2 前端实现

1.2.1 结果显示

二.添加功能

2.1 后端实现

扫描二维码关注公众号,回复: 5346013 查看本文章

2.1.1 dao层

2.1.2 Biz层

2.1.3 web层

2.2 前端实现

三.删除功能

3.1 后端实现

3.1.1 dao层

3.1.2 biz层

3.1.3 web层

3.2 前端实现

四.修改前先查询

4.1 dao层

4.2 biz层

4.3 web层

五.保存更新

5.1 dao层

5.2 biz层

5.3 web层

5.4 前端实现


一.分页查询功能

1.1 后端实现

1.1.1 创建实体类

/**
 * 部门实体类
 */
public class Dep {
	//部门编号
	private Long uuid;
	//部门名称
	private String name;
	//部门电话
	private String tele;
	public Long getUuid() {
		return uuid;
	}
	public void setUuid(Long uuid) {
		this.uuid = uuid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTele() {
		return tele;
	}
	public void setTele(String tele) {
		this.tele = tele;
	}
	
}

1.1.2 实现dao层

/**
 * 部门数据访问接口
 */
public interface IDepDao {
     /**
	 * 条件查询部门信息
	 * @param dep1
	 * @param dep2
	 * @param param
	 * @param firstResult
	 * @param maxResults
	 * @return
	 */
    	List<Dep> getList(Dep dep1,Dep dep2,Object param,int firstResult, int maxResults);
	/**
	 * 获取条件查询的总记录数
	 * @param dep1
	 * @return
	 */
	long getCount(Dep dep1,Dep dep2,Object param);
}
/**
 * 部门的数据访问接口实现类
 */
public class DepDao extends HibernateDaoSupport implements IDepDao {
	 /**
	 * 条件查询部门信息
	 */
	public List<Dep> getList(Dep dep1,Dep dep2,Object param, int firstResult, int maxResults) {
		DetachedCriteria dc = getDetachedCriteria(dep1);
		return (List<Dep>) this.getHibernateTemplate().findByCriteria(dc,firstResult, maxResults);
	}
	/**
	 * 设置查询条件
	 * @param dep1
	 * @return
	 */
	private DetachedCriteria getDetachedCriteria(Dep dep1){
		DetachedCriteria dc =DetachedCriteria.forClass(Dep.class);
		if(null != dep1){
			//是否输入部门名称
			if(null != dep1.getName() && dep1.getName().trim().length() > 0){
				//MatchMode.ANYWHERE => % %
				//MatchMode.END =>      %name
				//MatchMode.START  =>   name%
				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;
	}
	/**
	 * 获取条件查询的总记录数
	 * @param dep1
	 * @return
	 */
	public long getCount(Dep dep1,Dep dep2,Object param) {
		DetachedCriteria dc = getDetachedCriteria(dep1);
		dc.setProjection(Projections.rowCount());
		List<Long> list = (List<Long>)getHibernateTemplate().findByCriteria(dc);
		return list.get(0);
	}
}

1.1.3 业务biz层

/**
 * 部门业务接口
 */
public interface IDepBiz {

	/**
	 * 条件查询部门信息
	 * @param dep1
	 * @return
	 */
	List<Dep> getList(Dep dep1,Dep dep2,Object param,int firstResult, int maxResults);
	/**
	 * 获取记录总数
	 * @param dep1
	 * @param dep2
	 * @param param
	 * @return
	 */
	long getCount(Dep dep1,Dep dep2,Object param);

}
/**
 * 部门业务实现
 */
public class DepBiz implements IDepBiz {
    	//数据访问注入
	private DepDao depDao;
	
	public DepDao getDepDao() {
		return depDao;
	}
	public void setDepDao(DepDao depDao) {
		this.depDao = depDao;
	}

    /**
	 * 条件查询部门信息
	 */
	public List<Dep> getList(Dep dep1,Dep dep2,Object param,int firstResult, int maxResults) {
		return depDao.getList(dep1,dep2,param,firstResult, maxResults);
	}
	/**
	 * 查询总记录数
	 */
	public long getCount(Dep dep1,Dep dep2,Object param) {
		return depDao.getCount(dep1,dep2,param);
	}

}

1.1.4 web层

/**
 * 部门Action
 */
public class DepAction {
	
	private Dep dep1;
	private Dep dep2;
	private Object param;
	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;
	}
	public Dep getDep1() {
		return dep1;
	}
	public void setDep1(Dep dep1) {
		this.dep1 = dep1;
	}
	//分页参数
	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;
	}	
	//注入Biz
	private IDepBiz depBiz;
	
	public IDepBiz getDepBiz() {
		return depBiz;
	}
	public void setDepBiz(IDepBiz depBiz) {
		this.depBiz = depBiz;
	}

	/**
	 * 条件查询部门信息
	 */
	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);
			String listString = JSON.toJSONString(mapData);
			write(listString);
			
	}
	
	/**
	 * 转换json数据并返回到页面
	 * @param jsonString
	 */
	public void write(String jsonString){
		try {
			//响应对象
			HttpServletResponse response = ServletActionContext.getResponse();
			//设置编码
			response.setContentType("text/html;charset=utf-8"); 
			//输出给页面
			response.getWriter().write(jsonString);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


}

1.2 前端实现

<!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(){
			$('#grid').datagrid({    
	    url:'dep_getList',    
	    columns:[[    
	        {field:'uuid',title:'部门编号',width:100},    
	        {field:'name',title:'部门名称',width:100},    
	        {field:'tele',title:'部门联系电话',width:100,align:'right'},
	        {field:'-',title:'操作',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;
			}}
	    ]],
	    singleSelect: true,
	    pagination: true,
	    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);//这句话代替了下面注释的功能
				//把json对象转换成字符串
				/* $.ajax({
					url: 'dep_getList',
					data: formData,
					dataType: 'json',
					type: 'post',
					success:function(rtn){
						//grid加载数据
						//datagrid(参数1,参数2)
						//参数1 =》 datagrid里的方法名称
						//参数2 =》 datagrid里的方法所需要的参数
						$('#grid').datagrid('loadData',rtn);
						//
					}
				}); */
			});			

	}); 	

</script>
</head>
<body>
<div class="easyui-panel" style="padding-left:4px;border-bottom:0px;">
	<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 id="btnSearch" type="button">查询</button>
		</form>
	<div style="height:2px;"></div>
</div>
<table id="grid"></table>
</body>
</html>

1.2.1 结果显示

二.添加功能

2.1 后端实现

2.1.1 dao层

     接口中添加如下方法

	/**
	 * 新增
	 * @param dep
	 */
	void add(Dep dep);

      接口实现类 

	/**
	 * 新增
	 * @param dep
	 */
	public void add(Dep dep) {
		this.getHibernateTemplate().save(dep);
	}

2.1.2 Biz层

接口

	/**
	 * 新增
	 * @param dep
	 */
	void add(Dep dep);

实现类

	/**
	 * 新增部门
	 */
	public void add(Dep dep) {
		depDao.add(dep);
	}

2.1.3 web层

	private Dep dep;
	public Dep getDep() {
		return dep;
	}
	public void setDep(Dep dep) {
		this.dep = dep;
	}
	/**
	 * 增加一个部门
	 */
	public void add(){
		//{"success":true,"message":""}
		//返回前端的JSON数据
		try {
			depBiz.add(dep);
			ajaxReturn(true, "新增成功");
		} catch (Exception e) {
			e.printStackTrace();
			ajaxReturn(false, "新增失败");
		}
	}
	/**
	 * 返回操作结果
	 * @param success
	 * @param message
	 */
	public void ajaxReturn(boolean success, String message){
		//返回前端的JSON数据
		Map<String, Object> rtn = new HashMap<String, Object>();
		rtn.put("success",success);
		rtn.put("message",message);
		write(JSON.toJSONString(rtn));
	}

2.2 前端实现

添加窗口

<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 id="btnSave" type="button">保存</button>
	</form>
</div>

执行js 

			$('#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');
						});
					}
				});
			});
			$('#editDlg').dialog({    
			    title: '部门编辑',    
			    width: 300,
			    height: 200,
			    closed: true,//窗口是是否为关闭状态, true:表示关闭    
			    modal: true//模式窗口
			});

三.删除功能

3.1 后端实现

3.1.1 dao层

	/**
	 * 删除
	 */
	void delete(Long uuid);
	/**
	 * 删除
	 */
	public void delete(Long uuid){
		//让对象进入持久化状态
		Dep dep = this.getHibernateTemplate().get(Dep.class, uuid);
		//删除持久化状态
		this.getHibernateTemplate().delete(dep);
	}

3.1.2 biz层

	/**
	 * 删除
	 */
	void delete(Long uuid);
	/**
	 * 删除
	 */
	public void delete(Long uuid){
		depDao.delete(uuid);
	}

3.1.3 web层

	private long id;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	/**
	 * 删除
	 * @param jsonString
	 */
	public void delete(){
		
		try {
			depBiz.delete(id);
			ajaxReturn(true, "删除成功");
		} catch (Exception e) {
			e.printStackTrace();
			ajaxReturn(false, "删除失败");
		}
	}

3.2 前端实现

	/**
	 * 删除部门
	 */
	function del(uuid){
		$.messager.confirm("确认","确认要删除吗?",function(yes){
			if(yes){
				$.ajax({
					url: 'dep_delete?id=' + uuid,
					dataType: 'json',
					type: 'post',
					success:function(rtn){
						$.messager.alert("提示",rtn.message,'info',function(){
							//刷新表格数据
							$('#grid').datagrid('reload');
						});
					}
				});
			}
		});
	}

四.修改前先查询

4.1 dao层

	/**
	 * 通过编号查询对象
	 * @param uuid
	 * @return
	 */
	Dep get(Long uuid);
	/**
	 * 通过编号查询对象
	 * @param uuid
	 * @return
	 */
	public Dep get(Long uuid){
		return getHibernateTemplate().get(Dep.class, uuid);
	}
	

4.2 biz层

	/**
	 * 通过编号查询对象
	 * @param uuid
	 * @return
	 */
	Dep get(Long uuid);
	
	/**
	 * 通过编号查询对象
	 * @param uuid
	 * @return
	 */
	public Dep get(Long uuid){
		return depDao.get(uuid);
	}

4.3 web层

	/**
	 * 通过编辑查询对象
	 */
	public void get(){
		Dep dep = depBiz.get(id);
		String jsonString = JSON.toJSONString(dep);
		System.out.println("转换前:" + jsonString);
		//{"name":"管理员组","tele":"000011","uuid":1}
		String jsonStringAfter = mapData(jsonString, "dep");
		System.out.println("转换后:" + jsonStringAfter);
		write(jsonStringAfter);
	}
	/**
	 * 修改原json中的key名称与页面name值相同
	 * //{"name":"管理员组","tele":"000011","uuid":1} 
	 * @param jsonString JSON数据字符串
	 * @param prefix 要加上的前缀
	 * @return  {"dep.name":"管理员组","dep.tele":"000011","dep.uuid":1} 
	 */
	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);
	}

五.保存更新

5.1 dao层

	/**
	 * 更新
	 */
	void update(Dep dep);
	/**
	 * 更新
	 */
	public void update(Dep dep){
		this.getHibernateTemplate().update(dep);
	}

5.2 biz层

	/**
	 * 更新
	 */
	void update(Dep dep);
	/**
	 * 更新
	 */
	public void update(Dep dep){
		depDao.update(dep);
	}

5.3 web层

	/**
	 * 修改
	 */
	public void update(){
		try {
			depBiz.update(dep);
			ajaxReturn(true, "修改成功");
		} catch (Exception e) {
			e.printStackTrace();
			ajaxReturn(false, "修改失败");
		}
	}

5.4 前端实现

	/**
	 * 修改部门
	 */
	function edit(uuid){
		//弹出窗口
		$('#editDlg').dialog('open');
		
		//清空表单内容
		$('#editForm').form('clear');
		method = "update";
		//加载数据
		$('#editForm').form('load','dep_get?id=' + uuid);
	}

猜你喜欢

转载自blog.csdn.net/qq_30162219/article/details/87107298