没有合适的资源?快使用搜索试试~ 我知道了~
MyBatis自定义typeHandler的完整实例
5星 · 超过95%的资源 7 下载量 55 浏览量
2020-08-26
02:57:14
上传
评论
收藏 100KB PDF 举报
温馨提示
试读
3页
主要给大家介绍了关于MyBatis自定义typeHandler的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MyBatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
资源推荐
资源详情
资源评论
MyBatis自定义自定义typeHandler的完整实例的完整实例
主要给大家介绍了关于MyBatis自定义typeHandler的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MyBatis具有一定的参考学习价值,需要的朋友们
下面来一起学习学习吧
自定义自定义typeHandler
对于自定义typeHandler来说,需要在配置文件中注册typeHandlers 然后需要实现TypeHandler接口,
一个例子一个例子
首先编写调度的处理类
package com.ming.MyBatis;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class StringTypeHandler implements TypeHandler<String> {
private static Logger logger = LogManager.getLogger();
/**
* 对预编译的Sql语句进行设置的时候,
* @param ps
* @param i
* @param parameter
* @param jdbcType
* @throws SQLException
*/
@Override
public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
logger.info("使用TypeHandler");
// 设置预编译的sql对象,的string
ps.setString(i, parameter);
}
/**
* 获得结果的时候,获取到列名的时候,调度此方法
* @param rs
* @param columnName
* @return
* @throws SQLException
*/
@Override
public String getResult(ResultSet rs, String columnName) throws SQLException {
logger.info("使用自定义类型,结果获取列名字符串");
return rs.getString(columnName);
}
/**
* 获取结果集中的index
* @param rs
* @param columnIndex
* @return
* @throws SQLException
*/
@Override
public String getResult(ResultSet rs, int columnIndex) throws SQLException {
logger.info("在结果集中获取columnIndex");
return rs.getString(columnIndex);
}
/**
* 获取结果集中的下标对应的字符串
* @param cs
* @param columnIndex
* @return
* @throws SQLException
*/
@Override
public String getResult(CallableStatement cs, int columnIndex) throws SQLException {
logger.info("结果集中,下标获取到字符串");
return cs.getString(columnIndex);
}
}
再次编写配置文件
<typeHandlers>
<typeHandler jdbcType="VARCHAR" javaType="string" handler="com.ming.MyBatis.StringTypeHandler">
</typeHandlers>
传入数据库的为的VARCHAR类型,javaType类型为string类型,调度的类为com.ming.MyBatis.StringTypeHandler
修改映射文件,说明那些需要对结果进行修改
<?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.ming.MyBatis.POJO.RoleMapper">
<!-- id表示标签标识 type标识结果的返回类型,其中role为在配置文件中使用的别名 Role类 -->
<resultMap type="role" id="roleMap">
<!-- id为主键映射关系 其中数据库中的id为主键 -->
<id column="id" property="id" javaType="int" jdbcType="INTEGER"/>
<!-- result为其他基本数据类型和实体类之间的映射 映射关系为role_name 到 roleName之间的映射 数据类型为string到VARCHAR之间的映射关系 -->
<result column="role_name" property="roleName" javaType="string" jdbcType="VARCHAR"/>
<!-- 这里使用typeHandler表示遇到此处理集的时候,将会执行com.ming.MyBatis.StringTypeHandler -->
<result column="note" property="note" typeHandler="com.ming.MyBatis.StringTypeHandler"/>
</resultMap>
<!-- 书写SQL语句 定义使用resultMap为roleMap-->
<select id="getRole" parameterType="int" resultMap="roleMap">
SELECT id, role_name, note FROM t_role4 WHERE id = #{id}
</select>
</mapper>
其中传入的参数为int类型,由于结果中mybatis没有int类型,对应的是INTEGER类型,在mysql中两者类型相同,所以修改如上所示,表类型
weixin_38738977
- 粉丝: 6
- 资源: 971
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页