首页 > 其他分享 >mybatis-plus处理blob字段

mybatis-plus处理blob字段

时间:2023-12-07 09:34:52浏览次数:35  
标签:String bytes private 字段 plus blob mybatis public longblob

转载自:www.javaman.cn

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

  1. 添加依赖:在你的项目的 pom.xml 文件中添加 MyBatis-Plus 的依赖:
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>最新版本号</version>
</dependency>
  1. 创建 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> {

    @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注解指定类型处理

@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插入数据库

@Service
public class ArticleService extends ServiceImpl<ArticleMapper, Article> {
    /**
     * 添加文章
     * @param article
     */
    public void add(@NotNull Article article){
        this.save(article);
    }
}

13、Sprin

标签:String,bytes,private,字段,plus,blob,mybatis,public,longblob
From: https://www.cnblogs.com/dalaba/p/17880970.html

相关文章

  • mybatis-plus 新版代码生成器模板
    publicclassCodeGenerator{publicstaticvoidmain(String[]args){//数据源配置FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/xdclass?useUnicode=true&characterEncoding=utf-8&useSSL=false","root",&qu......
  • 悲观锁、乐观锁、mybatis-plus实现乐观锁
    转载自:www.javaman.cn1、悲观锁、乐观锁乐观锁和悲观锁是两种用于处理并发操作的数据锁定策略。它们在处理多个事务尝试同时访问和修改同一数据时的方法有所不同。悲观锁(PessimisticLocking):概念:悲观锁是一种基于悲观态度的数据并发控制机制。它总是假设最坏的情况,即认为其他......
  • 悲观锁、乐观锁、mybatis-plus实现乐观锁
    悲观锁、乐观锁、mybatis-plus实现乐观锁转载自:www.javaman.cn1、悲观锁、乐观锁乐观锁和悲观锁是两种用于处理并发操作的数据锁定策略。它们在处理多个事务尝试同时访问和修改同一数据时的方法有所不同。悲观锁(PessimisticLocking):概念:悲观锁是一种基于悲观态度的数......
  • Mybatis-plus逻辑删除
    转载自:www.javaman.cn1、application.yml配置mybatis-plus:表示这是MyBatis-Plus的配置部分。global-config:全局配置。db-config:数据库相关配置。logic-delete-field:指定逻辑删除的字段名。在这里,指定的字段名是deleted。这意味着,当你调用MyBatis-Plus的逻辑......
  • Vue3+Vite+ElementPlus管理系统常见问题
     本文本记录了使用Vue3+Vite+ElementPlus从0开始搭建一个前端工程会面临的常见问题,没有技术深度,但全都是解决实际问题的干货,可以当作是问题手册以备后用。本人日常工作偏后端开发,因此,文中的一些前端术语描述可能不严谨,敬请谅解。重点是:这里记录的解决方案都是行之有效果的,拿来......
  • Vue3+Vite+ElementPlus管理系统常见问题
    本文本记录了使用Vue3+Vite+ElementPlus从0开始搭建一个前端工程会面临的常见问题,没有技术深度,但全都是解决实际问题的干货,可以当作是问题手册以备后用。本人日常工作偏后端开发,因此,文中的一些前端术语描述可能不严谨,敬请谅解。重点是:这里记录的解决方案都是行之有效果的,拿来即......
  • 同事写了一条 SQL,把 MyBatis 都干翻了。。
    作者:Lxlxxx链接:https://juejin.cn/post/7221461552343072828前言继上次线上CPU出现了报警,这次服务又开始整活了,风平浪静了没几天,看生产日志服务的运行的时候,频繁的出现OutOfMemoryError,就是我们俗称的OOM,这可还行!频繁的OOM直接会造成服务处于一个不可用的情况,通过Skywalking......
  • 基于Vue3.3 + TS4 ,让我们自主打造比肩 ElementPlus 的优质组件库的一些经验总结
    Vue.js作为一款流行的JavaScript框架,在前端开发中扮演着重要的角色。本文将分享在Vue3.3和TypeScript4的环境下,打造优质组件库的经验总结,并提供相关示例代码。一、创建项目并配置开发环境首先,我们需要创建一个新的Vue项目并配置好开发环境。具体步骤如下:使用VueCLI创建一个新的......
  • Jpa+mybatis混合使用时,jsqlparser一直报错
    net.sf.jsqlparser.statement.insert.Insertcannotbecasttonet.sf.jsqlparser.statement.select.Select解决<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactI......
  • 基于element-plus实现表单校验
    官网https://element-plus.org/zh-CN/component/form.html#自定义校验规则需求在日常开发中,我们需要对表单的内容进行校验,确保用户输入的符合我们正常的业务,并赋予正确的提示,以登录注册举例:功能需求说明:注册功能(校验+注册)当用户输入用户名移开文本框后,也就是失去焦点时,需......