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了。

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

  • 相关阅读:
    技术文章应该怎么写?
    后退时保存表单状态
    [原]长表头表格 竖直仅滚动内容区 水平滚动表头和内容区
    IE7不经提示关闭浏览器窗口
    meta 标记
    demo : 简单的 xslt 递归解析 xml 成 tree
    使用iframe和table模拟frameset的resize功能.html
    一个下划线(_)引发的"疑难杂症"
    几点小东西
    使用 ActiveReports 的 subReport 几点疑惑
  • 原文地址:https://www.cnblogs.com/liaoweipeng/p/5557592.html
Copyright © 2011-2022 走看看