• org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):


    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.dao.mapper.UserInfoMapper.countByExample
            at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:196)
            at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:44)
            at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)
            at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
            at com.sun.proxy.$Proxy93.countByExample(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
            at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java

    报错原因是Mapper.xml文件中没有id为countByExample的语句

    如果出现:

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    一般的原因是Mapper interfacexml文件的定义对应不上,需要检查包名namespace函数名称等能否对应上,需要比较细致的对比,
    我经常就是写错了一两个字母搞的很长时间找不到错误

    按以下步骤一一执行:

    1:检查xml文件所在的package名称是否和interface对应的package名称一一对应

    2:检查xml文件的namespace是否和xml文件的package名称一一对应

    3:检查函数名称能否对应上

    4:去掉xml文件中的中文注释

    5:随意在xml文件中加一个空格或者空行然后保存
    6: mapper.xml文件没有被扫描到

    一般来说到此就可以排除错误了

    http://blog.csdn.net/softwarehe/article/details/8889206

    mybatis Mapper插件中,updateByPrimaryKey 方法在使用时,入参必须包含id,
    实际使用的sql如下:

    2016-11-14 11:23:18.885 DEBUG 640 --- [ main] t.m.s.m.U.updateByPrimaryKey : ==> Preparing: UPDATE user_info SET username = ?,password = ?,usertype = ?,enabled = ?,qq = ?,email = ?,tel = ? WHERE Id = ?
    2016-11-14 11:23:18.915 DEBUG 640 --- [ main] t.m.s.m.U.updateByPrimaryKey : ==> Parameters: test1(String), 12345678(String), 1(String), null, null, null, null, null
    2016-11-14 11:23:18.924 DEBUG 640 --- [ main] t.m.s.m.U.updateByPrimaryKey : <== Updates: 0

    如果只想更新指定字段的值,可以使用api:   userInfoMapper.updateByPrimaryKeySelective

        /**
         * 根据主键更新属性不为null的值
         *
         * @param record
         * @return
         */
        @UpdateProvider(type = BaseUpdateProvider.class, method = "dynamicSQL")
        int updateByPrimaryKeySelective(T record);
  • 相关阅读:
    mongodb笔记一
    mysql的备份和恢复
    explain的type列
    Debian下apache2设置并发
    nginx基本调优
    c语言struct
    Centos 安装nginx + php + mysql
    Debian下系统启动时执行脚本
    centos5.5服务器基本篇
    分治法
  • 原文地址:https://www.cnblogs.com/softidea/p/6053980.html
Copyright © 2020-2023  润新知