目录

  • 1. 自定义日期类型处理器
  • 2. 配置自定义日期处理器
  • 3. 新增,查询

1. 自定义日期类型处理器

继承mybatis提供的BaseTypeHandler覆写方法,
来转换Java和数据库中的字段
package cn.bitqian.config;import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;/*** 日期类型处理器* 将日期类型转换为long/long转换为util.date* 将Util.date 转换为数据库中的bigint(long)* @author echo lovely* @date 2020/9/11 21:15*/
public class DateTypeHandler extends BaseTypeHandler<Date> {// util.date ==> 插入数据库中的变为bigint类型@Overridepublic void setNonNullParameter(PreparedStatement preparedStatement,int i, Date date, JdbcType jdbcType) throws SQLException {if (date != null) {long time = date.getTime();preparedStatement.setLong(i, time);}}// 下面三个重载 用于查询数据库中的字段,转换为日期@Overridepublic Date getNullableResult(ResultSet resultSet, String s) throws SQLException {System.out.println("obj========" + resultSet.getObject(s));long birthdayTime = resultSet.getLong(s);if (birthdayTime != 0)return new Date(birthdayTime);return null;}@Overridepublic Date getNullableResult(ResultSet resultSet, int i) throws SQLException {long birthdayTime = resultSet.getLong(i);System.out.println(birthdayTime);if (birthdayTime != 0)return new Date(birthdayTime);return null;}@Overridepublic Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {long birthdayTime = callableStatement.getLong(i);if (birthdayTime != 0)return new Date(birthdayTime);return null;}
}

2. 配置自定义日期处理器

 <!-- 指定额、日期类型处理器 --><typeHandlers><typeHandler handler="cn.bitqian.config.DateTypeHandler"/></typeHandlers>

3. 新增,查询

    // 测试新增 日期转换为长整型@Testpublic void test1() {SqlSession session = getSession();if (session != null) {UserMapper mapper = session.getMapper(UserMapper.class);User user = new User(null, "lucy", "999", new Date());int count = mapper.save(user);System.out.println(count);session.close();}}@Testpublic void test2() {SqlSession session = getSession();if (session != null) {UserMapper mapper = session.getMapper(UserMapper.class);// long int -> util.dateSystem.out.println(mapper.selectUserById(6));session.close();}}

log4j debug如下

  • 你可能需要动态sql
  • mapper接口用于curd

mybatis TypeHandler 类型处理器相关推荐

  1. MyBatis自定义类型处理器 TypeHandler

    在项目开发中经常会遇到一个问题: 当我们在javabean中自定义了枚举类型或者其它某个类型,但是在数据库中存储时往往需要转换成数据库对应的类型,并且在从数据库中取出来时也需要将数据库类型转换为jav ...

  2. MyBatis自定义类型处理器(typeHandler)

    MyBatis自定义类型处理器(typeHandler) 我们执行sql语句通过PreparedStatement语句实现,PreparedStatement会设置?值,类型处理器帮PreparedS ...

  3. 【Mybatis】类型处理器TypeHandler的作用与自定义

    一.什么是类型处理器 1.类型处理器(TypeHandler) MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时,都会用类型处理器将获取到的值以合 ...

  4. MyBatis之类型处理器typeHandlers

    typeHandlers类型处理器 实现java类型与数据库类型之间的转换,可以使用系统提供的类型处理器,也可以自定义类型处理器,这里介绍的是实现自定义类型处理器处理数据库类型与java类型的转换 比 ...

  5. MyBatis的类型处理器

    类型处理器(类型转换器) 1.MyBatis自带一些常见的类型处理器 int - number String - varchar() 2.自定义MyBatis类型处理器 java - 数据库(jdbc ...

  6. Mybatis——类型处理器TypeHandler

    在日常开发中使用mybatis时,mybatis的mapper.xml.mapper接口.entity实体一般会由mybatis-generator自动生成,其中实体的每个属性与数据库表的列一一对应, ...

  7. MyBatis-Plus——字段类型处理器TypeHandler

    字段类型处理器(TypeHandler) 1,准备工作 (1)MyBatis 中的 TypeHandler 类型处理器用于 JavaType 与 JdbcType 之间的转换,假设我们用户表中有一个联 ...

  8. mybatis typehandler

    建立TypeHandler 我们知道java有java的数据类型,数据库有数据库的数据类型,那么我们在往数据库中插入数据的时候是如何把java类型当做数据库类型插入数据库,在从数据库读取数据的时候又是 ...

  9. Mybatis—TypeHandler

      Mybatis在执行SQL语句之前和完成之后都将要处理JDBC类型与Java类型之间的转换,简言之TypeHandler主要的工作就是完成JDBC类型和Java类型之间的相互转换,具体情况如下: ...

最新文章

  1. 前沿 | DeepMind 最新研究——神经算术逻辑单元,有必要看一下!
  2. 用jquery验证用户名是否有效或重复
  3. [转载].NET中高效能的socket编程
  4. linux dmaengine编程
  5. spark1.0和2.0的区别_【系统】华为正式发布鸿蒙OS 2.0手机Beta版:UI界面、交互无区别...
  6. 程序员夏天格子衫,冬天穿什么?
  7. Oracle 关于WKT构造SDO_GEOMETRY的问题。
  8. c#winform窗口页面一打开就加载的方法
  9. 别让小小的“短信验证码”毁了用户体验
  10. 【C++】指针与引用的区别
  11. 为什么计算机报名无法选择福建,2020年9月福建计算机考试如何报名
  12. JS前端怎样通过程序来获取当前浏览器是什么版本的浏览器(或者判断当前浏览器是否为IE8及以下浏览器)
  13. 开心消消乐简单的逆向破解过程
  14. 小米手机便签一键启动这个功能,可将便签录音秒变文字
  15. find linux 指定后缀_Linux下备份目录下指定的某些后缀文件
  16. 菱形(两种数组方法)
  17. 【CV算法兵器】“晓风残月” ->对抗攻击“兵器”大放送(综述篇)
  18. 多显示器屏幕枚举方法
  19. prometheus-预警-6
  20. 二类分类器构造多类分类器

热门文章

  1. oracle之数据处理之约束练习
  2. oracle之数据处理
  3. oracle 数据操作的相关参数
  4. Linux多线程开发-线程同步-条件变量pthread_cond_t
  5. Qt 设置指定列数显示
  6. Linux:编译生成内核模块(来自国嵌的视频教学)
  7. CSS之Box-sizing
  8. java json 修改字段_JSON文件-Java:编辑/更新字段值
  9. linux shell中各种分号和括号,linux shell 各种分号,括号使用方法总结
  10. .NETCore_生成实体