自己的List的TypeHandler案例

package cn.***.api.mappers.handler;

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import org.apache.ibatis.type.BaseTypeHandler;

import org.apache.ibatis.type.JdbcType;

import cn.***.api.model.WechatTemplate;

import oracle.jdbc.OracleConnection;

import oracle.sql.ARRAY;

import oracle.sql.ArrayDescriptor;

import oracle.sql.STRUCT;

import oracle.sql.StructDescriptor;

public class WechatTemplateArrayTypeHandler extends BaseTypeHandler {

private final StringORA_OBJ_TYP="TYP_WECHAT_TEMPLATE";

private final String ORA_TAB_TYP="TAB_WECHAT_TEMPLATE";

@Override

public void setNonNullParameter(PreparedStatement ps,int i, Object o, JdbcType jdbcType) throws SQLException {

Connectionconn=null;

try{

if(null!=o) {

@SuppressWarnings("unchecked")

List list= (ArrayList)o;

conn=ps.getConnection();

if(conn.isWrapperFor(OracleConnection.class)) {

conn=conn.unwrap(OracleConnection.class);

ARRAYarray= getArray(conn,ORA_OBJ_TYP,ORA_TAB_TYP,list);

ps.setArray(i,array);

}

}

}catch(ClassNotFoundException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}

}

@Override

public Object

getNullableResult(ResultSet rs, String columnName)throwsSQLException {

return null;

}

@Override

public Object getNullableResult(ResultSet rs,int columnIndex)throws SQLException {

return null;

}

@Override

public Object getNullableResult(CallableStatement cs,int columnIndex)throws SQLException {

retur nnull;

}

private ARRAY getArray(Connection con, String OracleObj, String Oraclelist, List listData)

throws Exception{

ARRAY array=null;

ArrayDescriptor desc= ArrayDescriptor.createDescriptor(Oraclelist,con);

STRUCT[] structs=new STRUCT[listData.size()];

if(list Data!=null&&listData.size() > 0) {

StructDescriptor structdesc=new StructDescriptor(OracleObj,con);

for(int i= 0;i < listData.size(); i++) {

Object[]result= {listData.get(i).getId(),listData.get(i).getTemplateId(),

listData.get(i).getTitle(),listData.get(i).getPrimaryIndustry(),

listData.get(i).getDeputyIndustry(),listData.get(i).getParamNumber(),

listData.get(i).getContent(),listData.get(i).getExample(),listData.get(i).getStatus() };

structs[i] =newSTRUCT(structdesc,con,result);

}

array=new ARRAY(desc,con,structs);

}else{

array=new ARRAY(desc,con,structs);

}

return array;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本节介绍Statement接口及其子类PreparedStatement和CallableStatement。 它...
    zlb阅读 1,208评论 0 0
  • 背景: 阅读新闻 12C CDB模式下RMAN备份与恢复 [日期:2016-11-29] 来源:Linux社区 作...
    阳屯okyepd阅读 3,655评论 0 7
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,830评论 18 399
  • 在我六七岁的时候,我向家里要了两块钱买了一本盗版的新华字典。 那时只是觉得汉字很有意思,有文化是一件很有面子的事情...
    书荒菌阅读 199评论 0 2
  • 小时候家里穷,三个月基本就要换一个地方住,以前我当这是炫耀的资本,逢人便去诉说自己曾在多少个房子里生活过。租了三四...
    君英阅读 438评论 3 2