1、使用hibernate.validator校验非空,在FormData类中 name字段上面加@NotEmpty

@NotEmpty(message = "姓名必填")
private String name;

在Controller  @Valid注解formData   ,bindingResult.hasErrors() 来看是否校验出错

public void save(@Valid FormData formData ,BindingResult bindingResult){

    if (bindingResult.hasErrors() ) {

        log.error("参数不正确,formData ={}",formData );

        throw new SellExcetion(ResultEnum.PARAM_ERROR.getCode(),

                bindingResult.getFieldError().getDefaultMessage());

    }

}

2、@Transactional 加事物

3、如果想productId 在返回Json 为 id,那就在productId属性 加上@JsonProperty("id") 如:

@JsonProperty("id")
private String productId;

4、//json to Object

Gson gson = new Gson();

try {

   OrderDetailList   orderDetailList = gson.fromJson(orderForm.getItems(),

            new TypeToken<List<OrderDetail>>(){}.getType());

    orderDTO.setOrderDetailList(orderDetailList);

}catch (Exception e) {

    log.error("【对象转换】 错误, String = {}",orderForm.getItems());

    throw new SellExcetion(ResultEnum.PARAM_ERROR);

}

5、

@JsonIgnoreProperties

此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。

如果指定要忽略的字段。使用方法如下:

@JsonIgnoreProperties({ "name" })
指定的字段不会被序列化和反序列化。

@JsonIgnore

此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。

@JsonFormat

此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")

@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
private Date updateTime;

效果: "updateTime": "2017-10-11 12-40-24",

@JsonSerialize

此注解用于属性或者getter方法上,用于在序列化时可以执行我们的方法

@JsonSerialize(using = Date2longSerializer.class)
private Date createTime;

这里你也可以格式化  ,最后jsonGenerator.writeString(string);

public class Date2longSerializer extends JsonSerializer<Date>{

    @Override

    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {

        jsonGenerator.writeNumber(date.getTime() / 1000);

    }

}

效果:"createTime": 1507725624,

@JsonDeserialize

此注解用于属性或者setter方法上,用于在反序列化时可以执行我们的方法,类似于上面的@JsonSerialize

@JsonDeserialize(using = DateDeserializer.class)
private Date updateTime;

这里加了一天时间

public class DateDeserializer extends JsonDeserializer<Date> {

    @Override

    public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {

        Date date = deserializationContext.parseDate(jsonParser.getText());

        Calendar cal = Calendar.getInstance();

        cal.setTime(date);

        cal.add(Calendar.DATE, 1);

        return cal.getTime();

    }

}

测试:

public void test2() throws IOException {

    String orderDTOJson = "{\"buyerName\":\"李四\",\"buyerPhone\":\"1382719972\",\"buyerAddress\":\"男生\",\"buyerOpenid\":\"sdsdsadasd\",\"orderAmount\":450.00,\"orderStatus\":0,\"payStatus\":0,\"createTime\":1507725624000,\"updateTime\":\"1507725624000\",\"orderId\":\"1507725621667450867\"}";

    ObjectMapper mapper = new ObjectMapper();

    OrderDTO orderDTO = mapper.readValue(orderDTOJson, OrderDTO.class);

    System.out.println(orderDTO.getUpdateTime());

}

