转载自:www.javaman.cn
在 Spring Boot 项目中使用 MyBatis-Plus 处理 longblob
字段时,我们可以按照以下步骤进行操作。假设 longblob
存储的是字符串数据。以下是完整的示例代码:
- 添加依赖:在你的项目的
pom.xml
文件中添加 MyBatis-Plus 的依赖:
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>最新版本号</version>
</dependency>
- 创建 MyLongBlobTypeHandler 类:创建一个自定义的类型处理器
MyLongBlobTypeHandler
来处理longblob
字段的数据。这个处理器会将longblob
转换为字符串。
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> {@Overridepublic void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {preparedStatement.setBytes(i, s.getBytes(StandardCharsets.UTF_8));}@Overridepublic String getNullableResult(ResultSet resultSet, String s) throws SQLException {byte[] bytes = resultSet.getBytes(s);return new String(bytes, StandardCharsets.UTF_8);}@Overridepublic String getNullableResult(ResultSet resultSet, int i) throws SQLException {byte[] bytes = resultSet.getBytes(i);return new String(bytes, StandardCharsets.UTF_8);}@Overridepublic 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
注解指定类型处理
@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;//descriptionprivate String description;//keywordsprivate String keywords;
}
3.使用 MyBatis-Plus 正常插入即可:sevice层中正常使用,处理器会默认转成longblob插入数据库
@Service
public class ArticleService extends ServiceImpl<ArticleMapper, Article> {/*** 添加文章* @param article*/public void add(@NotNull Article article){this.save(article);}
}