Mybatis中针对数据库日期JdbcType设置

2023-10-30

Mybatis中针对数据库日期JdbcType设置

在学习Mysql的时候,我们知道数据库类型有date,datatime,time类型。在用Mybatis进行插入数据的时候,我们实体一般都是直接指定java.util.Date类型。为了确保数据类型插入的准确性,最好指定指定日期类型。

1、设置JdbcType来指定插入类型

Java中的数据类型和Mysql中如何映射的?Mybatis如下面这边展示,箭头表示对应关系。

  • (java)Date => (mysql)date mysql实例:2021-12-13

  • Time => time mysql实例:12:12

  • TimeSTAMP => datetime mysql实例:2021-12-13 12:12

2、对照实验

对照实验请关注jdbcType的变化,默认存储的crate_time类型为datetime

2.1默认不指定jdbcType

    <!--新增用户-->
    <insert id="insert" parameterType="SysUser">
        insert into sys_user(
                             id,
                             user_name,
                             user_password,
                             user_email,
                             user_info,
                             head_img,
                             create_time
                            )
                    values(
                            #{id},
                           #{userName},
                           #{userPassword},
                           #{userEmail},
                           #{userInfo},
                           #{headImg,jdbcType=BLOB},
                           #{createTime}
                         )
    </insert>
DEBUG [main] - ==>  Preparing: insert into sys_user( id, user_name, user_password, user_email, user_info, head_img, create_time ) values( ?, ?, ?, ?, ?, ?, ? ) 
DEBUG [main] - ==> Parameters: null, test1(String), 123456(String), test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@52102734(ByteArrayInputStream), 2021-12-13 10:24:33.064(Timestamp)
DEBUG [main] - <==    Updates: 1

2.2、指定为Date类型

 #{createTime,javaType=DATE}
DEBUG [main] - ==>  Preparing: insert into sys_user( id, user_name, user_password, user_email, user_info, head_img, create_time ) values( ?, ?, ?, ?, ?, ?, ? ) 
DEBUG [main] - ==> Parameters: null, test1(String), 123456(String), test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@52102734(ByteArrayInputStream), 2021-12-13(Date)
DEBUG [main] - <==    Updates: 1

2.3、指定为TIME类型

 #{createTime,javaType=TIME}
DEBUG [main] - ==>  Preparing: insert into sys_user( id, user_name, user_password, user_email, user_info, head_img, create_time ) values( ?, ?, ?, ?, ?, ?, ? ) 
DEBUG [main] - ==> Parameters: null, test1(String), 123456(String), test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@52102734(ByteArrayInputStream), 10:31:46(Time)
DEBUG [main] - <==    Updates: 1

2.4、指定为TIMESTAMP类型

#{createTime,jdbcType=TIMESTAMP}
DEBUG [main] - ==>  Preparing: insert into sys_user( id, user_name, user_password, user_email, user_info, head_img, create_time ) values( ?, ?, ?, ?, ?, ?, ? ) 
DEBUG [main] - ==> Parameters: null, test1(String), 123456(String), test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@3541cb24(ByteArrayInputStream), 2021-12-13 10:33:53.337(Timestamp)
DEBUG [main] - <==    Updates: 1

3、总结

虽然说Mybatis有默认的类型处理器,可以自己去判断java的数据的数据类型,去智能化插入到数据库。但是为了防止类型错误,对于一些特殊的数据类型,建议还是指定具体的jdbcType值。

