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

javax.persistence中@Column定義字段類型方式

 更新時間:2022年11月17日 14:27:31   作者:站在墻頭上  
這篇文章主要介紹了javax.persistence中@Column定義字段類型方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

javax.persistence中@Column定義字段類型

在@Column中有個比較強大的配置 columnDefinition,如果有不好定義或者java沒有這個屬性的直接用columnDefinition根據ddl來定義即可,字段的注釋也是可以定義的。

package com.ld.entity;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.*;
import java.util.Date;
import java.util.List;

@Entity
@Table(name = "banner")
public class BannerN {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column
    private Integer id;
    @Column(name = "module_id",columnDefinition="bigint(20)")
    private Long moduleId;
    private String name;
    @Column(name = "detail",columnDefinition="varchar(255) comment '詳情'")
    private String detail;
    @Column(name = "banners",columnDefinition="text comment '集合字符串'")
    private String banners;
    @Transient
    private List<Banner> bannerList;
    private Integer type;
    @Transient
    private Integer index;
    private Integer orderIndex;
    private Long pageId;

    static class Banner {
        private Long id;
        private Date createTime;
        private Integer index;
        private String pictrue;
        private String click_url;//跳轉鏈接
        private String click_url_IOS;//跳轉鏈接
        private String click_url_Android;//跳轉鏈接
        private String copywriting;//文案

        public Long getId() {
            return id;
        }

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

        public Date getCreateTime() {
            return createTime;
        }

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

        public Integer getIndex() {
            return index;
        }

        public void setIndex(Integer index) {
            this.index = index;
        }

        public String getPictrue() {
            return pictrue;
        }

        public void setPictrue(String pictrue) {
            this.pictrue = pictrue;
        }

        public String getClick_url() {
            return click_url;
        }

        public void setClick_url(String click_url) {
            this.click_url = click_url;
        }

        public String getClick_url_IOS() {
            return click_url_IOS;
        }

        public void setClick_url_IOS(String click_url_IOS) {
            this.click_url_IOS = click_url_IOS;
        }

        public String getClick_url_Android() {
            return click_url_Android;
        }

        public void setClick_url_Android(String click_url_Android) {
            this.click_url_Android = click_url_Android;
        }

        public String getCopywriting() {
            return copywriting;
        }

        public void setCopywriting(String copywriting) {
            this.copywriting = copywriting;
        }
    }

    public Integer getId() {
        return id;
    }

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

    public String getBanners() {
        if (this.banners != null) {
            this.setBannerList(JSONArray.parseArray(banners, Banner.class));
        }
        return banners;
    }

    public void setBanners(String banners) {
        this.banners = banners;
        this.bannerList = JSONArray.parseArray(banners, Banner.class);
    }

    public List<Banner> getBannerList() {
        return bannerList;
    }

    public void setBannerList(List<Banner> bannerList) {
        this.bannerList = bannerList;
        this.banners = JSONArray.toJSONString(bannerList, SerializerFeature.UseISO8601DateFormat);
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getIndex() {
        this.orderIndex = index;
        return index;
    }

    public void setIndex(Integer index) {
        this.index = index;
        this.orderIndex = index;
    }

    public Integer getOrderIndex() {
        if(orderIndex!=null){
            this.index = orderIndex;
        }
        return orderIndex;
    }
    public void setOrderIndex(Integer orderIndex) {
        this.orderIndex = orderIndex;
        if(orderIndex!=null){
            this.index = orderIndex;
        }
    }
  • @Transient:自動生成表時忽略該字段。
  • @Id:主鍵
  • @GeneratedValue(strategy = GenerationType.IDENTITY):主鍵策略(IDENTITY:自增)

記一個@Column的坑

注解@Column(javax.persistence.Column),我們通常使用在DAO實體類的屬性上,一般用來標識該屬性的數據庫值(name,其他用途不提)。

BUG是這樣產生的

項目中的實體類生成時每個字段均生成了@Column注解,且準確無誤。

然后通用mapper使用沒有任何問題,直到有一次,在*Mapper接口中手寫了SQL(查詢某表中滿足條件的最新的一條記錄):

@Select("SELECT * FROM t_test WHERE test_name = #{testName} ORDER BY gmt_create DESC LIMIT 1")

測試時,發(fā)現(xiàn)除了單個字段的屬性有返回值(如:id、creator),其他多個單詞組成的屬性均沒有值(如:testName、gmtCreate)。

因為找到了這個規(guī)律,所以斷定是字段映射出錯了,后來驗證確實如此。

解決方法

在mybatis配置中加上駝峰命名自動轉換規(guī)則:

mybatis.configuration.map-underscore-to-camel-case=true

由于水平有限,暫不清楚@Column在什么條件下有用。經測試,刪除@Column,保留mybatis駝峰命名轉換規(guī)則,通用mapper查詢、*Mapper.java接口手寫sql(包括屬性寫在查詢條件中、返回結果中)、*Mapper.xml手寫sql,均無問題。

有點不負責任地建議,實體類中不需要添加@Column注解,添加mybatis自動轉換規(guī)則即可。

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

相關文章

  • 正確遍歷刪除List中的元素方法(推薦)

    正確遍歷刪除List中的元素方法(推薦)

    下面小編就為大家?guī)硪黄_遍歷刪除List中的元素方法(推薦)。小編覺得挺不錯的,在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Netty分布式pipeline管道傳播事件的邏輯總結分析

