首页 > 其他分享 >字段类型处理器

字段类型处理器

时间:2023-08-18 22:12:11浏览次数:31  
标签:java private Duration 处理器 类型 import com class

字段类型处理器

Json字段

package com.example.demomybatisplus.data.一对多;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.example.demomybatisplus.enums.Demo;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.List;

@Data
@TableName(autoResultMap = true)
public class Stu {


    @TableId(type = IdType.ASSIGN_ID)
    private String stuId;

    private String stuName;

    private String classId;

    private String age;

    @TableField(typeHandler = JacksonTypeHandler.class)
    private String[] address;

    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> province;

    @TableField(typeHandler = JacksonTypeHandler.class)
    private Object value;

    @TableField(typeHandler = JacksonTypeHandler.class)
    private Demo demo;




}

image-20230818215244695

自定义字段处理

package com.example.demomybatisplus.hander;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.Duration;

@MappedJdbcTypes(value = JdbcType.VARCHAR)
@MappedTypes(value = Duration.class)
public class DurationHander  extends BaseTypeHandler<Duration> {

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, Duration parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i,parameter.toString());
    }

    @Override
    public Duration getNullableResult(ResultSet rs, String columnName) throws SQLException {



        return Duration.parse(rs.getString(columnName));
    }

    @Override
    public Duration getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return  Duration.parse(rs.getString(columnIndex));
    }

    @Override
    public Duration getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return Duration.parse(cs.getString(columnIndex));
    }
}

使用:

package com.example.demomybatisplus.data;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.example.demomybatisplus.hander.DurationHander;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;

import java.time.Duration;
import java.time.LocalDateTime;

@Data
public class UserData {


    // 登陆时长

    @TableField(typeHandler = DurationHander.class)
    private Duration duration = Duration.between(loginTime,createTime);


}

通用枚举

  • 使用 @EnumValue  //  注解枚举属性  --> 存什么到数据库
     
        
    使用 @JsonValue	//标记响应json值  --->前端返回值
    

步骤2: 配置扫描通用枚举

  • 注意!! 从 3.5.2 开始无需配置
  • 注意!! spring mvc 配置参考,安装集成 MybatisSqlSessionFactoryBean 枚举包扫描,spring boot 例子配置如下:

标签:java,private,Duration,处理器,类型,import,com,class
From: https://www.cnblogs.com/firsthelloworld/p/17641722.html

相关文章

  • 如何用java将本地redis 中所有类型数据同步到阿里云redis中
    在分布式系统中,数据同步是一个重要的任务,特别是在将数据从一个Redis实例同步到另一个Redis实例的情况下。本篇博客将介绍如何使用Java编程语言以及Jedis(JavaRedis客户端)库来实现将本地Redis中的所有类型数据同步到阿里云Redis实例中。核心代码importredis.client......
  • PostgreSQL与Java类型的对照
    PostgreSQL™                JavaSE8date                    LocalDatetime                   LocalTimetimestamp withouttimezone      LocalDateTimetimestampwithtimezon......
  • Linux的文件类型
    1.查看识别在某个目录下文件类型:$ls-ld<filename>2.文件可能的类型,跟着不一样的后缀1–:regularfile2d:directory3c:characterdevicefile4b:blockdevicefile5s:localsocketfile6p:namedpipe7l:sym......
  • C++快速入门 第三十七讲:高级强制类型转换
    实例1:静态强制转换1#include<iostream>2#include<string>34usingnamespacestd;5classCompany6{7public:8Company(stringtheName,stringproduct);9virtualvoidprintInfo();1011protected:12stringname;13......
  • C++快速入门 第七讲:复杂的数据类型
    数组:可以把许多个同类型的值存储在同一变量名下实例1:输入的数据存储到数组中,并计算其和与平均值输出1#include<iostream>23usingnamespacestd;//使用作用域45intmain()6{7intarray[10];8inti;9intsum=0;10doubleaverage;......
  • C++快速入门 第八讲:复杂的数据类型——指针
    小知识:程序以文件的形式存储在硬盘,但它们却是在计算机的内存中运行对于变量可以通过变量名与地址两种方式进行索引,变量的地址在程序执行期间是不会发生变换的地址是计算机内存中的某个位置;指针是专门用来存放地址的特殊类型变量......
  • C++快速入门 第九讲:复杂的数据类型——指针02
    指针的类型必须与由它保存其地址的变量的类型一致,当某个变量的地址给了指针p时,就可以通过*p(即表示该地址的数据)来对该变量数据进行操作一定要牢记一个事实:指针所保存的是内存中的一个地址,它并不保存指向的数据的值本身。因此务必确保指针对应一个已经存在的变量或者一块已经分配......
  • C++快速入门 第十讲:复杂的数据类型——指针和数组
    计算机是把数组以一组连续的内存块保存的。数组的第一个元素的地址为该数组的基地址。实例1:数组元素地址打印1#include<iostream>23usingnamespacestd;45intmain()6{7constunsignedshortITEMS=5;8intintArray[ITEMS]={1,2,3,4,5}......
  • 2 JavaScript的基础类型
    2JavaScript的基础类型JS虽然是一个脚本语言.麻雀虽小,五脏俱全.在js中也是可以像其他编程语言一样.声明变量,条件判断,流程控制等等.我们先看一下JS中的数据类型在js中主要有这么几种数据类型(基本)number数字,不论是整数还是小数,数据类型都是numberstring字......
  • JS数据类型详解
    JS的数据类型分为基本数据类型+引用数据类型基本数据类型:number,boolean,string,null,undefined, symbol(独一无二并且不可变的数据类型),bigint引用数据类型: Function,Array,Object区别:基本数据类型由于所占内存大小可控所以放于栈中,引用数据类型所占空间不固定放于堆中,并生......