码迷,mamicode.com
首页 > 编程语言 > 详细

MyBatis排序无效的坑_orderByXLimit

时间:2018-09-11 19:35:58      阅读:386      评论:0      收藏:0      [点我收藏+]

标签:语句   发送数据   released   直接   sql   包括   res   list   release   

情景:将数据库里边的“新闻资讯”信息按照特定字段的升序/降序进行分页显示。

     前端发送数据:newType(新闻类型,包括公司动态、行业资讯等类型)、orderBy(指定按照哪一个字段进行排序)、orderType(指定按照哪一种排序顺序进行排序,包括升序、降序)、start(开始查询的                                    记录位置)、pageSize(本次查询的记录条数)。

     MyBatis语句:

    <select id="newsList" parameterType="NewsQuery" resultType="QueryNews">
      SELECT * FROM t_newdb   

                     <where>  

                             releasedate is not null 
        <include refid="query_list"/>
      </where>

              </select>

    

    <sql id="query_list">
      <if test="newType != null and newType != ‘‘">
        and newType = #{newType}
      </if>
      <if test="orderBy != ‘‘ and orderBy != null">
        order by #{orderBy}
      </if>
      <if test="orderType != ‘‘ and orderType != null">
        ${orderType}
      </if>
      <if test="start != null and pageSize != null">
        limit #{start}, #{pageSize}
      </if>
    </sql>

   问题:不论前端给orderType传ASC还是DESC,所得到的结果都是按照ASC排序。。。

          日志打印语句:

                 传DESC时 :Preparing: SELECT * FROM t_newdb where releasedate is not null and newType = ? order by ? DESC limit ?, ?

                 传ASC时:   Preparing: SELECT * FROM t_newdb where releasedate is not null and newType = ? order by ? ASC limit ?, ? 

   将对应语句复制到Navicat执行,结果输出正确。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

最后,我将orderBy直接写死为数据库中一个字段,排序方式成功起作用。。。。。

个人估计:难道order by 后面直接写两个变量就会使后面一个变量失效?

本人页在网上找了相关帖子,然而并没有找到确切的说法。。。。。

贴出问题,若有大佬路过,也请顺手指点一二。

最后说句:博客园码代码真的很伤。。。

MyBatis排序无效的坑_orderByXLimit

标签:语句   发送数据   released   直接   sql   包括   res   list   release   

原文地址:https://www.cnblogs.com/-t9x4d/p/9629586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!