欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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;//跳轉(zhuǎn)鏈接
        private String click_url_IOS;//跳轉(zhuǎn)鏈接
        private String click_url_Android;//跳轉(zhuǎn)鏈接
        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:自動(dòng)生成表時(shí)忽略該字段。
  • @Id:主鍵
  • @GeneratedValue(strategy = GenerationType.IDENTITY):主鍵策略(IDENTITY:自增)

記一個(gè)@Column的坑

注解@Column(javax.persistence.Column),我們通常使用在DAO實(shí)體類的屬性上,一般用來(lái)標(biāo)識(shí)該屬性的數(shù)據(jù)庫(kù)值(name,其他用途不提)。

BUG是這樣產(chǎn)生的

項(xiàng)目中的實(shí)體類生成時(shí)每個(gè)字段均生成了@Column注解,且準(zhǔn)確無(wú)誤。

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

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

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

因?yàn)檎业搅诉@個(gè)規(guī)律,所以斷定是字段映射出錯(cuò)了,后來(lái)驗(yàn)證確實(shí)如此。

解決方法

在mybatis配置中加上駝峰命名自動(dòng)轉(zhuǎn)換規(guī)則:

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

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

有點(diǎn)不負(fù)責(zé)任地建議,實(shí)體類中不需要添加@Column注解,添加mybatis自動(dòng)轉(zhuǎn)換規(guī)則即可。

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

相關(guān)文章

  • java數(shù)據(jù)庫(kù)連接池和數(shù)據(jù)庫(kù)連接示例

    java數(shù)據(jù)庫(kù)連接池和數(shù)據(jù)庫(kù)連接示例

    這篇文章主要介紹了java數(shù)據(jù)庫(kù)連接池和數(shù)據(jù)庫(kù)連接示例,需要的朋友可以參考下
    2014-05-05
  • Java中的幾種關(guān)鍵字的使用小結(jié)

    Java中的幾種關(guān)鍵字的使用小結(jié)

    本文主要介紹了Java中的幾種關(guān)鍵字的使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java跨模塊調(diào)用方式

    Java跨模塊調(diào)用方式

    這篇文章主要介紹了Java跨模塊調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 利用MyBatis實(shí)現(xiàn)條件查詢的方法匯總

    利用MyBatis實(shí)現(xiàn)條件查詢的方法匯總

    這篇文章主要給大家介紹了關(guān)于利用MyBatis實(shí)現(xiàn)條件查詢的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MyBatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 解決spring-data-jpa mysql建表編碼問題

    解決spring-data-jpa mysql建表編碼問題

    這篇文章主要介紹了解決spring-data-jpa mysql建表編碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • springboot pojo對(duì)象日期屬性的問題

    springboot pojo對(duì)象日期屬性的問題

    這篇文章主要介紹了springboot pojo對(duì)象日期屬性的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • springboot 如何設(shè)置端口號(hào)和添加項(xiàng)目名

    springboot 如何設(shè)置端口號(hào)和添加項(xiàng)目名

    這篇文章主要介紹了springboot設(shè)置端口號(hào)和添加項(xiàng)目名的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java鏈表元素查找實(shí)現(xiàn)原理實(shí)例解析

    Java鏈表元素查找實(shí)現(xiàn)原理實(shí)例解析

    這篇文章主要介紹了Java鏈表元素查找實(shí)現(xiàn)原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 深入理解Java class文件格式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    深入理解Java class文件格式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    對(duì)于理解JVM和深入理解Java語(yǔ)言, 學(xué)習(xí)并了解class文件的格式都是必須要掌握的功課
    2017-06-06
  • Springboot實(shí)現(xiàn)發(fā)送郵件

    Springboot實(shí)現(xiàn)發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了Springboot實(shí)現(xiàn)發(fā)送郵件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評(píng)論