#{headImg,jdbcType=BLOB}//mysql二级制流blob指定
#{createTime,jdbcType=TIMESTAMP} //mysql时间戳datetime指定

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis中针对数据库日期JdbcType设置 的相关文章

  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • gps模块协议NMEA-0183的解析----android4.2下的gps hal层

    这些天调试了一款GPS模组 对GPS的数据格式协议NMEA 0183有了一些了解 现把这些天的心得体会记录下来 GPS 模块硬件介绍 国内的一款GPS模组 使用uart接口与主控进行通信 这款GPS模组只需要供电 使能就能够工作 不需要下载
  • 树莓派3B+安装Debian系统,并配置ssh登录

    Table of Contents 1 需要准备的材料 2 下载镜像文件 3 清除SD卡并烧写系统 4 打开ssh登录权限 5 查看树莓派的IP地址 6 通过putty登录树莓派 1 需要准备的材料 SD卡 树莓派 读卡器 网线 2 下载镜
  • CRM巨头败走中国,Salesforce中国区或将解散?

    关注ITValue 看企业级最新鲜 最价值报道 作者丨海阳 出品丨ToB行业头条 ID wwwqifu Salesforce或将退出中国市场 海外软件在华遭遇 水土不服 ITValue 8月3日 相关传言称 美国最大客户关系管理SaaS供应
  • Centos开启SSH服务

    本篇文章为转载 原作者文章地址 Centos7开启SSH服务 KinwingHU 博客园 cnblogs com 在虚拟机 Vmware Workstation 下 安装了CentOS7 现在想通过SSH工具连接虚拟机中的CentOS7 1
  • vue实现聊天框自动滚动

    需求 1 聊天数据实时更新渲染到页面 2 页面高度随聊天数据增加而增加 3 竖向滚动 4 当用户输入聊天内容或者接口返回聊天内容渲染在页面后 自动滚动到底部 5 提供点击事件操控滚动条上下翻动 环境依赖 vue vue cli 5 0 8
  • Java VisualVM无法更新或安装插件解决办法

    Java VisualVM是JDK中的一个工具 可以实时查看Java程序内存变化的情况 今天在更新或安装时有时会出现建立连接时的问题 提示找不到系统文件 出现这种问题是因为地址出现了问题 整了半天 发现是原来的地址已经发生了改变 解决方法
  • html5实现有道翻译文字播报语音,H5实现文字语音播报

    前言 搜了一堆百度 搜狗 有道的 没有一个能用的 只能投机取巧了 实现 获取播放路径 html
  • Python实现文件编码转换GB2312、GBK、UTF-8

    Python实现文件编码转换GB2312 GBK UTF 8 1 查看文件编码格式 import chardet filename flash c with open filename rb as f data f read encodin
  • [BugKu Web]ez_serialize

    本writeup已经在bugku开放 根据题意 显然是一道JAVA反序列化的题 关于JAVA反序列化漏洞的成因 参见博客https zhuanlan zhihu com p 422314689 此处只说明解题思路 重复开启场景已经没金币了
  • flex布局,子元素设置flex: 1和nowrap,内容长度超出盒子

    解决方法 子元素设置宽度即可 flex 1 width 0 或者 flex 1 min width 0
  • Springboot 项目启动出现 Mysql Lock wait timeout exceeded; try restarting transaction 错误

    一 查询 你的当前数据是否有 Sleep 的事务 执行 sql 检查 在你的项目停止或关闭后检查 show full PROCESSLIST 如果有执行 kill 杀掉 kill id kill 3009 二 查询是否存在挂起的锁 sele
  • pc虚拟服务器,基于虚拟服务器的分布式PC共享平台设计及实现

    摘要 随着云计算等技术的不断发展 C S架构的计算能力在慢慢地向服务器端倾斜 公有云 私有云等产品的出现 代表着人们访问应用程序时不再依赖于传统PC而是借助瘦客户机等连接网络的设备 本文旨在构建基于虚拟服务器的分布式PC共享平台 将桌面虚拟
  • 毕业设计-基于生成对抗网络的图像风格迁移

    目录 前言 课题背景和意义 实现技术思路 一 相关工作 二 基于生成对抗网络的风格迁移模型 三 实验与结果分析 四 总结 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为
  • 计算机算法与程序设计 第一章 编程作业

    返回 所有测验 作业和考试都在2020年12月30日23点截止 请及时完成 编程作业题可以多次提交 取最高分作为本题成绩 依照学术诚信条款 我保证此作业是本人独立完成的 温馨提示 1 本次作业属于Online Judge题目 提交后由系统即
  • 解决Windows系统缺少comres.dll文件无法启动程序问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个comres
  • 类的静态成员变量初始化时间

    首先先搞明白 声明 定义 初始化 类的静态成员变量在类内声明 可以多次声明 类的静态成员必须在类外定义 定义就是给变量分配内存 初始化就是给一个变量赋初值 内置类型通常定义时默认初始化 类静态成员变量在main函数执行前完成初始化 有静态初
  • buck拓扑原理及仿真

    buck基本拓扑结构 开关管ON 电源向负载电阻提供电能 电感电流线性增大 变化率 变化量 开关管OFF 电感 电容中能量继续向负载电阻提供电能 电感电流线性减小 变化率 变化量 平衡状态时 由电感伏秒平衡得 推导得 理论电感电流在CCM
  • 快节奏多人在线游戏网络入门系列教程(2):客户端预测与服务器协调

    简介 在上一篇文章中 我们简单介绍了权威服务器的体系 客户端发送交互信息给服务器 服务器周期性的更新游戏状态 然后返回游戏状态给客户端 这个简单体系会导致用户发送命令时和屏幕渲染响应之间的延迟 产生延迟的原因是客户端发送命令给服务器 加上服
  • BIO/NIO/AIO

    IO模型 BIO BIO全称为 Blocking I O 是一种同步阻塞IO 最开始的网络通信就是BIO模型 服务端创建一个ServerSocket 客户端创建一个 Socket 去连接服务端 这样客户端与服务端便可以进行通信了 产生的问题
  • Mybatis中针对数据库日期JdbcType设置

    Mybatis中针对数据库日期JdbcType设置 在学习Mysql的时候 我们知道数据库类型有date datatime time类型 在用Mybatis进行插入数据的时候 我们实体一般都是直接指定java util Date类型 为了确