【java學習】類和數據格式的轉化 php & java

背景

最近在從php轉java,發現好多都是不一樣的。
我從數據庫中取一個表的數據,但是返回給前端的時候,可能會新增字段。比如新增對狀態的標註,在數據庫表中的字段可能是status=0,但是展示給前端的時候需要新增一個字段statusStr=“未上線”
除了這種數據庫的情況,還包括調用別人接口返回的結構,需要加工後返回給需求方

在php中只要在返回的數組中新增個字段就可以了,因爲在php中基本上都是數組解決問題;但是在java中是完全換了一種思路解決這種問題,在java所有的都是,用類來解決問題。

id status name
123 0 小忍

php解決

原有的
$arrRes = [
	"id" => 123,
	"status" => 0,
	"name" => "小忍",
];
解決之後
$arrRes = [
	"id" => 123,
	"status" => 0,
	"name" => "小忍",
	"statusStr" => "未上線",
];

java解決

對應DB中表的結構數據,如果前端要的是從數據庫表中存的數據是ok的。

public static class Ret {

        private int id;
        private int status;
        private String name;

        public int getId() {
            return id;
        }

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

        public int getStatus() {
            return status;
        }

        public void setStatus(int status) {
            this.status = status;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

傳給前端的字段會有不同,可能會新增字段,可能需要格式化時間,格式化json串等。

public static class FrontRet {

        private int id;
        private int status;
        private String name;
        private String statusStr;

        public int getId() {
            return id;
        }

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

        public int getStatus() {
            return status;
        }

        public void setStatus(int status) {
            this.status = status;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getStatusStr() {
            return statusStr;
        }

        public void setStatusStr(String statusStr) {
            this.statusStr = statusStr;
        }
    

具體操作

BeanUtils.copyProperties

遵循的原則必須是字段和類型一致才能copy到新的類中

// 1. 從數據庫表中撈取的結構
Ret ret = RetMapper.selectByPrimaryKey(id);
// 2. 創建返回給前端的類結構
FrontRet frontRet = new FrontRet();
// 3. 將數據表的結構copy到frontRet,遵循的原則必須是字段和類型一致才能copy到新的類中
BeanUtils.copyProperties(ret, frontRet);
// 4. 操作需要返回的字段
if (ret.getStatus() == 0) {
	frontRet.setStatusStr("未上線");
}
// 5. 最終返回
return frontRet;

利用Json轉成新的對象

// 1. 從數據庫表中撈取的結構
Ret ret = RetMapper.selectByPrimaryKey(id);
// 2. 將ret轉爲json串,
String str = JSON.toJSONString(ret);
// 3. 將json串轉成要返回的結構FrontRet
FrontRet frontRet = JSON.parseObject(str, FrontRet.class);
// 4. 操作需要返回的字段
if (ret.getStatus() == 0) {
	frontRet.setStatusStr("未上線");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章