81,091
社区成员
发帖
与我相关
我的任务
分享
package cn.com.ultrapower.zcwg.ext.mybatis.typehandler;
import java.io.StringReader;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.StringTypeHandler;
/**
* For using LargeStringTypeHandler, you must add a line in SqlMapConfig.xml as following:<br/>
* <typeHandler javaType="java.lang.String" callback="com.sinosoft.component.ibatis.typehandler.LargeStringTypeHandler"/>
* @author airlink
* @see http://blog.csdn.net/ruanee/archive/2006/03/24/637213.aspx
* @see http://www.tomjamescn.cn/?p=63
*/
@MappedJdbcTypes(JdbcType.VARCHAR)
public class LargeStringTypeHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i,
String parameter, JdbcType jdbcType) throws SQLException {
StringTypeHandler sth=new StringTypeHandler();
if (parameter.length() < 667) {
//assume that all characters are chinese characters.
sth.setNonNullParameter(ps, i, parameter, jdbcType);
}else{
//use setCharacterStream can insert more characters.
ps.setCharacterStream(i, new StringReader(parameter), parameter.length());
}
}
@Override
public String getNullableResult(ResultSet rs, String columnName)
throws SQLException {
return rs.getString(columnName);
}
@Override
public String getNullableResult(CallableStatement cs, int columnIndex)
throws SQLException {
return cs.getString(columnIndex);
}
}
<?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>
<settings>
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<typeHandlers>
<typeHandler javaType="String" jdbcType="VARCHAR"
handler="cn.com.ultrapower.zcwg.ext.mybatis.typehandler.LargeStringTypeHandler"/>
</typeHandlers>
</configuration>
<parameterMap type="cn.com.ultrapower.zcwg.im.bean.AnnouncementBean"
id="bean">
<parameter property="msg" typeHandler="cn.com.ultrapower.zcwg.ext.mybatis.typehandler.LargeStringTypeHandler"/>
<parameter property="id" jdbcType="INTEGER" />
<parameter property="title" jdbcType="VARCHAR" />
<parameter property="create_date" jdbcType="DATE" />
<parameter property="account" jdbcType="VARCHAR" />
<parameter property="status" jdbcType="INTEGER" />
<parameter property="rowNo" jdbcType="VARCHAR" javaType="String" />
<parameter property="name" jdbcType="VARCHAR" javaType="String" />
<parameter property="count" jdbcType="VARCHAR" javaType="String" />
</parameterMap>
<insert id="addAnn" parameterType="cn.com.ultrapower.zcwg.im.bean.AnnouncementBean">
<selectKey resultType="java.lang.Integer" order="BEFORE"
keyProperty="id">
SELECT S_ANNOUNCEMENT.nextval AS id FROM DUAL
</selectKey>
insert into announcement (id,title,account,status,msg,create_date)
values(#{id},#{title},#{account},to_number(#{status}),#{msg},to_date(#{create_date},'yyyy-MM-dd HH24:mi:ss'))
</insert>