    Netty分布式pipeline管道傳播事件的邏輯總結分析

    這篇文章主要為大家介紹了Netty分布式pipeline管道傳播事件總結分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • Spring?Boot?根據配置決定服務(集群、單機)是否使用某些主件的操作代碼

    Spring?Boot?根據配置決定服務(集群、單機)是否使用某些主件的操作代碼

    這篇文章主要介紹了Spring?Boot根據配置決定服務(集群、單機)是否使用某些主件,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-04-04
  • Java編程中的HashSet和BitSet詳解

    Java編程中的HashSet和BitSet詳解

    這篇文章主要介紹了Java編程中的HashSet和BitSet詳解的相關資料,需要的朋友可以參考下
    2017-03-03
  • HashMap線程不安全問題解析

    HashMap線程不安全問題解析

    這篇文章主要介紹了HashMap線程不安全問題解析,HashMap的線程不安全體現(xiàn)在會造成死循環(huán)、數據丟失、數據覆蓋等問題,其中死循環(huán)和數據丟失是在JDK1.7中出現(xiàn)的問題,在JDK1.8中已經得到解決,但是1.8中仍會有數據覆蓋這樣的問題,需要的朋友可以參考下
    2023-11-11
  • 解決@Autowired注入static接口的問題

    解決@Autowired注入static接口的問題

    這篇文章主要介紹了解決@Autowired注入static接口的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Springboot如何集成jodconverter做文檔轉換

    Springboot如何集成jodconverter做文檔轉換

    這篇文章主要介紹了Springboot如何集成jodconverter做文檔轉換問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot整合mybatis結合pageHelper插件實現(xiàn)分頁

    SpringBoot整合mybatis結合pageHelper插件實現(xiàn)分頁

    在本篇文章里小編給大家整理的是關于SpringBoot整合mybatis使用pageHelper插件進行分頁操作相關知識點,需要的朋友們學習下。
    2020-02-02
  • Java 批量獲取地址間距離工具(支持中轉站)

    Java 批量獲取地址間距離工具(支持中轉站)

    本文主要介紹了Java批量獲取地址間距離,獲取兩個地址間距離,實現(xiàn)方式比較多,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 解決java攔截器獲取POST入參導致@RequestBody參數丟失問題

    解決java攔截器獲取POST入參導致@RequestBody參數丟失問題

    文章講述了在Java開發(fā)中使用攔截器獲取POST請求入參時,由于流關閉導致`@RequestBody`參數丟失的問題,并提出了一種解決方案,解決方案包括自定義方法、防止流丟失、過濾器和攔截器的合理組織和使用,最終確保了參數的正確傳遞
    2024-11-11

最新評論

兴文县| 霍邱县| 珲春市| 龙川县| 柏乡县| 江口县| 巴里| 泰来县| 宜州市| 红河县| 讷河市| 北海市| 双江| 连平县| 阿瓦提县| 监利县| 博白县| 定西市| 沈丘县| 宜州市| 宾阳县| 乐东| 衡水市| 北辰区| 息烽县| 肥东县| 泰州市| 台东县| 疏附县| 刚察县| 仲巴县| 云林县| 海伦市| 文成县| 绥江县| 遂宁市| 荣昌县| 运城市| 弥勒县| 郎溪县| 东乡族自治县|