mybatis TypeHandler 类型处理器
目录
- 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 类型处理器相关推荐
- MyBatis自定义类型处理器 TypeHandler
在项目开发中经常会遇到一个问题: 当我们在javabean中自定义了枚举类型或者其它某个类型,但是在数据库中存储时往往需要转换成数据库对应的类型,并且在从数据库中取出来时也需要将数据库类型转换为jav ...
- MyBatis自定义类型处理器(typeHandler)
MyBatis自定义类型处理器(typeHandler) 我们执行sql语句通过PreparedStatement语句实现,PreparedStatement会设置?值,类型处理器帮PreparedS ...
- 【Mybatis】类型处理器TypeHandler的作用与自定义
一.什么是类型处理器 1.类型处理器(TypeHandler) MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时,都会用类型处理器将获取到的值以合 ...
- MyBatis之类型处理器typeHandlers
typeHandlers类型处理器 实现java类型与数据库类型之间的转换,可以使用系统提供的类型处理器,也可以自定义类型处理器,这里介绍的是实现自定义类型处理器处理数据库类型与java类型的转换 比 ...
- MyBatis的类型处理器
类型处理器(类型转换器) 1.MyBatis自带一些常见的类型处理器 int - number String - varchar() 2.自定义MyBatis类型处理器 java - 数据库(jdbc ...
- Mybatis——类型处理器TypeHandler
在日常开发中使用mybatis时,mybatis的mapper.xml.mapper接口.entity实体一般会由mybatis-generator自动生成,其中实体的每个属性与数据库表的列一一对应, ...
- MyBatis-Plus——字段类型处理器TypeHandler
字段类型处理器(TypeHandler) 1,准备工作 (1)MyBatis 中的 TypeHandler 类型处理器用于 JavaType 与 JdbcType 之间的转换,假设我们用户表中有一个联 ...
- mybatis typehandler
建立TypeHandler 我们知道java有java的数据类型,数据库有数据库的数据类型,那么我们在往数据库中插入数据的时候是如何把java类型当做数据库类型插入数据库,在从数据库读取数据的时候又是 ...
- Mybatis—TypeHandler
Mybatis在执行SQL语句之前和完成之后都将要处理JDBC类型与Java类型之间的转换,简言之TypeHandler主要的工作就是完成JDBC类型和Java类型之间的相互转换,具体情况如下: ...
最新文章
- 前沿 | DeepMind 最新研究——神经算术逻辑单元,有必要看一下!
- 用jquery验证用户名是否有效或重复
- [转载].NET中高效能的socket编程
- linux dmaengine编程
- spark1.0和2.0的区别_【系统】华为正式发布鸿蒙OS 2.0手机Beta版:UI界面、交互无区别...
- 程序员夏天格子衫,冬天穿什么?
- Oracle 关于WKT构造SDO_GEOMETRY的问题。
- c#winform窗口页面一打开就加载的方法
- 别让小小的“短信验证码”毁了用户体验
- 【C++】指针与引用的区别
- 为什么计算机报名无法选择福建,2020年9月福建计算机考试如何报名
- JS前端怎样通过程序来获取当前浏览器是什么版本的浏览器(或者判断当前浏览器是否为IE8及以下浏览器)
- 开心消消乐简单的逆向破解过程
- 小米手机便签一键启动这个功能,可将便签录音秒变文字
- find linux 指定后缀_Linux下备份目录下指定的某些后缀文件
- 菱形(两种数组方法)
- 【CV算法兵器】“晓风残月” ->对抗攻击“兵器”大放送(综述篇)
- 多显示器屏幕枚举方法
- prometheus-预警-6
- 二类分类器构造多类分类器