关于mybatis中基本类型条件判断问题
零:sql动态语句中经常会有根据数据库某个字段状态进行判断的
如:status=0为未激活,status=1为激活的,那搜索未激活时:
<if test="model.activeStatus != null and model.activeStatus !='' or model.activeStatus==0">
and status=#{model.activeStatus}
</if>
但由于java的int类型默认值为0,导致0与null的判定无法识别。解决办法:
1、int修改为Integer类型
2、参数不要带activeStatus变量名,如:json的请求参数中不要带activeStatus参数名称。(未验证)
一:发现问题
sql动态语句中如果 parameterType="int"
<select id="sel_campusinfo" parameterType="int" resultType="Campusinfo">
select cmpid,cmpname from campusinfo where state!='d' and cmpid=#{cmpid}
</select>
是正确的,但是如果加上if test
<select id="sel_campusinfo" parameterType="int" resultType="Campusinfo">
select cmpid,cmpname from campusinfo where state!='d' and cmpid!=0
<if test="cmpid!=0">and cmpid=#{cmpid}</if>
</select>
There is no getter for property named 'cmpid' in 'class java.lang.Integer'
出错原因:Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取Integer.cmpid。Integer对象没有cmpid属性。如果不解析参数,mybatis自动识别传入的参数,不会报错。
二:解决办法
1.修改select语句
<select id="sel_campusinfo" parameterType="int" resultType="Campusinfo">
select cmpid,cmpname from campusinfo where state!='d' and cmpid!=0
<if test="_parameter!=0">and cmpid=#{_parameter}</if>
</select>
参数名全部改为_parameter。
2.不修改sql,只修改接口
接口类:
Campusinfo sel_campusinfo( int cmpid);
改为:
3.可以将参数包装在hashmap或者对象中作为参数
关于mybatis中基本类型条件判断问题的更多相关文章
- bash Shell 中如何实现条件判断之if判断
http://blog.51cto.com/lovelace/1211353 bash中如何实现条件判断?条件测试类型: 整数测试 字符测试 文件测试 一.条件测试的表达式: ...
- linux Shell中常用的条件判断
linux Shell中常用的条件判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d ...
- MyBatis从入门到精通(十四):在MyBatis中使用类型处理器
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解在MyBatis中如何 ...
- mybatis if else if 条件判断SQL片段表达式取值和拼接
前言 最近在开发项目的时候涉及到复杂的动态条件查询,但是mybaits本身不支持if elseif类似的判断但是我们可以间接通过 chose when otherwise 去实现其中choose为一个 ...
- HtmlWebpackPlugin用的html的ejs模板文件中如何使用条件判断
折腾: [已解决]给react-hot-boilerplate中的index.html换成用HtmlWebpackPlugin自动生成html 期间,已经有了思路了,但是不知道如何在ejs的html中 ...
- shell编程学习笔记(八):Shell中的if条件判断
编程语言中都有条件判断,shell编程也不例外,下面我们来看一下shell中应该怎么使用if条件判断 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts ...
- mybatis中xml字段空判断及模糊查询
由于业务特殊的查询需求,需要下面的这种查询,一直感觉模糊不清,本地测试一下顺便做个总结 贴一段xml代码,如下: <if test="receivedName != null and ...
- mybatis中的foreach条件参数过多时,#和$效率比较
在客户端查询都小于1秒. 测试: mybatis中in条件12.3万数据$ : 6051 ms# : 27045 ms 1.2万数据$ : 1154 ms# : 24387 ms 5 万数据$ : 2 ...
- shell编程学习笔记(九):Shell中的case条件判断
除了可以使用if条件判断,还可以使用case 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script08.sh 开始编写scrip ...
随机推荐
- Kubernetes Storage
参考文章: https://kubernetes.io/docs/concepts/storage/volumes/ https://www.cnblogs.com/styshoo/p/6731425 ...
- phpMyAdmin中config.inc.php设置密码和修改密码的方法
phpMyAdmin有3种授权模式: 1. cookie: 显示一个web登录页面,输入mysql的用户名和密码,然后进入管理界面. $cfg['Servers'][$i]['auth_type'] ...
- CentOS/Linux 卸载MATLAB
rm -rf /usr/local/MATLAB/R2012arm /usr/local/bin/matlab /usr/local/bin/mcc /usr/local/bin/mex /usr/l ...
- win 7 processing 编程环境搭建
1.下载processing安装包: 2.下载usb驱动: 3.安装processing; 4.安装驱动: 5.在processing中编写代码: // Visualizing the data fr ...
- 使用iView时报"Parsing error: x-invalid-end-tag"错误的解决方案
一. 问题日志 二. 问题原因iView将标签渲染为原生html标签时,由于这些标签是自闭合的,所以有end标签会报错. 三. 解决方案修改配置文件,忽略该项检查: 根目录下 - .eslintrc. ...
- jQuery计时器插件
/** * 定义一个jQuery计时插件,实现记录计时开始时间.结束时间,总共耗时的功能 * @param $ * * @author Ivan 2862099249@qq.com * @date 2 ...
- Ceilometer Polling Performance Improvement
Ceilometer的数据采集agent会定期对nova/keystone/neutron/cinder等服务调用其API的获取信息,默认是20秒一次, # Polling interval for ...
- 经典分水岭算法的 C++ 实现
这个程序是研一下学期的计算机视觉课程大作业,完成于 2013/06/16,是对 Soille 和 Vincent(1991)提出的模拟浸没的分水岭算法的实现,详见下面的报告. 源码托管在 Github ...
- 13-THREE.JS 点光源
<!DOCTYPE html> <html> <head> <title>Example 03.02 - point Light</title&g ...
- SpringBoot WebSocket实现
1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...