最近遇到一个功能,就是需要根据前端传过来的字段进行数据排序,然后返回。
项目:springboot + mybatis
- 问题: dao 写好之后,在控制台打出的 sql 放在数据库界面工具查询时,完全没问题,程序中查回来的数据是无需状态。
select DATA_DATE,PROVINCE_NAME,CITY_NAME,AREA_NAME,CUR_FUD_AMOUNT_CUST_NUM
from <表名>
where
<choose>
<when test="levelFlag==0">
LEVEL_FLAG='1'
</when>
<when test="levelFlag==1">
LEVEL_FLAG='2'
and PROVINCE_CODE=#{provinceCode,jdbcType=VARCHAR}
</when>
<when test="levelFlag==2">
LEVEL_FLAG='3'
and CITY_CODE=#{cityCode,jdbcType=VARCHAR}
</when>
</choose>
and BRANCH_CODE = #{branch,jdbcType=VARCHAR}
order by #{orderField} DESC nulls last
- 解决:将
#{orderField}
替换成${orderField}
. - 原因:暂不清楚。。。研究中。。。
注意:想要动态的查询不同表,也需要使用
${table_name}
拼接,,直接使用#{table_name}
查询不成功。
-- 将传过来的表名也给返回去
select distinct DATA_DATE ,'${tableName}' table_name from ${tableName}