目录
一.分页查询功能
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);
}