MyBatis 入门(五)--typeHandlers
来源:互联网 发布:xboxone网络设置方法 编辑:程序博客网 时间:2024/06/12 21:19
一、作用及默认的处理
类型处理器的作用就是
- 查询时把数据库存储的值转换成java类型
- 修改是把java类型转换成数据库类型存储,处理
- 下面这个表格描述了默认的类型处理器。
二、自定义类型
例如我们在数据库经常把时间存储为一个14位的VARCHAR(YYYYmmddssss)。而前台java层为java.util.Date,在这里我们就简单做一个类型处理。
- 定义类型处理
package com.elements.typehandler;import java.sql.CallableStatement;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.Date;import org.apache.ibatis.type.BaseTypeHandler;import org.apache.ibatis.type.JdbcType;public class DataTimeTypeHandler extends BaseTypeHandler<Date> { /** * * 这里应该是在保存数据的时候,把前台的日期类型转换成数据的varchar 我们使用了SimpleDateFormat来转换data类型 * */ @Override public void setNonNullParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType) throws SQLException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); ps.setString(i, sdf.format(parameter)); } /** * 下面三个函数应该都是返回到java层时调用,我们把varchar转换成Date类型 */ @Override public Date getNullableResult(ResultSet rs, String columnName) throws SQLException { String varchartime = rs.getString(columnName); if (varchartime!=null) return new Date(Long.parseLong(varchartime)); else return null; } @Override public Date getNullableResult(ResultSet rs, int columnIndex) throws SQLException { String varchartime = rs.getString(columnIndex); if (varchartime!=null) return new Date(Long.parseLong(varchartime)); else return null; } @Override public Date getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { String varchartime = cs.getString(columnIndex); if (varchartime!=null) return new Date(Long.parseLong(varchartime)); else return null; }}
- mybatis-config.xml配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <properties resource="jdbc.properties" /> <typeHandlers> <typeHandler handler="com.elements.typehandler.DataTimeTypeHandler" javaType="java.util.Date" jdbcType="VARCHAR"/> <package name="com.elements.user"/> </typeHandlers> <environments default="dev"> <environment id="dev"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <mapper class="com.elements.user.dao.UserMapper" /> </mappers></configuration>
- User类
package com.elements.user.model;import java.util.Date;public class User { private Integer userid; private String username; private String useremail; private Date createtime; private Date updatetime; public Integer getUserid() { return userid; } public void setUserid(Integer userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username == null ? null : username.trim(); } public String getUseremail() { return useremail; } public void setUseremail(String useremail) { this.useremail = useremail == null ? null : useremail.trim(); } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime ; } public Date getUpdatetime() { return updatetime; } public void setUpdatetime(Date updatetime) { this.updatetime = updatetime; } @Override public String toString() { return "User [userid=" + userid + ", username=" + username + ", useremail=" + useremail + ", createtime=" + createtime + ", updatetime=" + updatetime + "]"; }}
- UserMapper配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.elements.user.dao.UserMapper" > <resultMap id="BaseResultMap" type="com.elements.user.model.User" > <id column="userId" property="userid" jdbcType="INTEGER" /> <result column="UserName" property="username" jdbcType="VARCHAR" /> <result column="UserEmail" property="useremail" jdbcType="VARCHAR" /> <result column="createTime" property="createtime" jdbcType="VARCHAR" /> <result column="updateTime" property="updatetime" jdbcType="VARCHAR" /> </resultMap> <sql id="Base_Column_List" > userId, UserName, UserEmail, createTime, updateTime </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > select <include refid="Base_Column_List" /> from user where userId = #{userid,jdbcType=INTEGER} </select> <insert id="insert" parameterType="com.elements.user.model.User" > insert into user (userId, UserName, UserEmail, createTime, updateTime) values (#{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{useremail,jdbcType=VARCHAR}, #{createtime,jdbcType=VARCHAR}, #{updatetime,jdbcType=VARCHAR}) </insert></mapper>
注意:我们没有在mapper文件内显示的做类型转换 ,他已经默认把这两种类型(javaType=”java.util.Date” jdbcType=”VARCHAR” )的互转都调用我们的类型处理了
代码下载地址:http://pan.baidu.com/s/1eRDzY6m
1 0
- MyBatis 入门(五)--typeHandlers
- mybatis中的typeHandlers
- Mybatis -typeHandlers类处理器
- MyBatis--typeHandlers与Handling Enums
- mybatis 自定义类处理器typehandlers
- typehandlers
- mybatis中typeHandlers,ObjectFactory,plugins学习
- Mybatis 内置 Java 类型别名与 typeHandlers
- MyBatis:自定义类型转换器(typeHandlers)
- Mybatis配置之<typeHandlers>元素详述
- mybatis-全局配置文件-mybatis-config.xml- typeHandlers-6
- MyBatis(3.2.3)类型处理器TypeHandlers的简单示例
- Mybatis之XML配置文件之properties,settings,typeAliases,typeHandlers
- 【MyBatis学习16】自定义类型处理器typeHandlers介绍
- mybatis入门基础(五)----动态SQL
- mybatis入门基础(五)----动态SQL
- MyBatis入门(五)---延时加载、缓存
- mybatis入门基础(五)----动态SQL
- MBProgressHUD 提示自动换行
- VK Cup 2016 - Round 2 D. Little Artem and Random Variable(已知两个撒子掷出的点数较大为1,2,...,n的概率,较小为1,2,...,n概率)
- 主页面显示tabBar 进入的子页面不显示tabBar
- nodeJS简介及应用场景
- TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute
- MyBatis 入门(五)--typeHandlers
- 如何解决ChemDraw引起的系统崩溃
- 页面自动换行
- UVA 216 Getting in Line dfs
- hdu2546饭卡(01背包)
- 匿名函数应用-多线程测试代码
- 1002:方便记忆的电话号码 ACM/百炼
- Java学习日志1.4 Scanner 数据输入的三种方法
- tabbar Item图片原色显示以及标题字体大小颜色控制