formData-JSon,java解析Excle,获取父类泛型,spring整合jpa实现条件分页查询

  • 本文为原创:欢迎转载学习。

1 . java生成Excel分析:(可以参考官网)

创建HSSFWorkbook
创建HSSFSheet
创建Row
获取row填充数据:row.getCell(0).getStringCellValue()

@Action(value="uploadAreaInfo")
	public String uploadAreaInfo() throws Exception{
		List<Area> list = new ArrayList<Area>();
		//利用poi的hssp格式解析
		// 加载excel对象
		HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));
		//读取工作蒲第一个sheet
		HSSFSheet sheet = wb.getSheetAt(0);
		//读取工作蒲中的每一行的数据
		for (Row row : sheet) {
			//一行数据对应一个对象
			if (row.getRowNum()==0) {
				//跳过第一行
				continue;
			}
			if (row.getCell(0)==null 
					||StringUtils.isBlank( row.getCell(0).getStringCellValue())) {
				//跳过空行
				continue;
			}
			//将每一行的数据
			Area area = new  Area();
			area.setId(row.getCell(0).getStringCellValue());
			area.setProvince(row.getCell(1).getStringCellValue());
			area.setCity(row.getCell(2).getStringCellValue());
			area.setDistrict(row.getCell(3).getStringCellValue());
			area.setPostcode(row.getCell(4).getStringCellValue());
			list.add(area);
		}
		//调用业务层保存
		areaService.save(list);
		return NONE;
	}

2 . 将表单的数据转换成json格式数据

$.fn.serializeJson = function() {
	var serializeObj = {};
	var array = this.serializeArray();
	var str = this.serialize();

	$(array).each(function() {
		if(serializeObj[this.name]) {
			if($.isArray(serializeObj[this.name])) {
				serializeObj[this.name].push(this.value);
			} else {
				serializeObj[this.name] = [serializeObj[this.name], this.value];
			}
		} else {
			serializeObj[this.name] = this.value;
		}
	});
	return serializeObj;
}

3.获取父类的泛型

		//动态获取当前类的父类的对象
		Type type = this.getClass().getGenericSuperclass();			
		ParameterizedType parameterizedType = (ParameterizedType) type;
		//获取第一个泛型参数
		Class<T> modelClass = (Class<T>)parameterizedType.getActualTypeArguments()[0];
		try {
			model = modelClass.newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		} 

4 . jquery easyUi的分页查询数据

//分页的数据
	private Integer page;
	private Integer rows;
	
	public void setPage(Integer page) {
		this.page = page;
	}

	public void setRows(Integer rows) {
		this.rows = rows;
	}
	
	public Integer getPage() {
		return page;
	}

	public Integer getRows() {
		return rows;
	}

	protected <T> void pushPageInfo(Page<T> result){
		
		Map<String,Object> map = new HashMap<>();
		map.put("total", result.getTotalElements());
		map.put("rows", result.getContent());
		ActionContext.getContext().getValueStack().push(map);
	}
	

5 . Spring整合jpa实现分页查询和条件查询代码截取

	//查询数据并分页显示
	@Action(value="findAllArea",results = {@Result(name="success",type="json")})
	public String findAllArea(){
		//分页数据封装
		Pageable pageable = new  PageRequest(page-1, rows);
		//tiao条件封装
		Specification<Area> specification = new Specification<Area>() {
			
	@Override
	public Predicate toPredicate(Root<Area> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
		System.out.println(root);
		System.out.println(query);
		System.out.println(cb);
		//添加查询条件 
		List<Predicate> list = new ArrayList<>();
		if (StringUtils.isNotBlank(area.getProvince())) {
			Predicate p1 = cb.like(root.get("province")
						.as(String.class), area.getProvince()+"%");
			System.out.println(root.get("province").as(String.class));
		System.out.println(area.getProvince());
			list.add(p1);
				}
		if (StringUtils.isNotBlank(area.getCity())) {
			Predicate p2 = cb.like(root.get("city")
							.as(String.class), area.getCity()+"%");
					list.add(p2);
				}
		if (StringUtils.isNotBlank(area.getDistrict())) {
			Predicate p3 = cb.like(root.get("district")
							.as(String.class), area.getDistrict()+"%");
					list.add(p3);
				}
				return cb.and(list.toArray(new Predicate[0]));
			}
		};
		
		Page<Area> result =areaService.findAllAreaInfo(pageable,specification);
		Map<String,Object> map = new HashMap<>();
		map.put("total", result.getTotalElements());
		map.put("rows", result.getContent());
		ActionContext.getContext().getValueStack().push(map);
		return SUCCESS;
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值