组合条件分页查询
<script type="text/javascript">
$(function(){
$("#searchBtn").click(function(){
// 组装数据
var formData = $("#searchForm").serializeJSON();
//封装表单,
**$("#grid").datagrid('load',formData);**
})
})
</script>
后端代码,dao层接口需要继承 JpaSpecificationExecutor
@Action("courierAction_findByPage")
public void findByPage(){
// 条件查询
// model.getCourierNum();//工号
// model.getStandard().getName(); 收派标准的名称
// model.getType(); //类型
// model.getCompany() //公司
// Specification 相当于 DetachedCriteria
DetachedCriteria dc = DetachedCriteria.forClass(Courier.class);
if(StringUtils.isNotBlank(model.getCourierNum())){
dc.add(Restrictions.like("courierNum", model.getCourierNum()));
}
Specification<Courier> specification = new Specification<Courier>() {
@Override
public Predicate toPredicate(Root<Courier> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
// root 查询对象的主体
// cb 相当于 Restrictions
//工号
List<Predicate> list = new ArrayList<Predicate>();//把组装的条件对象先存放到这个集合中
if(StringUtils.isNotBlank(model.getCourierNum())){
Predicate predicate1 = cb.like(root.get("courierNum").as(String.class), "%"+model.getCourierNum()+"%");
// return predicate;
list.add(predicate1);
}
// 收派标准的名称
if(model.getStandard()!=null&&StringUtils.isNotBlank(model.getStandard().getName())){
// 需要关联收派标准对象 select * from Courier c inner join standard s
Join<Object, Object> join = root.join("standard");
Predicate predicate2 = cb.like(join.get("name").as(String.class), "%"+model.getStandard().getName()+"%");
// return predicate2;
list.add(predicate2);
}
//类型
if(StringUtils.isNotBlank(model.getType())){
Predicate predicate3 = cb.like(root.get("type").as(String.class), "%"+model.getType()+"%");
// return predicate3;
list.add(predicate3);
}
//公司
if(StringUtils.isNotBlank(model.getCompany())){
Predicate predicate4 = cb.like(root.get("company").as(String.class), "%"+model.getCompany()+"%");
// return predicate4;
list.add(predicate4);
}
// 判断list的size是否为0,如果为0直接return null
if(list.size()==0){
return null;
}
// list转成数组再转成Predicate对象
Predicate[] predicates = new Predicate[list.size()];
predicates = list.toArray(predicates);
return cb.and(predicates);
}
};
Pageable pageable = new PageRequest(page-1, rows);
Page page = service.findByPage(specification,pageable);
// 拼装datagrid分页时需要的数据格式
// {"total":100,"rows":[{},{},{}]}
Map<String,Object> map = new HashMap<String,Object>();
map.put("total", page.getTotalElements());
map.put("rows", page.getContent());
JsonConfig jsonConfig = new JsonConfig();
// 设置在转json时排除的字段
jsonConfig.setExcludes(new String[]{"fixedAreas"});
String string = JSONObject.fromObject(map, jsonConfig).toString();
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/json;charset=utf-8");
try {
response.getWriter().write(string);
} catch (IOException e) {
e.printStackTrace();
}
}
一键上传
jQuery OCUpload一键上传插件
前端代码
$("#button-import").upload({
action:'../../areaAction_importXls.action',
//名字要和后端属性name名一样
name:'myFile'
})
action层代码
private File myFile;
public File getMyFile() {
return myFile;
}
public void setMyFile(File myFile) {
this.myFile = myFile;
}
@Action("areaAction_importXls")
public void importXls(){
System.out.println(myFile);
}
service层
@Override
public void importXls(FileInputStream fileInputStream) {
// 1、获取workbook对象
try {
HSSFWorkbook book = new HSSFWorkbook(fileInputStream);
HSSFSheet sheet = book.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();
Area area = null;
List<Area> list = new ArrayList<Area>();
for (int i = 1; i <= lastRowNum; i++) {
HSSFRow row = sheet.getRow(i);
String id = row.getCell(0).getStringCellValue();
String province = row.getCell(1).getStringCellValue();
String city = row.getCell(2).getStringCellValue();
String district = row.getCell(3).getStringCellValue();
String postcode = row.getCell(4).getStringCellValue();
area = new Area();
area.setId(id);
area.setProvince(province);
area.setCity(city);
area.setDistrict(district);
area.setPostcode(postcode);
province = province.substring(0, province.length()-1);
city = city.substring(0, city.length()-1);
district = district.substring(0, district.length()-1);
// 城市编码
String citycode = PinYin4jUtils.hanziToPinyin(city,"");
area.setCitycode(citycode);
// 简码
String[] headByString = PinYin4jUtils.getHeadByString(province+city+district);
String shortcode = StringUtils.join(headByString);
area.setShortcode(shortcode);
list.add(area);
}
dao.save(list);
}
catch (IOException e) {
e.printStackTrace();
}
}