hibernate.validator 与 jackson的更多相关文章

  1. java.lang.NoClassDefFoundError: org/hibernate/validator/internal/engine/DefaultClockProvider

    ①在springboot的spring-boot-starter-web默认引入了以下依赖: <dependency> <groupId>com.fasterxml.jacks ...

  2. spring boot中使用javax.validation以及org.hibernate.validator校验入参

    这里springboot用的版本是:<version>2.1.1.RELEASE</version> 自带了hibernate.validator,所以不用添加额外依赖 1.创 ...

  3. Hibernate Validator验证标签说明

    Hibernate Validator是JSR-303的一个实现. 在FormBean里添加Hibernate Validator的注解,与定义一个校验类的做法相比.注解更加简洁.灵活. Bean V ...

  4. 非WEB项目中引入Hibernate Validator

    前言: 网上一些朋友分享了关于hibernate-validator的使用方法,但是不是缺少关联库信息,就是提供的参考代码中缺少自定类. 希望我这一篇博客能够让你顺利的跑出预期的结果. 如果有错,可以 ...

  5. Hibernate Validator

    http://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html_single/#example-group-interfaces

  6. spring boot 1.4默认使用 hibernate validator

    spring boot 1.4默认使用 hibernate validator 5.2.4 Final实现校验功能.hibernate validator 5.2.4 Final是JSR 349 Be ...

  7. Hibernate validator验证

    spring-mvc配置 <mvc:annotation-driven validator="validator" /> <bean id="valid ...

  8. springMvc 支持hibernate validator

    SpringMVC 支持Hibernate Validator 发表于9个月前(2014-08-04 11:34)   阅读(1780) | 评论(0) 11人收藏此文章, 我要收藏 赞0 5月23日 ...

  9. SpringMVC利用Hibernate validator做字段验证

    1.添加Hiberbate validator相关的jar包 2.字需要验证的formbean 上添加验证的注解,内置注解有: dBean Validation 中内置的 constraint @Nu ...

随机推荐

  1. canvas动画:气泡上升效果

    HTML5中的canvas真是个很强大的东西呢! 这几天突发奇想想做一个气泡上升的动画,经过许久的思考和多次失败,终于做出了如下效果 由于是录制的gif图,看着会有点卡顿,实际演示是很自然的 想要做出 ...

  2. python中的字典,if_while使用

    1.定义两个字典用于表述你的个人信息 第一个字典存放你的这些信息:姓名.性别.年龄.身高第二个字典存放你的其他信息:性格.爱好.座右铭将两个字典合并为第三个字典之后,打印出来 觉得自己很年轻的,可以去 ...

  3. [OpenGL] 不规则区域的填充算法

    不规则区域的填充算法 一.简单递归 利用Dfs实现简单递归填充. 核心代码: // 简单深度搜索填充 (四连通) void DfsFill(int x, int y) { || y < || x ...

  4. Atlassian In Action-Jira之推荐插件(四)

    前面的几章基本已经完整构建了Jira的管理平台,并且有了一套比较完成的制度和方法.但是优化是永无止境的,我们作为研发管理人员,需要让系统使用起来更加高效和便捷.为了达到这个目的一般有两种途径,插件和开 ...

  5. python UUID

    UUID介绍 UUID是128位的全局唯一标识符,通常由32字节的字符串表示.它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID ―― Universally Unique IDentif ...

  6. Java 添加、验证PDF 数字签名

    在设置文档内容保护的方法中,除了对文档加密.添加水印外,应用数字签名也是一种有效防伪手段.数字签名的文件比较容易验证,并且具有较高的权威性和可信度.在PDF文档中,有可直接添加或验证数字签名的功能方法 ...

  7. 【Android Studio】查看源码时提示“throw new RuntimeException("Stub!")”

    如题-- 详细问题及解决方法: http://blog.csdn.net/u010917495/article/details/51234179

  8. .NET Core on K8S学习实践系列文章索引(Draft版)

    一.关于这个系列 自从去年(2018年)底离开工作了3年的M公司加入X公司之后,开始了ASP.NET Core的实践,包括微服务架构与容器化等等.我们的实践是渐进的,当我们的微服务数量到了一定值时,发 ...

  9. Jenkins Java 反序列化远程执行代码漏洞(CVE-2017-1000353)

    Jenkins Java 反序列化远程执行代码漏洞(CVE-2017-1000353) 一.漏洞描述 该漏洞存在于使用HTTP协议的双向通信通道的具体实现代码中,jenkins利用此通道来接收命令,恶 ...

  10. leetcode并发题目解题报告JAVA版

    一.Print in Order Suppose we have a class: public class Foo { public void first() { print("first ...