mybitis下choose..when. otherwise条件不起作用
我的代码如下:
<select id="findList" resultType="TyArticle">
SELECT
<include refid="tyArticleColumns"/>
FROM ty_article a
<include refid="tyArticleJoins"/>
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
<if test="enVersion != null and enVersion != ''">
AND a.en_version = #{enVersion}
</if>
<if test="category != null and category != ''">
AND a.category = #{category}
</if>
<if test="top != null and top != ''">
AND a.top = #{top}
</if>
<if test="title != null and title != ''">
AND a.title LIKE
<if test="dbName == 'oracle'">'%'||#{title}||'%'</if>
<if test="dbName == 'mssql'">'%'+#{title}+'%'</if>
<if test="dbName == 'mysql'">concat('%',#{title},'%')</if>
</if>
</where>
<choose>
<when test="enVersion != null and enVersion =='0'">
order by a.weight desc ,str_to_date(a.publish_date, '%Y年%m月%d日') desc
</when>
<otherwise>
order by a.weight desc ,str_to_date(a.publish_date, '%d %M %Y') desc
</otherwise>
</choose>
</select>
choose...when...otherwise语法,when中的条件不起作用,不管条件是不是0,都取otherwise中的结果。
首先,仔细检查语法格式,感觉没有问题啊,怎么就不起作用呢?
其次,有检查调用sql时传递的参数enVersion也是String类型,所以书写也没问题啊。
最后,检查数据中enVersion的数据类型,发现是char(1),于是把代码条件换成这样,再测试,
<choose>
<when test="enVersion != null and enVersion == 0 ">
order by a.weight desc ,str_to_date(a.publish_date, '%Y年%m月%d日') desc
</when>
<otherwise>
order by a.weight desc ,str_to_date(a.publish_date, '%d %M %Y') desc
</otherwise>
</choose>
结果,成功了。原来数据再判断参数类型时,还跟参数在表中对应的数据类型有关。在参数比较的过程直接转成了int型,所以把
enVersion =='0', 改成 enVersion == 0,问题解决。 总结在此,期望对以后有所帮助。
mybitis下choose..when. otherwise条件不起作用的更多相关文章
- 需求:加一个下拉框选择条件改变饼图内外环 饼图:百度echarts提供
1.1:下拉框条件:后台取得ViewBag传给前台 MonitorController: public ActionResult BigData(): //下拉框筛选条件 var result = M ...
- python下使用sort()函数对目录下文件名进行多条件排序
目录 1.基础函数 2.例子解析 参考 1.基础函数 a.sort()函数 sort()函数的作用是对列表内容进行正向排序,直接在原列表进行修改,返回的是修改后的列表. lists =[1, 5, 1 ...
- MyBatis中<if test=" ">标签条件不起作用
问题产生? 今天在做Excel导出的时候,有个判断一个状态的字段,我的这个字段是int类型的,还有两个时间类型,我在判断的时候给的是Long类型的. 在测试的时候发现,不管怎么样都不执行if条件里面的 ...
- openwrt源码下的feeds.conf.default有何作用?
答: 可以往openwrt下添加一些最新的软件包,这样make menuconfig后就可以发现很多软件包了. 该文件中的内容格式如下例: src-git packages https://git.l ...
- Tomcat下webapps夹中root文件夹作用及如何发布项目至root文件夹中
转载请注明出处: tomcat的root文件夹下面默认是tomcat的管理程序,但是如果你把自己的web项目发布到root下面的话,你可以不通过项目名直接访问你的项目,比如,你见了一个名为Test的项 ...
- (转)Unity Assets目录下的特殊文件夹名称(作用和是否会被打包到build中)
原文:http://wiki.unity3d.com/index.php/Special_Folder_Names_in_your_Assets_Folder 1.隐藏文件夹以.开头的文件夹会被Uni ...
- JSTL判断list的size()大小,以及choose(相当于if else作用)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ tag ...
- 请介绍下 adb、ddms、aapt 的作用
adb 是 Android Debug Bridge ,Android 调试桥的意思 ddms 是 Dalvik Debug Monitor Service,dalvik 调试监视服务. aapt 即 ...
- Div内有ul li元素,Div设置高度100%,谷歌IE下li过多会显示滚动条,而火狐下就会滚动条就不起作用,li会撑大Div
产品上也许是用了过多iframe问题,自己做了demo没有这种情况 解决办法: 设置Div的display样式为-moz-inline-grid -moz-代表火狐私有属性,使用自己的div样式就可以 ...
随机推荐
- iOS-Reactive Cocoa的常见用法
今天是周末,临近年底,工作上遇到不可抗力,会有点一些变动!这多少会让人有一点静不下来,但需克制,Reactive Cocoa是今天的主角! 废话不多说,今天聊聊Reactive Cocoa的常见使用! ...
- 如何将自己在github写的android library开源,让大家依赖使用
编写library并上传至github后,让别人可以通过gradle的方式添加依赖 http://www.jianshu.com/p/9aedfd749cec
- 五月天的线上演唱会你看了吗?用Python分析网友对这场线上演唱会的看法
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 豆瓣9.4分!这场线上演唱会到底多好看? 首先让我 ...
- Vue中解决新脚手架3创建项目的移动端双击屏幕放大,双手拉动放大的方法
替换新版vue-cli创建项目的public>index.html <!DOCTYPE html> <html lang="en"> <head ...
- SpringCloud之Security
Spring Security是Spring提供的一个安全框架,提供认证和授权功能,最主要的是它提供了简单的使用方式,同时又有很高的灵活性,简单,灵活,强大. 我个人博客系统采用的权限框架就是Spri ...
- TCP最简单的服务程序
#include <time.h>#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#in ...
- javascript 面向对象学习(二)——原型与继承
什么是原型? 首先我们创建一个简单的空对象,再把它打印出来 var example = {} console.log(example) 结果如下: { __proto__: { constructor ...
- electron-vue报错:Webpack ReferenceError: process is not defined
electron-vue报错:Webpack ReferenceError: process is not defined 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总 ...
- Jupyter notebook中的Cell and Line Magics
参考资料: https://www.jianshu.com/p/81ada9234788 https://my.oschina.net/u/2306127/blog/832510 首先,Cell an ...
- SpringBoot整合Hibernate Validator实现参数验证功能
在前后端分离的开发模式中,后端对前端传入的参数的校验成了必不可少的一个环节.但是在多参数的情况下,在controller层加上参数验证,会显得特别臃肿,并且会有许多的重复代码.这里可以引用Hibern ...