zoukankan      html  css  js  c++  java
  • 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文件 

  • 相关阅读:
    蓝桥杯训练 | 枚举,模拟与排序 | 04
    linux全套 | Linux模板机器安装 | 18
    linux全套 | Shell编程 | 16
    MySQL主从复制延迟解决方案
    MySQL异地备份方案
    MYSQL必知必会-where语句
    MySQL常见面试题-概念题
    入门-MySQL查询语句的45道练习
    20145234黄斐《信息安全系统设计基础》第0周学习总结
    OpenGL代码学习(2)
  • 原文地址:https://www.cnblogs.com/firstdream/p/8094054.html
Copyright © 2011-2022 走看看