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

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 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='车牌黑名单';

相关文章暂无相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值