繁体   English   中英

使用myBatis 3映射嵌套的Oracle CURSOR(ResultSet)?

[英]Mapping a nested Oracle CURSOR (ResultSet) with myBatis 3?

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

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;

}

ControlCalidadMapper.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'

我希望你能帮助我与映射器我希望你能帮助我与映射器我希望你能帮助我与映射器

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

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

在ControlCalidadMapper.xml文件中,将parameterMap定义为pe.com.sigbah.common.bean.ResultItemBean,以便将此对象作为参数传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM