TypeHandler 의 간단 한 인 스 턴 스
9910 단어 TypeHandler
TypeHandler 는 MyBatis config 파일 에서 선택 할 수 있 는 설정 옵션 으로 실체 속성 유형 과 데이터베이스 열 형식의 변환 과정 에 간섭 할 수 있 으 며, 이 과정 에서 필요 한 동작 을 추가 할 수 있 습 니 다. 1. 사용자 정의 type: Handler 류 는 type: Handler 인 터 페 이 스 를 실현 하고 인터페이스 방법 을 실현 해 야 합 니 다. 2. 프로필 에 < typeHandler > 를 추가 합 니 다. 3. 맵 파일 에 있 는 인자 와 결과 에 유형 설명 을 추가 합 니 다. 자바 Type 과 jdbc Type. 간단 한 실례 는 다음 과 같다. 유형 제어 클래스
package com.chl.mybatis.typehandler;
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.TypeHandler;
/**
* @author chl
*
* TypeHandler
* : , mapper.xml 。
*/
public class StringVarcharTypeHandler implements TypeHandler{
@Override
public Object getResult(ResultSet rs, String columnName) throws SQLException {
// TODO Auto-generated method stub
System.out.println("getResult(rs,columnName)");
return rs.getString(columnName);
}
@Override
public Object getResult(CallableStatement arg0, int arg1)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setParameter(PreparedStatement ps, int paraIndex, Object object,
JdbcType jt) throws SQLException {
// TODO Auto-generated method stub
System.out.println("setParameter()");
ps.setString(paraIndex, (String)object);
}
}
프로필 중:
<?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>
<!-- -->
<properties resource="config.properties"></properties>
<!-- vo -->
<typeAliases>
<typeAlias alias="User" type="com.mybatis.test.vo.User" />
</typeAliases>
<!-- --> <typeHandlers> <typeHandler javaType="String" jdbcType="VARCHAR" handler="com.chl.mybatis.typehandler.StringVarcharTypeHandler" /> </typeHandlers> <!-- end define -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mybatis/test/maps/UserMapper.xml" />
</mappers>
</configuration>
이 제어 클래스 의 위 치 를 주의 하 십시오. 탭 의 순 서 는 대체로 다음 과 같 습 니 다.
"(properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,plugins,environments,mappers)".
비슷 한 오 류 를 보고 하면 라벨 위치 가 잘못 놓 여 있 기 때문이다.
맵 파일 에 형식 설명 추가:
<insert id="insertUser2" parameterType="User">
insert into user
(username, password)
values
(#{username, javaType=String, jdbcType=VARCHAR},
#{password, javaType=String, jdbcType=VARCHAR});
</insert>
<!-- , javaType jdbcType , TypeHandler -->
<resultMap id="userMap" type="User">
<result property="username" column="username" javaType="String" jdbcType="VARCHAR"></result>
<result property="password" column="password" javaType="String" jdbcType="VARCHAR"></result>
</resultMap>