zoukankan      html  css  js  c++  java
  • mybatis

    背景:

    今天遇到的问题是自己晚上在做毕业设计的时候使用到mybatis查询订单数量。存在2个情况,其中一种是管理员需要查询所有的订单总量,另外一种普通用户需要查询自己的订单总量。这2种情况的区别是第二种需要传入一可以识别是普通用户的唯一标识。毕业设计中使用的是userId。如果不经思考,这就需要写2sql语句,一个是select count(*) from order.这适用于管理员的,另外一个是select count(*) from order where userid=普通用户的唯一标识。2者有相同情况,我想用一个在Dao中用一个方法来实现。

    实现方式:

    Mybatis支持条件语句。刚好可以实现自己的需要。于是我写了一个

     

    xml写成如下:

     

    然后我跑起了工程,发现一跑就报错。错误是org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userId' in 'class Java.lang.Integer一对比发现参数正确、返回值正确。没撒错误呀。想一想还是没有发现问题,百度说去掉if,不过我要使用的就是if.后面查找资料说DAO方法中定义的参数 与 实体中定义的属性不一致 导致的,dao层加@Param("userId")注解即可。最后方法变为如下:

     

    再次运行程序正确。我一想我的类型一致,不可能说是不一致的问题。后面查到@Param("id") :全局限定别名,定义查询参数在sql语句中的位置不再是顺序下标0,1,2,3....的形式,而是对应名称,该名称就在这里定义。 因此可以找到userId了。

    每天写一点,收获一点。经验不足,难免存在问题,欢迎指出指导。谢谢

  • 相关阅读:
    AutoMapper用法
    这些基础却重要的面向对象概念,你还记得多少
    Ajax工作原理
    CSS中的绝对定位与相对定位
    NET中的Memcached.ClientLibrary使用详解
    经典Linq实例语句
    软件工程的意义
    C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
    属性与字段的区别
    SQL 递归树 子父节点相互查询
  • 原文地址:https://www.cnblogs.com/liaoweipeng/p/5557592.html
Copyright © 2011-2022 走看看