Mybatis学习之自定义typehandler(四)

代码结构:


MyStringTypeHandler.java

package com.kinsey.woo.handler;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import org.apache.ibatis.type.TypeHandler;
import org.apache.log4j.Logger;

@MappedTypes({String.class})
@MappedJdbcTypes({JdbcType.VARCHAR})
public class MyStringTypeHandler implements TypeHandler<String>{
	
	
	private Logger log = Logger.getLogger(MyStringTypeHandler.class);

	@Override
	public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException{
		log.info("使用我的自定义setParameter");
		ps.setString(i, parameter);
	}
			 
	@Override
	public String getResult(ResultSet rs, String columnName) throws SQLException {
		log.info("使用我的自定义getResult(ResultSet rs, String columnName)");
		return rs.getString(columnName);
	}
	
	@Override
	public String getResult(ResultSet rs, int columnIndex) throws SQLException {
		log.info("使用我的自定义getResult(ResultSet rs, int columnIndex)");
		return rs.getString(columnIndex);
    }
			       
    @Override
    public String getResult(CallableStatement cs, int columnIndex) throws SQLException {
    	  log.info("使用我的自定义getResult(CallableStatement cs, int columnIndex)");
      return cs.getString(columnIndex);
    }

				
}

RoleMapper.java
package com.learn.chapter3.mapper;

import com.learn.chapter3.po.Role;

public interface RoleMapper {
	public Role getRole(long id);
}

RoleMapper.xml

<?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.learn.chapter3.mapper.RoleMapper">

 	<resultMap type="role" id="roleMap">
 		<id     column="id" property="id" javaType="long" jdbcType="BIGINT"></id>
 		<result column="role_name" property="roleName" javaType="String" jdbcType="VARCHAR"/>
 		<result column="note" property="note" typeHandler="com.kinsey.woo.handler.MyStringTypeHandler"/>
 	</resultMap>
 	
 	<!-- 查询 -->
 	<select id="getRole" parameterType="long" resultMap="roleMap">
 		select id, 
 		       role_name
 		       note 
 		   from t_role 
 		   where id = #{id} 
 	</select>
 	
 	
 
 </mapper>

Role.java

package com.learn.chapter3.po;

import org.apache.ibatis.type.Alias;

@Alias("role")
public class Role {
	private Long id;
	private String roleName;
	private String note;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getRoleName() {
		return roleName;
	}
	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}
	public String getNote() {
		return note;
	}
	public void setNote(String note) {
		this.note = note;
	}
	
	
	
}

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>
	<!-- 定义别名 -->	
	<typeAliases>
		<package name="com.learn.chapter3.po"/>
	</typeAliases>
	
	<!-- 定义typeHandler -->
	<typeHandlers>
		<package name="com.kinsey.woo.handler.MyStringTypeHandler"/>
	</typeHandlers>
	
	<!-- 定义数据库信息,默认使用development数据库构建环境 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC">
				<property name="autoCommit" value="false"/>
			</transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
				<property name="username" value="root"/>
				<property name="password" value="123456"/>
			</dataSource>
		</environment>
	</environments>
	
	
	<!-- 定义映射器 -->
	<mappers>
		<mapper resource="com/learn/chapter3/mapper/RoleMapper.xml" />
	</mappers>

</configuration>

结果:







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值