• mybatis 异常处理:Invalid bound statement (not found)


    mybatis 的使用过程中提示错误: 
    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.msunsoft.mapper.HisLisReportMapper.getMaxMtcData

    含义:HisLisReportMapper的getMtcData方法没有找到或者没有绑定

    背景: 
    1.HisLisReportSyncWorker 控制类中

    String hospitalCode = ConfigRead.getValue("config.properties",
                        "HOSPITAL_CODE");
                List<Integer> updateIdList = new ArrayList<>();
                HisLisReportService hisLisReportService = (HisLisReportService) DataVisitorHolder
                        .getVisitorMap().get("hisLisReportService");
                HashMap<Object, Object> maxHisLisReportMap = hisLisReportService
                        .getMaxMtcData(hospitalCode);
                HashMap<Object, Object> map = hisLisReportService
                        .getMaxChangeVersion(hospitalCode);

    HisLisReportServiceImpl

    @Override
        @DataSource(name="blSql35")
        public HashMap<Object, Object> getMaxChangeVersion(String hospitalCode)
                throws Exception {
            // TODO Auto-generated method stub
            return hisLisReportMapper.getMaxChangeVersion(hospitalCode);
        }

    HisLisReportMapper 代码

    @Override
        public HashMap<Object, Object> getMaxChangeVersion(String hospitalCode)
                throws Exception ;

    HisLisReportService 代码

    @Override
        public HashMap<Object, Object> getMaxChangeVersion(String hospitalCode)
                throws Exception ;

    Mybatis.xml文件

     <select id="getMaxChangeVersion" parameterType="java.lang.String" resultType="java.util.HashMap">
            select
            max(sys_change_version) as MAXVERSION ,max(etl_id) as MAXID from
            ETL.DBO.ETL_CHARGE_RECORD where hospital_code=#{hospitalCode} and etl_table='lismain.lisdata.report_main'
        </select>
    
          <select id="getMaxMtcData" parameterType="java.lang.String" resultType="java.util.HashMap">
            select max(his_lis_report_id) as MAXID from his_lis_report where hospital_code=#{hospital_code}
         </select>

    错误处理流程: 
    我这里使用的SSM,spingMvc ,mybatis ,maven来构建项目,项目中使用了HisLisReportSyncWorker的控制类,HisLisReportServiceImpl代码实现,HisLisReportService接口类,HisLisReportMapper 的mapper类以及HisLisReportMapper.xml配置文件

    1.检查实现类中方法是否存在

    2。检查Service类的这个方法是否存在

    3.检查Mapper类的这个方法

    4.对应的mybatis 的配置文件是否存在,里面数据是否配置正确

    5.检查Mapper类是否被加载了

    这个错误主要是因为在config的配置文件中没有加载这个xml文件 

  • 相关阅读:
    php--------ThinkPHP3.2验证码使用
    mysql--------四种索引类型
    php--------递归函数
    php--------对象(object) 与 数组(array) 的转换
    ZH奶酪:Windows7+VirtualBox安装Ubuntu虚拟机问题总结
    第一次工作面试(蘑菇街)
    ZH奶酪:【阅读笔记】Deep Learning, NLP, and Representations
    web开发学习之旅
    隐马尔可夫模型实战
    ZH奶酪:Python中range和xrange的区别
  • 原文地址:https://www.cnblogs.com/firstdream/p/8094054.html
Copyright © 2020-2023  润新知