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);
    }
}
相关推荐
设计师小聂!15 小时前
尚庭公寓----------分页查询
java·开发语言·spring·maven·mybatis
秋秋棠21 小时前
MyBatis延迟加载(Lazy Loading)之“关联查询”深度解析与实践
java·mybatis
秋秋棠1 天前
MyBatis级联查询深度解析:一对多关联实战指南
jvm·tomcat·mybatis
hello 早上好2 天前
MyBatis 动态 SQL、#{}与 ${}区别、与 Hibernate区别、延迟加载、优势、XML映射关系
sql·mybatis·hibernate
我命由我123452 天前
Spring Boot - Spring Boot 集成 MyBatis 分页实现 手写 SQL 分页
java·spring boot·后端·sql·spring·java-ee·mybatis
艺杯羹2 天前
MyBatis 之分页四式传参与聚合、主键操作全解
java·开发语言·maven·mybatis
设计师小聂!2 天前
尚庭公寓-----day1 业务功能实现
java·ide·spring·maven·mybatis
郑州吴彦祖7722 天前
Mybatis的SQL编写—XML方式
java·sql·spring·mybatis
Raners_2 天前
【Java代码审计(2)】MyBatis XML 注入审计
xml·java·安全·网络安全·mybatis
别来无恙1493 天前
Spring Boot + MyBatis 实现用户登录功能详解(基础)
spring boot·后端·mybatis