这几天在做一个项目,想到ssh的架构这么的啰嗦,就想到用springmvc+spring+mybatis来架构。想着框架都差不多思想,就是用法不一样,就没特别去学这些东西,直接随便看了看资料,再网上弄了个已经搭建了的现成的环境来做,还不错。
不过做总会遇到问题的,毕竟不熟悉。mybaits有个boollean类型的,要转成一个varchar的Y存在mysql中,在网上找了老半天,都没找到资料,有也是很杂,调理很乱,很无奈。突然想到mybatis有很多自带的typehandle,可以看源码来模仿者写一个,于是立即就下源码,看源码然后写了下面那个,经测试是可以用的,如果有什么不对的地方,欢迎指出
package com.lanton.handle;
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 xiaohua
*
*/
public class BooleanTypeHandler implements TypeHandler<Boolean> {
/**
* 通过rs返回结果
*/
public Boolean getResult(ResultSet rs, String name) throws SQLException {
String str = rs.getString(name);
Boolean rt = Boolean.FALSE;
if (str.equalsIgnoreCase("Y")){
rt = Boolean.TRUE;
}
return rt;
}
/**
* 通过CallableStatement 返回结果
*/
public Boolean getResult(CallableStatement statement, int index)
throws SQLException {
String str=statement.getString(index);
if ("Y".equalsIgnoreCase(str))
return true;
else
return false;
}
/**
* 设置字段
*/
public void setParameter(PreparedStatement pstatment, int index, Boolean bool,
JdbcType type) throws SQLException {
if(bool){
pstatment.setString(index, "Y");
}else{
pstatment.setString(index, "N");
}
}
/**
* 通过rs返回是不是Y,是Y则返回true
*/
public Boolean getResult(ResultSet rs, int index) throws SQLException {
String str=rs.getString(index);
if("Y".equalsIgnoreCase(str)){
return true;
}else{
return false;
}
}
}
有什么不对欢迎指正,当然我也看到了系统有个自带的Boolean转换器,但是我不知道怎么用,可能中间有差错咯,反正是没用出来,自己的boolean是按招上面的转的