欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

java对象的比较和重写toString()方法返回json格式数据,tostringjson

来源: javaer 分享于  点击 5611 次 点评:183

java对象的比较和重写toString()方法返回json格式数据,tostringjson


在开发中,我们常常会遇到数据比较,一般变量的比较也就是==或equals()方法的使用,对于对象的比较,其是就是重写其equals()方法。常用的业务场景就是对象是否已存在数据库中,使用list.contains(po)来判断等,下面看实例:

1.重写po对象PlateBlackList的toString()和equals()方法:

package com.test.po;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.test.bo.PlateBlackAlarmMessageBO;

import java.util.Date;
import java.util.Objects;

/**
 *
 * @Description:
 * @date:2018-10-29
 */
public class PlateBlackList {
   // 主键
   private Long id;

   // 车牌编号
   private String plateNo;

   // 车牌颜色:0-其他,1-蓝色,2-黄色,3-黑色,4-白色
   private Byte plateColor;

   // 创建时间
   private Date createTime;

   // 停车车主名称
   private String carUserName;

   // 车主手机号
   private String carUserPhone;

   // 车主类型: 0 逾期车主 1违章车主
   private Byte carUserType;

   // 数据来源:0 欠费自动导入 1手动添加/批量导入
   private Byte sourceType;

   // 备注信息
   private String remark;

   public Long getId() {
      return id;
   }

   public void setId(Long id) {
      this.id = id;
   }

   public String getPlateNo() {
      return plateNo;
   }

   public void setPlateNo(String plateNo) {
      this.plateNo = plateNo == null ? null : plateNo.trim();
   }

   public Byte getPlateColor() {
      return plateColor;
   }

   public void setPlateColor(Byte plateColor) {
      this.plateColor = plateColor;
   }

   public Date getCreateTime() {
      return createTime;
   }

   public void setCreateTime(Date createTime) {
      this.createTime = createTime;
   }

   public String getCarUserName() {
      return carUserName;
   }

   public void setCarUserName(String carUserName) {
      this.carUserName = carUserName == null ? null : carUserName.trim();
   }

   public String getCarUserPhone() {
      return carUserPhone;
   }

   public void setCarUserPhone(String carUserPhone) {
      this.carUserPhone = carUserPhone == null ? null : carUserPhone.trim();
   }

   public Byte getCarUserType() {
      return carUserType;
   }

   public void setCarUserType(Byte carUserType) {
      this.carUserType = carUserType;
   }

   public Byte getSourceType() {
      return sourceType;
   }

   public void setSourceType(Byte sourceType) {
      this.sourceType = sourceType;
   }

   public String getRemark() {
      return remark;
   }

   public void setRemark(String remark) {
      this.remark = remark == null ? null : remark.trim();
   }

   @Override
   public String toString() {
      return JSON.toJSONString(this, new SerializerFeature[] {
            SerializerFeature.WriteMapNullValue,
            SerializerFeature.WriteNullListAsEmpty,
            SerializerFeature.WriteNullStringAsEmpty,
            SerializerFeature.WriteNullNumberAsZero,
            SerializerFeature.WriteNullBooleanAsFalse,
            SerializerFeature.UseISO8601DateFormat });
   }

   public static void main(String args[]) {
      PlateBlackList a = new PlateBlackList();
      a.setPlateNo("沪A15698");
      a.setRemark("测试");

      System.out.println("json:" + a.toString());

   }

   /**
    * @Description: 比较对象:根据车牌号码和车牌颜色确定对象是否相等
    * @author test
    * @date 2018年11月02日 14:17:48
    * @param o
    * @return 
    *
    */
   @Override
   public boolean equals(Object o) {
      if (this == o) {
         return true;
      }
      //比较类对象是否一致
      if (o == null || getClass() != o.getClass()) {
         return false;
      }

      PlateBlackList that = (PlateBlackList) o;
      return Objects.equals(plateNo, that.plateNo)
            && Objects.equals(plateColor, that.plateColor);
   }

   @Override
   public int hashCode() {
      return Objects.hash(plateNo, plateColor);
   }
}

先测试toString()的方法返回的数据如下:

json:{"carUserName":"","carUserPhone":"","carUserType":0,"createTime":null,"id":0,"plateColor":0,"plateNo":"沪A15698","remark":"测试","sourceType":0}

解释一下,这里json格式化数据取了数据库的默认值,以后在对对象进行封装的时候就可以直接bo.toString()输出了,避免了不少麻烦;

2.对象比较如下:

// 校验数据库中车牌号码和车牌颜色是否重复
List<PlateBlackList> dbExsistList = plateBlackListDao
      .selectAllPlateBlackNOAndColorList();
// 校验车主是否已存在
if (dbExsistList != null && dbExsistList.contains(po)) {
    return WrappedResult.failedWrappedResult("该车牌颜色和车牌号码的黑名单用户已存在");
}

注意,我重写的equals()方法确定比较的是对象的唯一键约,直接看上面的equals()方法,自己根据需要去重写即可;

其数据表结构如下:

CREATE TABLE `plate_black_list` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `plate_no` varchar(10) NOT NULL COMMENT '车牌编号',
  `plate_color` tinyint(3) unsigned NOT NULL COMMENT '车牌颜色:0-其他,1-蓝色,2-黄色,3-黑色,4-白色',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `car_user_name` varchar(32) DEFAULT NULL COMMENT '停车车主名称',
  `car_user_phone` varchar(11) DEFAULT NULL COMMENT '车主手机号',
  `car_user_type` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '车主类型: 0 逾期车主 1违章车主',
  `source_type` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '数据来源:0 欠费自动导入  1手动添加/批量导入',
  `remark` varchar(64) DEFAULT NULL COMMENT '备注信息',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_plate_no_and_plate_color` (`plate_no`,`plate_color`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8 COMMENT='车牌黑名单';

相关文章

    暂无相关文章

用户点评