最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis 接收數(shù)據(jù)庫中沒有的字段的解決

 更新時間:2022年03月10日 11:06:40   作者:辰小狼睡不醒  
這篇文章主要介紹了MyBatis 接收數(shù)據(jù)庫中沒有的字段的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

接收數(shù)據(jù)庫中沒有的字段

問題描述

瀏覽器頁面想要通過E-hcart表格,展示一些數(shù)據(jù)。這些數(shù)據(jù)需要從數(shù)據(jù)庫中計算而來。但是在數(shù)據(jù)庫中沒有的字段。比如說要查詢某些記錄。如車輛的在線數(shù)量,離線數(shù)量和無數(shù)據(jù)的數(shù)量。這些數(shù)據(jù)是通過MySql的聚合函數(shù)得到的。

sql語句如下:

SELECT
    sum(
        updatetime > date_sub(now(), INTERVAL 0.5 DAY)
    ) AS online,
    sum(updatetime IS NULL) nodata,
    count(1) - sum(
        updatetime > date_sub(now(), INTERVAL 0.5 DAY)
    ) - sum(updatetime IS NULL) AS offline
,COUNT(1)
FROM
    cx_onecdata
WHERE
    kdgs = '順豐'
AND cartype LIKE '%gps%'

查詢的結(jié)果如上圖。

注意,這些統(tǒng)計的字段都是數(shù)據(jù)庫中沒有的。

那么問題來了,該如何獲取這些數(shù)據(jù)呢?

問題的解決方法

在MyBaits中生成相對應(yīng)的字段。比如,我的實體類中是這樣的(也就是DO):

public class Sfcar {
    private Integer online;
    private Integer nodata;
    private Integer offline;
    public Integer getOnline() {
        return online;
    }
    public void setOnline(Integer online) {
        this.online = online;
    }
    public Integer getNodata() {
        return nodata;
    }
    public void setNodata(Integer nodata) {
        this.nodata = nodata;
    }
    public Integer getOffline() {
        return offline;
    }
    public void setOffline(Integer offline) {
        this.offline = offline;
    }

MyBatis中對應(yīng)的映射文件是這樣配置的:

    <!--  GPS 車輛統(tǒng)計  -->
  <select id="findbySFCarGPS" resultMap="BaseResultMap">
    SELECT
        sum(
            updatetime &gt; date_sub(now(), INTERVAL 0.5 DAY)
        ) AS online,
            sum(updatetime IS NULL) nodata,
            count(1) - sum(
                updatetime &gt; date_sub(now(), INTERVAL 0.5 DAY)
            ) - sum(updatetime IS NULL) AS offline
        FROM
            cx_onecdata
        WHERE
            kdgs = '順豐'
        AND cartype LIKE '%gps%'
  </select>

這里有兩個注意的點。一是:返回結(jié)果類型是resultMap=”BaseResultMap”。二,MyBatis是跟實體類映射,而不是跟數(shù)據(jù)庫對應(yīng)的表映射,所以可以直接寫想要的Sql。最好用這個Do 來接收想要的數(shù)據(jù)。

至此,可以完美解決字段不對應(yīng)的問題。

最后頁面顯示的效果:

數(shù)據(jù)通過渲染得到想要的效果。

說明一下:以前數(shù)據(jù)中獲取不對應(yīng)的字段時,我是用List集合里面放Map集合,獲取所要的數(shù)據(jù)。

用來解碼的代碼如:

        List<String> legend = new ArrayList<String>();
        List<Map> serisData=new ArrayList<Map>();
        List<TreeMap<String,Integer>> data = car_Service.selectCarTypeCount();
        int count = 0;
        List<String> car_typename= new ArrayList<String>();
        List<String> car_typevalue = new ArrayList<String>();
        //      Map<String,String> mapdata= new HashMap<>();
        //  遍歷以Key - Value 形式遍歷
        for (Map<String, Integer> map : data){ 
            Map tarMap =new HashMap();
            for (Map.Entry<String, Integer> k : map.entrySet()){ 
                count++;
                if (count % 2 == 0) {
                    car_typename.add(k.getValue()+"");
                }else{
                    car_typevalue.add(k.getValue()+"");
                }
            } 
            for (int i = 0; i < car_typename.size(); i++) {
                // 獲取 List 中的 String 數(shù)組元素。
                String cartype_name = car_typename.get(i);
                String cartype_value = car_typevalue.get(i);
                //              mapdata.put(cartype_name, cartype_value);
                if (i== car_typename.size()-1) {
                    legend.add(cartype_name);
                    tarMap.put("value", cartype_value);
                    tarMap.put("name", cartype_name);
                    serisData.add(tarMap);
                }
            }
        }
        // 縱坐標(biāo)
        List<SeriesVO> series = new ArrayList<>();
        series.add(new SeriesVO("總數(shù)比較", "pie",serisData));
        EchartDataVO targetdata = new EchartDataVO(legend,null, series);
        // 獲取 目標(biāo)數(shù)據(jù) JSON 格式
        return targetdata;

至此問題解決!

數(shù)據(jù)庫中找不到相應(yīng)的字段應(yīng)該怎么做

數(shù)據(jù)庫中找不到相應(yīng)的字段

有的字段是以符號、數(shù)字的形式存在,所以直接找不到。

1.首先找到映射表,在隱射表中包含我們想要的字段。

2.去相應(yīng)的表中查找映射表中的字段。

注意1:我們想要的字段可能在映射表中有兩個或更多的字段組合而成,所以去需要的表中分別找到這些不同的字段組合。

注意2:兩個或更多的字段可能分別在不同的表中,此時需要聯(lián)表。

注意3:–山東xxx和七xxxx河酒店hotelinfo.Product_typ=6,但是hotelinfo.Product_typ=‘11’ AND hotelinfo.Territory_cd='Z’才組合成換成其他系統(tǒng),

但是因為Product_typ=6了,不能=11,

所以Product_typ=6 AND cust_LEVEL="Z"是換成其他系統(tǒng),

可以在PMS系統(tǒng)中查到,換成其他系統(tǒng)的表頭叫做“酒店級別”

所以并不是一對一組合,而是多對多的組合

并不是Para_typ=9AND para_CD=5營銷部,Para_typ=10/11.。。AND para_CD="5"也營銷部

注意4:Para_typ=9/10/11/…在另一個表中可能是屬于不同的字段

舉例如下:

完成上級給的任務(wù)時先讓他看一遍,避免返工浪費時間

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

福海县| 革吉县| 北川| 凤庆县| 勃利县| 白玉县| 巴塘县| 大邑县| 菏泽市| 增城市| 南雄市| 松溪县| 如东县| 瓦房店市| 会宁县| 义马市| 元江| 托克逊县| 陇川县| 乾安县| 张家界市| 蒲江县| 称多县| 阜宁县| 错那县| 双鸭山市| 永仁县| 文成县| 阳谷县| 黔西县| 谢通门县| 山西省| 广丰县| 民乐县| 甘德县| 福安市| 昭平县| 盐津县| 都匀市| 长顺县| 佛山市|