zoukankan      html  css  js  c++  java
  • sql 映射文件

                                                                                                                         积少成多 ----  仅以此致敬和我一样在慢慢前进的人儿

    问题: 如下面的代码中, 接口的方法中,传入两个参数 startIndex 和 pagasize, 直接编译文件,报错显示如下,说找不到

    org.apache.ibatis.binding.BindingException: Parameter 'pagesize' not found. Available parameters are [arg1, arg0, param1, param2]
        org.apache.ibatis.binding.MapperMethod$ParamMap.get(MapperMethod.java:202)
        org.apache.ibatis.scripting.xmltags.DynamicContext$ContextAccessor.getProperty(DynamicContext.java:115)
        org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2666)
        org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:114)
    // 数据库接口类
    public
    interface UserMapper { /*查询固定页码数*/ List<T_user> queryList( Integer startIndex, Integer pagesize); /*查询总数*/ Integer queryCount(); }

    // 对应的映射文件
    <select id = "queryList" resultType="T_user">
    select top ${pagesize}*
    from t_user
    where id not in
    (select top ${startIndex} id from t_user order by id)
    order by id
    </select>

    原因:映射文件, 如果传递只有一个参数的,它就会直接找到,但是如果传入两个参数的时候, 它就不知道

    该如何去找了, 即使表面上接口中参数名称和映射文件中的参数名字是一致的,但是他还是无法找到, 所以接口中你需要告诉映射文件,某个变量应该在这里找,然后取值

    解决方案: 给接口中的参数添加一个注释@param(value = "startIndex"), 如下面所示:

    // 数据库接口类
    public interface UserMapper {
        /*查询固定页码数*/
        List<T_user> queryList(@Param(value = "startIndex") Integer startIndex,
                               @Param(value = "pagesize") Integer pagesize);
    
        /*查询总数*/
        Integer queryCount();
    }
  • 相关阅读:
    linux面试常问命令
    图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导
    总结一些牛客网上 的算法岗面试题
    Pytorch-Tensor基本操作
    C++使用代码创建一个Windows桌面应用程序
    Windows中的消息与消息队列
    解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)
    Mybatis的一级缓存
    面试题:zookeeper实现分布式锁
    sublime text 文件默认打开格式
  • 原文地址:https://www.cnblogs.com/helloqiufei/p/11176539.html
Copyright © 2011-2022 走看看