TypeHandler,中文名字类型转换器,可以实现Java类型与jdbc类型的转换。mybatis使用prepareStatement来进行参数设置的时候,需要通过typeHandler将传入的java参数设置成合适的jdbc类型参数,这个过程实际上是通过调用PrepareStatement不同的set方法实现的。
同时,mybatis也内置了一些类型转换器。
Java类型 | jdbc类型 | Mybatis |
---|---|---|
boolean | bit、boolean | BooleanTypeHandler |
byte | TINYINT | ByteTypeHandler |
short | SMALLINT | ShortTypeHandler |
String | CHAR、VARCHAR | StringTypeHandler |
Integer | IntegerTypeHandler | |
long | LongTypeHandler | |
Float | FloatTypeHandler | |
double | DoubleTypeHandler |
除了上述的TypeHandler,Mybatis也可以自定义类型转换器。
自定义类型转换器需要执行以下操作:
batis.handler;import org.pe.BaseTypeHandler;
import org.pe.JdbcType;import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;public class DateTypeHandler extends BaseTypeHandler<Date> {//将java类型转换为数据库类型@Overridepublic void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {//获取毫秒数long time = Time();//设置为毫秒数preparedStatement.setLong(i,time);}//将数据库类型转换为java类型@Overridepublic Date getNullableResult(ResultSet resultSet, String s) throws SQLException {long birthday = Long(s);Date date = new Date(birthday);return date;}//将数据库类型转换为java类型@Overridepublic Date getNullableResult(ResultSet resultSet, int i) throws SQLException {long birthday = Long(i);Date date = new Date(birthday);return date;}//将数据库类型转换为java类型@Overridepublic Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {long birthday = Long(i);Date date = new Date(birthday);return date;}
}
xml文件:
<!--自定义类型处理器-->
<typeHandlers><typeHandler handler=batis.handler.DateTypeHandler"/>
</typeHandlers>
本文发布于:2024-02-01 07:25:11,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170674351134871.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |