您的位置:首页 > 其它

Mybatis学习之自定义typehandler(四)

2017-04-07 01:22 567 查看
代码结构:



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>


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: