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);
    }
}
相关推荐
The best are water2 分钟前
jeesite mybatis添加拦截器,推送指定表的变更数据到其他数据库
数据库·mybatis
lunz_fly199221 分钟前
【源码解读之 Mybatis】【核心篇】-- 第6篇:StatementHandler语句处理器
mybatis
lunzi_fly42 分钟前
【源码解读之 Mybatis】【核心篇】-- 第6篇:StatementHandler语句处理器
mybatis
optimistic_chen2 小时前
【Java EE进阶 --- SpringBoot】Mybatis操作数据库(基础二)
xml·数据库·spring boot·笔记·java-ee·mybatis
ss27313 小时前
手写MyBatis第107弹:@MapperScan原理与SqlSessionTemplate线程安全机制
java·开发语言·后端·mybatis
二宝15218 小时前
黑马商城day1-MyBatis-Plus
java·开发语言·mybatis
龙猫蓝图2 天前
wrapper+ xml文件进行SQL编写
mybatis
ss2732 天前
手写MyBatis第104弹:SqlSession从工厂构建到执行器选择的深度剖析
java·开发语言·后端·mybatis
一路向北_Coding2 天前
MyBatis Generator让你优雅的写SQL
mysql·mybatis
莫陌尛.2 天前
SSM(Spring+SpringMVC+Mybatis)整合
java·spring·mybatis