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);
    }
}
相关推荐
莫寒清5 天前
Mybatis的插件原理
面试·mybatis
莫寒清5 天前
MyBatis 中动态 SQL 的作用
面试·mybatis
吹晚风吧5 天前
实现一个mybatis插件,方便在开发中清楚的看出sql的执行及执行耗时
java·sql·mybatis
码云数智-大飞5 天前
像写 SQL 一样搜索:dbVisitor 如何用 MyBatis 范式颠覆 ElasticSearch 开发
sql·elasticsearch·mybatis
Mr__Miss6 天前
mybatisPlus分页组件3.5.15版本报错解决方案
mybatis
无名-CODING6 天前
MyBatis中#{}和${}完全指南:从原理到实战
mybatis
鹿角片ljp6 天前
短信登录:基于 Session 实现(黑马点评实战)
java·服务器·spring boot·mybatis
莫寒清6 天前
MyBatis 如何防止 SQL 注入?
面试·mybatis
玄〤6 天前
个人博客网站搭建day5--MyBatis-Plus核心配置与自动填充机制详解(漫画解析)
java·后端·spring·mybatis·springboot·mybatis plus
计算机学姐6 天前
基于SpringBoot的服装购物商城销售系统【协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·mysql·信息可视化·mybatis·推荐算法