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
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>
结果:
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>
结果:
相关文章推荐
- mybatis typeHandler自定义类型转换器
- Mybatis实现自定义的类型转换器TypeHandler
- Mybatis实现自定义类型转换器TypeHandler的方法
- mybatis自定义typeHandler
- mybatis自定义typeHandler
- mybatis源码学习——Configuration类及其初始化过程、TypeHandler、TypeAlias
- mybatis实现自定义typeHandler
- mybatis自定义typeHandler
- mybatis自定义typeHandler
- mybatis自定义typeHandler
- Mybatis实战之自定义TypeHandler处理枚举
- mybatis-枚举类型的typeHandler&自定义枚举类型typeHandler
- Mybatis学习之自定义别名Typealiases(四)
- mybatis自定义typeHandler
- Mybatis源码学习之TypeHandler
- 【MyBatis学习16】自定义类型处理器typeHandlers介绍
- mybatis 自定义typehandler,转换特定字段
- Mybatis中的typehandler 自定义数据转换储存读取
- mybatis自定义typeHandler
- mybatis自定义typeHandler