mybatis-plus处理blob字段

转载自:www.javaman.cn

在 Spring Boot 项目中使用 MyBatis-Plus 处理 longblob 字段时,我们可以按照以下步骤进行操作。假设 longblob 存储的是字符串数据。以下是完整的示例代码:

  1. 添加依赖 :在你的项目的 pom.xml 文件中添加 MyBatis-Plus 的依赖:
xml 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>最新版本号</version>
</dependency>
  1. 创建 MyLongBlobTypeHandler 类 :创建一个自定义的类型处理器 MyLongBlobTypeHandler 来处理 longblob 字段的数据。这个处理器会将 longblob 转换为字符串。
java 复制代码
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.*;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

@Component
public class MyLongBlobTypeHandler extends BaseTypeHandler<String> {

    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
        preparedStatement.setBytes(i, s.getBytes(StandardCharsets.UTF_8));
    }

    @Override
    public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
        byte[] bytes = resultSet.getBytes(s);
        return new String(bytes, StandardCharsets.UTF_8);
    }

    @Override
    public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
        byte[] bytes = resultSet.getBytes(i);
        return new String(bytes, StandardCharsets.UTF_8);
    }

    @Override
    public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        byte[] bytes = callableStatement.getBytes(i);
        return new String(bytes, StandardCharsets.UTF_8);
    }
}

​ 2.定义实体类 :创建一个实体类,用于映射数据库表。在实体类中,使用 @TableField 注解来指定数据库字段和类型处理器。例如下面文章的content内容字段就是longblob字段,通过@TableField注解指定类型处理

java 复制代码
@Data
@TableName("blog_article")
public class Article extends BaseEntity {
    private String name;
    private String url;
    private String tag;
    private Long channelId;
    private String channelName;
    @TableField(value = "content", typeHandler = MyLongBlobTypeHandler.class)
    private String content;
    private Integer orderNum;
    //是否启用,Y启用,N禁用
    private String enabled;
    //浏览数
    private Integer views;
    //description
    private String description;
    //keywords
    private String keywords;
}

​ 3.使用 MyBatis-Plus 正常插入即可:sevice层中正常使用,处理器会默认转成longblob插入数据库

java 复制代码
@Service
public class ArticleService extends ServiceImpl<ArticleMapper, Article> {
    /**
     * 添加文章
     * @param article
     */
    public void add(@NotNull Article article){
        this.save(article);
    }
}
相关推荐
tb_first2 小时前
万字超详细苍穹外卖学习笔记4
java·spring boot·笔记·学习·spring·mybatis
凤山老林11 小时前
SpringBoot + MyBatis-Plus 如何高效实现数据变更记录
java·spring boot·mybatis
WZTTMoon11 小时前
Spring Boot 使用 PageHelper 分页异常:排序引发的“隐形坑”全解析
java·spring boot·mybatis·pagehelper
阿萨德528号12 小时前
MyBatis OGNL 表达式陷阱:Integer类型字段使用“xxx!= ‘‘”时判断失效
java·开发语言·mybatis
那我掉的头发算什么12 小时前
【Mybatis】动态SQL与留言板小项目
数据库·spring boot·sql·spring·mybatis·配置
virus594521 小时前
悟空CRM mybatis-3.5.3-mapper.dtd错误解决方案
java·开发语言·mybatis
-孤存-1 天前
MyBatis数据库配置与SQL操作全解析
数据库·mybatis
csdn2015_1 天前
MyBatis Generator 核心配置文件 generatorConfig.xml 完整配置项说明
java·mybatis
csdn2015_1 天前
generatorConfig.xml 配置 Controller、Service 完整教程
xml·mybatis
tb_first1 天前
万字超详细苍穹外卖学习笔记1
java·jvm·spring boot·笔记·学习·tomcat·mybatis