首页 > 其他分享 >springboot mybatis postgres 对于json类型的字段转换

springboot mybatis postgres 对于json类型的字段转换

时间:2024-01-13 16:32:03浏览次数:28  
标签:null return springboot JSONObject json mybatis import jsonText public

在Spring Boot与MyBatis结合使用时,处理PostgreSQL中的JSON类型字段的转换可以分为以下步骤:

  1. 自定义TypeHandler: 为了在Java实体类与数据库的JSON类型字段之间进行转换,需要创建一个自定义的 TypeHandler。例如,针对JSONObject类型的转换器可以这样实现:
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.json.JSONObject;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JSONObjectTypeHandler extends BaseTypeHandler<JSONObject> {

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType) throws SQLException {
        String jsonText = parameter.toString();
        ps.setString(i, jsonText);
    }

    @Override
    public JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException {
        String jsonText = rs.getString(columnName);
        if (jsonText != null) {
            return new JSONObject(jsonText);
        }
        return null;
    }

    @Override
    public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        String jsonText = rs.getString(columnIndex);
        if (jsonText != null) {
            return new JSONObject(jsonText);
        }
        return null;
    }

    @Override
    public JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        String jsonText = cs.getString(columnIndex);
        if (jsonText != null) {
            return new JSONObject(jsonText);
        }
        return null;
    }
}
  1. 注册TypeHandler: 在Spring Boot项目中,通常将自定义的 TypeHandler 注册到全局配置文件或者MyBatis的配置文件中,以便MyBatis能够识别并使用它。
    如果是通过JavaConfig的方式配置,可以在@Configuration类中添加如下代码:
@Configuration
public class MyBatisConfig {

    @Bean
    public TypeHandlerRegistry typeHandlerRegistry() {
        TypeHandlerRegistry registry = new TypeHandlerRegistry();
        registry.register(JSONObject.class, new JSONObjectTypeHandler());
        return registry;
    }

    // 其他MyBatis相关配置...
}

或者如果是在XML配置文件(如mybatis-config.xml)中配置,可以这样添加:

<typeHandlers>
    <typeHandler handler="com.example.yourpackage.JSONObjectTypeHandler" javaType="org.json.JSONObject"/>
</typeHandlers>
  1. 实体类映射: 在你的实体类中,对应JSON字段的属性上添加 @TableField 注解,并指定 typeHandler 属性为自定义的 TypeHandler 类:
import com.baomidou.mybatisplus.annotation.TableField;
import org.json.JSONObject;

public class Station {

    private Long id;
    
    // ...

    @TableField(value = "station_info", typeHandler = JSONObjectTypeHandler.class)
    private JSONObject stationInfo;

    // ...
}

这里假设你有一个名为 station_info 的PostgreSQL JSON类型的字段,对应的实体类属性是 stationInfo


标签:null,return,springboot,JSONObject,json,mybatis,import,jsonText,public
From: https://blog.51cto.com/u_13082241/9232709

相关文章

  • 手拉手Springboot获取yml配置文件信息
    环境介绍技术栈springboot3软件版本mysql8IDEAIntelliJIDEA2022.2.1JDK17SpringBoot3.1.7配置文件说明:启动配置文件优先级:properties高于yml配置文件application.ymlyml是JSON的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代application.properties。在创建一个S......
  • Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和
    一、类型(Types)一、OpenPopupOptions1.属性windowId:number可选打开操作弹出式窗口的窗口ID。如果未指定,则默认为当前活动窗口。二、TabDetails1.属性tabId:number可选要查询其状态的标签页ID。如果未指定标签页,则返回非标签页专属状态。三、UserSettin......
  • 基于SpringBoot+Vue的居家养老系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • Mybatis之TypeHandler使用教程
    引言MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射......
  • pyspark json数据解析
    PySpark中的JSON数据解析在大数据处理中,JSON(JavaScriptObjectNotation)是一种常用的数据格式。它以易读的文本形式表示数据,常用于跨平台数据交换。在PySpark中,我们可以使用JSON数据作为输入,并使用内置的函数解析和处理这些数据。本文将介绍如何在PySpark中解析JSON数据,并提供相关......
  • 简单说一下mybatis的多表映射的使用
    MyBatis是一种流行的Java持久层框架,它提供了一种简单而强大的方式来进行数据库操作。在MyBatis中,多表映射是指将数据库中多个关联表之间的数据映射到Java对象中的过程。MyBatis提供了多种方式来实现多表映射,下面是其中两种常用的方法:使用嵌套查询(NestedQueries):这是一......
  • mybatis-generator:generate生成器将另外的数据库内同名表生成
     问题:在使用mybatis-generator:generate生成器时,会生成别的数据库内同表名;因为是相同表名。 解决:在生成器的配置文件中的数据库连接地址内添加:<!--放置生成其他库同名表--><propertyname="nullCatalogMeansCurrent"value="true"/>......
  • 蚂蚁爱购--靠谱的SpringBoot项目
    ​简介这是一个靠谱的SpringBoot项目实战,名字叫蚂蚁爱购。从零开发项目,视频加文档,十天就能学会开发JavaWeb项目。教程路线是:搭建环境=>安装软件=>创建项目=>添加依赖和配置=>通过表生成代码=>编写Java代码=>代码自测=>前后端联调=>准备找工作。学完即可成为合格的Java......
  • 不雅文字过滤?springboot可以这样做!实战!
    这里主要讲敏感词过滤与替换两个功能,引入相关maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boo......
  • springboot医院信息化云HIS运维平台源码 SaaS模式
    一、HIS系统HIS系统是医院最主要的系统,它主要涵盖基本流程功能,是医院系统的核心业务系统。这里的HIS指的是狭义的HIS系统,仅仅包括门诊、住院的医嘱结算相关功能的系统。一般门诊和住院是同一个系统,包括以下一些工作站:1、门诊部分挂号及预约、划价及收费、门诊处方及病历、医生排......