【问题标题】:Mapping a nested Oracle CURSOR (ResultSet) with myBatis 3?使用 myBatis 3 映射嵌套的 Oracle CURSOR (ResultSet)?
【发布时间】:2017-06-20 08:26:00
【问题描述】:

社区您好,我在返回与过程关联的游标时遇到问题。

PROCEDURE USP_SEL_TAB_ANIOS(po_Lr_Recordset OUT SYS_REFCURSOR) IS
    BEGIN
         SELECT A.COD_ANIO , A.DESCRIPCION FROM BAH_MAE_ANIO A ;
    END ;

包包含两个类:

public class ItemBean implements Serializable {

    private Integer icodigo;
    private String descripcion;
    private String descripcionCorta;

    // get and set

}

-

public class ResultItemBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private List<ItemBean> itemBeans;

    // get and set

}

映射器

public interface ControlCalidadMapper {

    public abstract List<ItemBean> listarAnios(ItemBean item) throws Exception;

}

ControlCalibadMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pe.com.sigbah.mapper.gestion_almacenes.ControlCalidadMapper">

    <resultMap id="mapAnio" type="pe.com.sigbah.common.bean.ItemBean">
        <result property="descripcionCorta" column="COD_ANIO" />        
        <result property="descripcion" column="DESCRIPCION" />
    </resultMap>

    <parameterMap id="getAnio" type="pe.com.sigbah.common.bean.ResultItemBean">
<!--        <parameter property="start_from" jdbcType="INTEGER" mode="IN"  /> -->
        <parameter property="itemBeans" jdbcType="CURSOR" mode="OUT" resultMap="mapAnio" />
    </parameterMap>

    <select id="listarAnios" parameterMap="getAnio" statementType="CALLABLE">
        {call BAH_PKG_GENERAL.USP_SEL_TAB_ANIOS(?)}
    </select>

</mapper>

服务

@Service
public class ControlCalidadServiceImpl extends GenericServiceImpl implements ControlCalidadService {

    private static final long serialVersionUID = 1L;

    @Autowired
    private ControlCalidadMapper controlCalidadMapper;

    /* (non-Javadoc)
     * @see pe.com.sigbah.service.gestion_almacenes.ControlCalidadService#listarAnios(pe.com.sigbah.common.bean.ItemBean)
     */
    @Override
    public List<ItemBean> listarAnios(ItemBean item) throws Exception {
        return controlCalidadMapper.listarAnios(item);
    }

}

错误:

DEBUG: pe.com.sigbah.mapper.gestion_almacenes.ControlCalidadMapper.listarAnios - ooo Using Connection [jdbc:oracle:thin:@200.48.54.22:1521:INTEGRAL, UserName=SINPAD, Oracle JDBC driver]
DEBUG: pe.com.sigbah.mapper.gestion_almacenes.ControlCalidadMapper.listarAnios - ==>  Preparing: {call BAH_PKG_GENERAL.USP_SEL_TAB_ANIOS(?)} 
DEBUG: pe.com.sigbah.mapper.gestion_almacenes.ControlCalidadMapper.listarAnios - ==> Parameters: 
ERROR: pe.com.sigbah.web.controller.gestion_almacenes.ControlCalidadController - nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'itemBeans' of 'class pe.com.sigbah.common.bean.ItemBean' with value '[ItemBean [icodigo=null, descripcion=Seleccione, descripcionCorta=%], ItemBean [icodigo=null, descripcion=Año del buen servicio al ciudadano, descripcionCorta=2017], ItemBean [icodigo=null, descripcion=null, descripcionCorta=2018], ItemBean [icodigo=null, descripcion=null, descripcionCorta=2019], ItemBean [icodigo=null, descripcion=null, descripcionCorta=2020]]' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'itemBeans' in 'class pe.com.sigbah.common.bean.ItemBean'
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'itemBeans' of 'class pe.com.sigbah.common.bean.ItemBean' with value '[ItemBean [icodigo=null, descripcion=Seleccione, descripcionCorta=%], ItemBean [icodigo=null, descripcion=Año del buen servicio al ciudadano, descripcionCorta=2017], ItemBean [icodigo=null, descripcion=null, descripcionCorta=2018], ItemBean [icodigo=null, descripcion=null, descripcionCorta=2019], ItemBean [icodigo=null, descripcion=null, descripcionCorta=2020]]' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'itemBeans' in 'class pe.com.sigbah.common.bean.ItemBean'

我希望你能帮助我使用映射器 我希望你能帮助我映射器 我希望你能帮助我使用映射器

【问题讨论】:

    标签: java oracle mybatis spring-mybatis


    【解决方案1】:

    您应该在 Mapper 中传递一个 ResultItemBean 对象,如下所示:

    public abstract List<ItemBean> listarAnios(ResultItemBean items) throws Exception;
    

    在您的 ControlCalibadMapper.xml 文件中,您将 parameterMap 定义为 pe.com.sigbah.common.bean.ResultItemBean 所以你应该将此对象作为参数传递。

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2018-09-15
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多