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 后端实现

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSH是指Struts2+Spring+Hibernate三大框架组合,它们分别提供了Web层、业务逻辑层和数据访问层的功能,可以快速开发Web应用程序。而EasyUI是一款基于jQuery的UI框架,它提供了丰富的前端UI组件和易用性,可以帮助我们快速开发出漂亮的Web应用程序。 针对学生信息管理系统的开发,我们可以利用这些技术来实现。具体步骤如下: 1. 搭建SSH开发环境,包括配置Struts2、Spring和Hibernate等框架的相关配置文件,并且准备好数据库。 2. 利用Hibernate来映射数据库表,创建学生信息表的实体类,并且编写相关的DAO接口和DAO实现类,实现对学生信息表的增删改查操作。 3. 利用Struts2框架来处理前端请求,编写Action类和相关的配置文件,将前端请求映射到相应的Action方法上,实现对学生信息表的增删改查操作。 4. 利用Spring框架来管理业务逻辑层和数据访问层的对象,在业务逻辑层中调用DAO层的方法来实现对学生信息表的增删改查操作,并且通过配置文件进行依赖注入。 5. 利用EasyUI框架来设计前端页面,包括学生信息列表、添加学生信息、修改学生信息和删除学生信息等页面,并且利用jQuery来实现页面的交互效果。 总的来说,学生信息管理系统的开发涉及到了前端的设计和后端的开发,需要掌握一定的HTML、CSS、JavaScript、Java等技术,同时需要了解SSHEasyUI的相关知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值