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<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='车牌黑名单';
相关文章
- 暂无相关文章
用户点评