mybatis没有clob类型_mybatis将Oracle的Clob类型转成String的方法
默認情況下,mybatis將oracle的Clob類型查詢出來,結果是oracle.sql.CLOB@13cda7c9這樣的。
下面是將CLOB類型轉換成String的方法
首先,添加一個轉換的類,實現(xiàn)TypeHandler的接口package?xxx.xxx;
import?java.io.IOException;
import?java.io.Reader;
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;
public?class?OracleClobTypeHandlerCallback?implements?TypeHandler?{
public?Object?valueOf(String?param)?{
return?null;
}
@Override
public?Object?getResult(ResultSet?rs,?String?columnName)?throws?SQLException?{
java.sql.Clob?s?=?rs.getClob(columnName);
if?(rs.wasNull())?{
return?"";
}
else?{
String?clobStr?=?"";
Reader?inStream?=?s.getCharacterStream();
char[]?c?=?new?char[(int)?s.length()];
try?{
inStream.read(c);
clobStr?=?new?String(c);
inStream.close();
}
catch?(IOException?e)?{
e.printStackTrace();
}
return?clobStr;
}
}
@Override
public?Object?getResult(ResultSet?arg0,?int?arg1)?throws?SQLException?{
return?null;
}
@Override
public?Object?getResult(CallableStatement?arg0,?int?arg1)?throws?SQLException?{
return?null;
}
@Override
public?void?setParameter(PreparedStatement?arg0,?int?arg1,?Object?arg2,?JdbcType?arg3)?throws?SQLException?{
java.sql.Clob?clob?=?null;
try?{
if?(arg2?==?null)?{
arg2?=?"";
}
clob?=?new?javax.sql.rowset.serial.SerialClob(arg2.toString().toCharArray());
}
catch?(Exception?e)?{
}
arg0.setClob(arg1,?clob);
}
}
然后,在mybatis的config文件中添加typeHandler
這樣,在遇到Clob類型的時候,就能轉換成String了。
另外,如果mapper中返回類型設置的是HashMap,那么,就需要返回為List>
然后,遍歷這個集合,將java.sql.Clob這個類型手動轉換為String,轉換方式為public?static?String?Clob2String(java.sql.Clob?clob)?{
String?clobStr?=?"";
try?{
Reader?inStream?=?clob.getCharacterStream();
char[]?c?=?new?char[(int)?clob.length()];
inStream.read(c);
clobStr?=?new?String(c);
inStream.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}?catch?(SQLException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
return?clobStr;
}
總結
以上是生活随笔為你收集整理的mybatis没有clob类型_mybatis将Oracle的Clob类型转成String的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设置苹果手机自带邮箱
- 下一篇: dlna和miracast可以共存吗_A