1、使用第三方PageHelper分页对象
Page<MallCashcouponUser> page = PageHelper.startPage(mallCashcouponUser.getPageIndex(), mallCashcouponUser.getPageSize())
.doSelectPage(() -> mallCashcouponUserMapper.getNotUseCashcoupon(userId));
List<MallCashcouponUser> mallCashcouponUserList = page.getResult();
PageView pageView = PageView.getPageView(mallCashcouponUser.getPageIndex(), mallCashcouponUser.getPageSize());
pageView.setRowCount(page.getTotal());
return responseWithJson(request, true, mallCashcouponUserList,pageView);
2、计算Double型保留2位并转化成String:
goodsSku.setSkuOriginalPrice(Double.parseDouble(String.format("%.2f",Double.valueOf(price)*1.12));// 易购价
Double型向上保留1位:
new BigDecimal(Double.parseDouble(String.format("%.2f",Double.valueOf(price)*Constants.MALL_SNPRICE_ORIGINAL_PERCENT_UNFIXED))).setScale(1, BigDecimal.ROUND_UP).doubleValue();
Double型比较大小:
Double.doubleToLongBits(record.getPayFee())!=Double.doubleToLongBits(payFee)
Integer型比较大小
要么调用Integer.intValue()转为基本类型用“==”比较,要么直接用equals比较。
3、RequestMapping中属性作用
生产:produces="application/json;charset=UTF-8";
消费:consumes="application/x-www-form-urlencoded;charset=UTF-8";
4、验证手机号正则
private static boolean isMobileNO(String mobiles){
Pattern p = Pattern.compile("^(1[0-9])\\d{9}$");
Matcher m = p.matcher(mobiles);
return m.find();
}
5、json格式互转
对象转json:
String questionOptions = JsonUtils.objectToJson(optionslist);
json转对象:
QOptionsV qOptionsVBean = (QOptionsV)JSONObject.toBean(JSONObject.fromObject(answers.getQuestionOptions()),QOptionsV.class);
集合转json:
JSONArray jsonArray = JSONArray.fromObject(list);
json转集合:
List<Employee> list = (List<Employee>) jsonArray.toCollection(jsonArray, Employee.class);
6、请求转json
//request.getInputStream()转json
String jsonParam= null;
try {
BufferedReader streamReader = new BufferedReader( new InputStreamReader(super.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null){
responseStrBuilder.append(inputStr);
JSONObject jsonObject = JSONObject.parseObject(responseStrBuilder.toString());
jsonParam= jsonObject.toJSONString();
System.out.println(jsonParam);
}
} catch (Exception e) {
e.printStackTrace();
}
7、Beanutils拷贝对象
BeanUtils.copyProperties(userForm, user); //拷贝要修改的值
8、验证数据的正确性
java的校验框架执行,比如JSR303;
除了JSR303验证方法,我们还可以使用spring validator,来自定义自己的校验规则。
9、Spring断言Assert类校验入参
Assert.notNull(record.getOriginalMemberId(), "被回复人ID不能为空");
Assert.hasText(record.getReplyEvaluation(), "回复内容不能为空");
Assert.isTrue(evaluation.getAuditStatus()==1, "原评论未审核通过");
10、java8之Optional空值处理
User user = new User("john@gmail.com", "1234");
List<String> emails = Optional.ofNullable(user)
.stream()
.filter(u -> u.getEmail() != null && u.getEmail().contains("@"))
.map( u -> u.getEmail())
.collect(Collectors.toList());
11、一些名词
spring 可以看成一个大的集合,他由许多开源框架和组件组成,是一个统称;
springframework 是sping 里面的一个开源框架,主要用户javaee的企业开发;
springmvc是springframework里面的一个组件,用于javaee开发过程中的控制层,相当于struts的功能;
什么是热部署:服务器正在运行,无须重启服务器,就可以加载更改的代码;
热部署:就是容器状态在运行的情况下重新部署整个项目.
在这种情况下一般整个内存会清空,重新加载.这种方式可能会造成session丢失等情况.
简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.
热加载:就是容器状态在运行的情况下重新加载改变编译后的类.
在这种情况下内存不会清空,session不会丢失,但容易造成内存溢出,或者找不到方法。
因为内存无法转变成对像.一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的.
12、Eclipse快速查询该类被哪些类引用了
在类名上点击右键,选Reference->Workingspace或者直接快捷键Ctrl+Shift+G
13、list迭代器
for(Iterator<String> it=list.iterator();it.hasNext();){
System.out.println(it.next());
}
14、读取文件目录
new File(Text.class.getResource("/template").getFile())
15.调试函数
if (!WebTool.isDebugger()) {
int userId= 4;
}