bos07 - 添加取派员与取派员分页查询

[TOC]

添加取派员

一、基础准备

  1. 更改staff.jsp页面,删除编号的<input>标签
  2. 更改staff.hbm.xml配置文件,生成策略为uuid(Hibernate自动生成的长度为32为,没有横线)

二、添加基于easyui的自定义校验规则 - 扩展手机号校验规则

  1. 自定义扩展规则
$(function(){
//扩展手机号校验规则
$.extend($.fn.validatebox.defaults.rules, {
telephone:{
validator:function(value, param){
var reg = /^1[3|4|5|7|8][0-9]{9}$/;
return reg.test(value);
},
message:"手机号输入有误"
}
});
});
  1. 手机号的应用自定义规则
<input type="text" data-options="validType:'telephone'" name="telephone" class="easyui-validatebox" required="true"/>

三、为保存按钮添加事件

//为保存按钮添加事件
$("#save").click(function(){
//表单校验
var validateRes = $("#addStaffForm").form("validate");
if(validateRes){
//通过则提交表单
$("#addStaffForm").submit();
}
});

四、服务端实现

  1. 创建StaffAction.add方法
@Controller("staffAction")
@Scope("prototype")
public class StaffAction extends BaseAction<Staff>{

private static final long serialVersionUID = 1L;

/**
* 添加取派员
* @return
*/
public String add(){
staffService.save(model);
return LIST;
}

@Autowired
private StaffService staffService;

public StaffService getStaffService() {
return staffService;
}

public void setStaffService(StaffService staffService) {
this.staffService = staffService;
}
}
  1. 创建StaffService相关
public interface StaffService {

void save(Staff model);

}

@Service
@Transactional(isolation=Isolation.REPEATABLE_READ, propagation=Propagation.REQUIRED, readOnly=true)
public class StaffServiceImpl implements StaffService{

@Override
@Transactional(isolation=Isolation.REPEATABLE_READ, propagation=Propagation.REQUIRED, readOnly=false)
public void save(Staff model) {
staffDao.save(model);
}
private StaffDao staffDao;

public StaffDao getStaffDao() {
return staffDao;
}

public void setStaffDao(StaffDao staffDao) {
this.staffDao = staffDao;
}

}
  1. 创建StaffDao相关
public interface StaffDao extends BaseDao<Staff>{

}

public class StaffDaoImpl extends BaseDaoImpl<Staff> implements StaffDao{

}
  1. 配置StaffAction
<action name="staffAction_*" class="staffAction" method="{1}">
<result name="list">/WEB-INF/pages/base/staff.jsp</result>
</action>

取派员分页查询

一、页面调整

  1. 修改staff.jsp中的表格的获取datagrid数据的url为staffAction_pageQuery.action

二、封装PageBean工具类

public class PageBean<T> {

private int currentPage;
private int pageSize;
private DetachedCriteria detachedCriteria;
private int total;
private List<T> rows;

public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public DetachedCriteria getDetachedCriteria() {
return detachedCriteria;
}
public void setDetachedCriteria(DetachedCriteria detachedCriteria) {
this.detachedCriteria = detachedCriteria;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
}

三、服务端实现

  1. 编写StaffAction.pageQuery
/**
* 分页查询取派员
* @return
*/
public String pageQuery(){

PageBean<Staff> pageBean = new PageBean<Staff>();
pageBean.setCurrentPage(page);
pageBean.setPageSize(rows);
DetachedCriteria dc = DetachedCriteria.forClass(Staff.class);
pageBean.setDetachedCriteria(dc);

staffService.pageQuery(pageBean);

//将pageBean转为json写到页面中
JsonConfig jsonConfig = new JsonConfig();
//设置排除属性
jsonConfig.setExcludes(new String[]{"currentPage", "detachedCriteria", "pageSize"});
String json = JSONObject.fromObject(pageBean, jsonConfig).toString();
System.out.println(json);
ServletActionContext.getResponse().setContentType("text/json;charset=utf-8");
BOSUtils.getWriter().write(json);
return NONE;
}
  1. 编写StaffService.pageQuery
@Override
public void pageQuery(PageBean<Staff> pageBean) {
staffDao.pageQuery(pageBean);
}

3.在BaseDao抽取通用的分页查询方法,并在BaseDaoImpl中实现

@Override
@SuppressWarnings("unchecked")
public void pageQuery(PageBean<T> pageBean) {

int currentPage = pageBean.getCurrentPage();
int pageSize = pageBean.getPageSize();
DetachedCriteria detachedCriteria = pageBean.getDetachedCriteria();

//指定Hibernate框架发出sql的形式 - 查询记录总数
detachedCriteria.setProjection(Projections.rowCount());
List<Long> countList = (List<Long>) getHibernateTemplate().findByCriteria(detachedCriteria);
Long count = countList.get(0);
pageBean.setTotal(count.intValue());

//清空指定的查询记录数,以进行分页查询
detachedCriteria.setProjection(null);
int firstResult = (currentPage-1)*pageSize;
int maxResults = pageSize;
List<T> rows = (List<T>) getHibernateTemplate().findByCriteria(detachedCriteria,firstResult,maxResults);
pageBean.setRows(rows);
}

猜你喜欢

转载自www.cnblogs.com/tommychok/p/9028310.html
今日推荐