MyBatisPlus TypeHandler自定义字段类型转换Handler
目录
- 前言
- 一、思考
- 二、解决方式
- 2.1、TypeHandler源码
- 2.2、BaseTypeHandler 源码
- 2.3、BigIntegerTypeHandler 源码中的实现类
- 2.4、尝试
- 三、实践案例
- 3.1、数据库
- 3.2、相关代码
- 3.3、测试
前言
今天遇上这样的一个情况,数据库类型与Java对象属性类型不对应,这种情况该如何处理
在 MySQL 中,字段的属性为 BigInt
,按道理来说,对应Java
中的Long
类型。
但实际上项目中与之对应的 Java对象中的属性的类型是 Date
类型,直接给我这个废物当头一棒
而且不是一两张表,是比较多的表处于Date
和 BigInt
混用的情况,
你说要好好用Date就好好用Date,要好好用时间戳就好好用时间戳啊,还混用,类型还不对应,麻了
(别问这个项目怎么出现这种事情的,就是来了人,又走了人,然后填坑)
保持微笑
相关推荐
-
Mybatis-Plus3.2.0 MetaObjectHandler 无法进行公共字段全局填充
问题描述 最近在做的这个项目架构组对于配置文件决定,采取的是 .xml 配置文件 一个数据中台项目,因为部署环境比较复杂,可能需要适配阿里.腾讯.开源等环境和机房,所以配置文件和启动类为三类 之前写的 MetaObjectHandler 都是采用的 SpringBoot 配置方式开发,突然换成 .xml 配置文件,还是有不少坑的,其中就有配置的 MetaObjectHandler 死活不起作用 ⬆️
-
MybatisPlus如何自定义TypeHandler映射JSON类型为List
目录 自定义TypeHandler映射JSON类型为List 1. 实体类 2. ListTypeHandler 3. ReportUserListTypeHandler 4. Java 泛型 自定义TypeHandler的使用笔记 类型转换器还可以通过注解配置 java类型和jdbc类型 定义 使用 自定义TypeHandler映射JSON类型为List 1. 实体类 这里只展示需要映射的字段,分别在所需映射的字段和实体类上添加注解. @Data @TableName(value = "rep
-
Mybatis-plus使用TableNameHandler分表详解(附完整示例源码)
为什么要分表 Mysql是当前互联网系统中使用非常广泛的关系数据库,具有ACID的特性. 但是mysql的单表性能会受到表中数据量的限制,主要原因是B+树索引过大导致查询时索引无法全部加载到内存.读取磁盘的次数变多,而磁盘的每次读取对性能都有很大的影响. 这时一个简单可行的方案就是分表(当然土豪也可以堆硬件),将一张数据量庞大的表的数据,拆分到多个表中,这同时也减少了B+树索引的大小,减少磁盘读取次数,提高性能. 两种基础分表逻辑 说完了为什么要分表,下面聊聊业务开发中常见的两种基础的分表逻辑.
-
MyBatis自定义typeHandler的完整实例
自定义typeHandler 对于自定义typeHandler来说,需要在配置文件中注册typeHandlers 然后需要实现TypeHandler接口, 一个例子 首先编写调度的处理类 package com.ming.MyBatis; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.TypeHandler; import org.apache.logging.log4j.LogManager; imp
-
Mybatis自定义TypeHandler解决特殊类型转换问题详解
我们知道,Java和MySQL中的数据类型是不同的,Java中除了基本数据类型,还有对象. 有时候使用MySQL存储数据,或者从MySQL中读取数据时,会有一些特殊需求 weary ,比如: 将Integer数组直接存入MySQL,保存为BLOB形式,读取出来时又是正常的Integer数组 将Integer数组转换为String,然后存入MySQL,使用varchar类型,读取出来时又是正常的Integer数组 这也太难了叭! 解决办法有两种: Basic Method:Java在存入数据之前,
-
MyBatisPlus TypeHandler自定义字段类型转换Handler
目录 前言 一.思考 二.解决方式 2.1.TypeHandler源码 2.2.BaseTypeHandler 源码 2.3.BigIntegerTypeHandler 源码中的实现类 2.4.尝试 三.实践案例 3.1.数据库 3.2.相关代码 3.3.测试 前言 今天遇上这样的一个情况,数据库类型与Java对象属性类型不对应,这种情况该如何处理 在 MySQL 中,字段的属性为 BigInt,按道理来说,对应Java中的Long类型. 但实际上项目中与之对应的 Java对象中的属性的类型是
-
mybatis-plus QueryWrapper自定义查询条件的实现
mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等,附上官网链接https://mp.baomidou.com/,github上有代码例子,国内小伙伴推荐码云https://gitee.com/baomidou/mybatis-plus. 但是,其中还是有些小坑,文档也没有涉及的很全面,碰到问题,百度或者发issue,能力强的还是直接看源码好,一切答案都在源码中. 版本推荐用3.1.0,3.1.1及以上版本有bu
-
mybatis-plus 返回部分字段的解决方式
mybatis-plus的代码生成器会在实体类中生成数据库所有字段,我们去用mapper接口查询时,会返回数据库所有的字段. 但有些字段不是我们想要的,比如:deleted,所以我们可以在不需要的字段上面加@JsonIgnore注解,返回给前端的时候会自动把这个字段去除. 补充知识:Mybatis-Plus只查询特定字段与创建子类方法 Mybatis-Plus查询特定字段例子: Seal seal = sealService.selectOne( new EntityWrapper<Seal>
-
mybatisplus的公共字段插入的实现
Mybatis的公共字段插入的实现,具体内容如下所示: 公共的基础类 package com.yss.common.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.myba
-
PostgreSQL 自定义自动类型转换操作(CAST)
背景 PostgreSQL是一个强类型数据库,因此你输入的变量.常量是什么类型,是强绑定的,例如 在调用操作符时,需要通过操作符边上的数据类型,选择对应的操作符. 在调用函数时,需要根据输入的类型,选择对应的函数. 如果类型不匹配,就会报操作符不存在,或者函数不存在的错误. postgres=# select '1' + '1'; ERROR: operator is not unique: unknown + unknown LINE 1: select '1' + '1'; ^ HINT:
-
使用JPA自定义VO类型转换(EntityUtils工具类)
目录 JPA自定义VO类型转换(EntityUtils工具类) dto,vo,po,bo等实体转换工具类 下面宣布这次的主角:dozer JPA自定义VO类型转换(EntityUtils工具类) 在JPA查询中,如果需要返回自定义的类,可以使用EntityUtils工具类,该类源码: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.Constructor; import java.
-
Spring中自定义数据类型转换的方法详解
目录 类型转换服务 实现Converter接口 实现ConverterFactory接口 实现GenericConverter接口 环境:Spring5.3.12.RELEASE. Spring 3引入了一个core.onvert包,提供一个通用类型转换系统.系统定义了一个SPI来实现类型转换逻辑,以及一个API来在运行时执行类型转换.在Spring容器中,可以使用这个系统作为PropertyEditor实现的替代,将外部化的bean属性值字符串转换为所需的属性类型.还可以在应用程序中需要类型转
-
MyBatis-Plus实现公共字段自动填充功能详解
目录 1.问题分析 2.实现步骤 3. 实现字段全局填充 1.问题分析 我们在开发中经常遇到多个实体类有共同的属性字段,例如在用户注册时需要设置创建时间.创建人.修改时间.修改人等字段,在用户编辑信息时需要设置修改时间和修改人等字段.这些字段属于公共字段,也就是很多表中都有这些字段,能不能对于这些公共字段在某个地方统一处理,来简化开发呢? 答案就是我们可是使用Mybatis Plus提供的公共字段自动填充功能. 2.实现步骤 Mybatis Plus公共字段自动填充,也就是在插入或者更新的时候为
-
使用Angular自定义字段校验指令的方法示例
Angular中,提供的表单验证不能用于所有应用场景,就需要创建自定义验证器,比如对IP.MAC的合法性校验 这里是根据官网实例自定义MAC地址的正则校验,环境为Angular: 7.2.0 , NG-ZORRO:v7.0.0-rc3 添加指令 /shared/validator.directive.ts 注册到 NG_VALIDATORS 提供商中 providers: [ {provide: NG_VALIDATORS, useExisting: ValidatorDirective, mu
-
在django中自定义字段Field详解
Django的Field类中方法有: to_python() # 把数据库数据转成python数据 from_db_value() # 把数据库数据转成python数据 get_pre_value() # 把python数据压缩准备存入数据库 get_db_pre_value() # 把压缩好的数据转成数据库查询集 get_prep_lookup() # 指定过滤的条件 value_to_string() # 数据序列化 如果创建的Field比字符串,日期,整数等更复杂的数据结构,可能需要重写t
随机推荐
- NYboy.vbs病毒源代码公布,我来模拟熊猫烧香
- Access转Sql Server问题 实例说明
- Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
- 通过SQL Server 2008数据库复制实现数据库同步备份
- 基于jquery的一个OutlookBar类,动态创建导航条
- Java使用正则表达式去除小数点后面多余的0功能示例
- python去掉字符串中重复字符的方法
- python基于windows平台锁定键盘输入的方法
- Python中itertools模块用法详解
- JavaScript实现简单图片滚动附源码下载
- C#字符串常见操作总结详解
- 原生js实现无缝轮播图效果
- 在Python的Django框架中加载模版的方法
- msnet.sys、jet300.dll的简单分析与清除办法
- android视频播放简单实现示例(VideoView&MediaPlayer)
- PHP获取数组中重复最多的元素的实现方法
- 在Linux中如何架设CS网吧服务器
- springboot整合rabbitmq的示例代码
- Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】
- Okhttp、Retrofit进度获取的方法(一行代码搞定)