求助:接口参数传入的是json对象数组,如何存储到postgresql数据库jsonb类型字段呢?

Blade 已结 2 1310
asit
asit 2021-05-12 21:14
悬赏:20

求助:接口参数传入的是json对象数组,如何存储到postgresql数据库jsonb类型字段呢?

1、实体entity,字段类型如何定义呢?

private List imgUrls;

2、mybatis文件xml属性文件如何定义?


2条回答
  •  asit
    asit (楼主)
    2021-05-16 22:33

    原文引用:

    https://blog.csdn.net/qq_31183727/article/details/108273293


    1、数据库链接 URL配置

    先在 postgreSql 的数据库 URL 后面加上 &stringtype=unspecified


    postgreSql:

      name: public

      url: jdbc:postgresql://127.0.0.1:5432/test_db?&allowMultiQueries=true&autoReconnect=true&stringtype=unspecified

    2、实体类配置

    @TableName

    加上 autoResultMap = true


    例如:


    @TableName(value = "form_detail", autoResultMap = true)


    @TableField

    加上 typeHandler = JacksonTypeHandler.class,这里我用的是Jackson的


    fastjson 可以使用 FastjsonTypeHandler.class


    Gson 可以使用 GsonTypeHandler.class


    例如:


    @TableField(value = "form_json", typeHandler = JacksonTypeHandler.class)


    import com.baomidou.mybatisplus.annotation.IdType;

    import com.baomidou.mybatisplus.annotation.TableField;

    import com.baomidou.mybatisplus.annotation.TableId;

    import com.baomidou.mybatisplus.annotation.TableName;

    import com.baomidou.mybatisplus.extension.activerecord.Model;

    import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;

    import com.fasterxml.jackson.annotation.JsonFormat;

    import io.swagger.annotations.ApiModelProperty;

    import lombok.Data;

    import lombok.EqualsAndHashCode;

    import lombok.experimental.Accessors;

     

    import java.io.Serializable;

    import java.util.Date;

     

     

    @EqualsAndHashCode(callSuper = true)

    @Data

    @Accessors(chain = true)

    @TableName(value = "form_detail", autoResultMap = true)

    public class FormDetail extends Model {

     

        private static final long serialVersionUID = 1L;

     

        /**

         * 表单key

         */

        @TableId(value = "form_key", type = IdType.ASSIGN_UUID)

        @ApiModelProperty(value = "表单key,主键")

        private String formKey;

     

        /**

         * 表单内容json串

         */

        @TableField(value = "form_json", typeHandler = JacksonTypeHandler.class)

        @ApiModelProperty(value = "表单内容json串")

        private Object formJson;

     

        /**

         * 修改时间

         */

        @TableField("update_time")

        @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8")

        private Date updateTime;

     

     

        @Override

        protected Serializable pkVal() {

            return this.formKey;

        }

    }

    3、XML配置

    如果使用 resultMap ,则也需要添加 typeHandler


       

           

           

       

提交回复