mybatis
2016-06-03 21:01
288 查看
背景:
今天遇到的问题是自己晚上在做毕业设计的时候使用到mybatis查询订单数量。存在2个情况,其中一种是管理员需要查询所有的订单总量,另外一种普通用户需要查询自己的订单总量。这2种情况的区别是第二种需要传入一可以识别是普通用户的唯一标识。毕业设计中使用的是userId。如果不经思考,这就需要写2个sql语句,一个是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 'classJava.lang.Integer。一对比发现参数正确、返回值正确。没撒错误呀。想一想还是没有发现问题,百度说去掉if,不过我要使用的就是if.后面查找资料说在DAO方法中定义的参数 与 实体中定义的属性不一致 导致的,dao层加@Param("userId")注解即可。最后方法变为如下:
再次运行程序正确。我一想我的类型一致,不可能说是不一致的问题。后面查到@Param("id") :全局限定别名,定义查询参数在sql语句中的位置不再是顺序下标0,1,2,3....的形式,而是对应名称,该名称就在这里定义。 因此可以找到userId了。
每天写一点,收获一点。经验不足,难免存在问题,欢迎指出指导。谢谢
今天遇到的问题是自己晚上在做毕业设计的时候使用到mybatis查询订单数量。存在2个情况,其中一种是管理员需要查询所有的订单总量,另外一种普通用户需要查询自己的订单总量。这2种情况的区别是第二种需要传入一可以识别是普通用户的唯一标识。毕业设计中使用的是userId。如果不经思考,这就需要写2个sql语句,一个是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 'classJava.lang.Integer。一对比发现参数正确、返回值正确。没撒错误呀。想一想还是没有发现问题,百度说去掉if,不过我要使用的就是if.后面查找资料说在DAO方法中定义的参数 与 实体中定义的属性不一致 导致的,dao层加@Param("userId")注解即可。最后方法变为如下:
再次运行程序正确。我一想我的类型一致,不可能说是不一致的问题。后面查到@Param("id") :全局限定别名,定义查询参数在sql语句中的位置不再是顺序下标0,1,2,3....的形式,而是对应名称,该名称就在这里定义。 因此可以找到userId了。
每天写一点,收获一点。经验不足,难免存在问题,欢迎指出指导。谢谢
相关文章推荐
- java练习——用循环输出等腰三角形
- 你的电脑上的应用需要使用以下windows功能(安装.net3.5)解决办法
- 最省时的护照办理
- 终于开通博客了,第一篇博客记录我的pat之旅!!!1006。换个格式输出整数,灰常简单。。
- freeMarker
- 如何在python环境下安装xgboost
- AJAX的数据类型
- LINUX C++ 线程池简单实现之双队列
- centos7上搭建hadoop(基础篇)
- [bzoj1015][JSOI2008]星球大战starwar
- 最长公共子序列&&最长公共子串---[动态规划]
- 安卓自定义Scrollview,实现卷帘成效
- 关于使用imageloader遇到的问题记录
- 0603 职业道德
- 6/3 sprint2 看板和燃尽图的更新
- java spring
- I/O多路转接 ---- poll
- 浏览器兼容element.dataset
- AOP TableView
- windows远程连接mysql 以及10060错误