`
panhuan
  • 浏览: 20089 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mybatis使用foreach标签实现order by

阅读更多
    在mybatis select标签配置

<if test="orderBy!=null">
        <foreach collection="orderBy" item="order" open="order by " separator="," close="  ">
                #{order}
        </foreach>
        <if test="orderDesc!=null">#{orderDesc}</if>
        <if test="orderDesc==null">desc</if>
</if>

    在bean中声称

public String[] orderBy = new String[]{"SEQNO"};
public String orderDesc;
get...
set...

    mybatis生成sql和传递的参数

2011-12-31 10:40:02,312 DEBUG [java.sql.PreparedStatement] ==>  Executing: SELECT * from HR_ORGANIZATION where 1=1 AND UPORG = ? order by ? desc
2011-12-31 10:40:02,312 DEBUG [java.sql.PreparedStatement] ==> Parameters: yqdoqdf1325055012078(String), SEQNO(String)

但结果没有按照SEQNO排序

mybatis最终执行的sql是:SELECT * from HR_ORGANIZATION where 1=1 AND UPORG = 'yqdoqdf1325055012078' order by 'SEQNO' desc 而不是想要的SELECT * from HR_ORGANIZATION where 1=1 AND UPORG = 'yqdoqdf1325055012078' order by SEQNO desc
解决方案#
把mybatis的sql配置

<foreach collection="orderBy" item="order" open="order by " separator="," close="  ">
     <font color="red">#{order}</font>
</foreach>
<if test="orderDesc!=null">#{orderDesc}</if>

修改成

<foreach collection="orderBy" item="order" open="order by " separator="," close="  ">
        <font color="red">${order}</font>
</foreach>
<if test="orderDesc!=null">${orderDesc}</if>
分享到:
评论

相关推荐

    Mybatis中foreach标签带来的空格\换行\回车问题及解决方案

    "Mybatis foreach标签带来的空格、换行...Mybatis 中的 foreach 标签带来的空格、换行、回车问题可以通过使用 replace 函数或 trim 函数来解决。这两个函数都可以删除空格、换行、回车符号,从而生成正确的 SQL 语句。

    解决Mybatis中foreach标签带来的空格,换行,回车问题

    通过网上找到order by排序可以有效解决这个问题,返回与查询时的产品id顺序一致。还有一点,List时有序的 这里先附带上这个sql语句(只能在数据库中成功) select prod_id, prod_name, price, `describe`, prod_date, ...

    Java的MyBatis框架中实现多表连接查询和查询结果分页

    MyBatis的动态SQL是其一大特色,通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;foreach&gt;`等标签,可以根据条件动态生成SQL语句。例如,如果需要根据某个条件过滤网站,可以这样编写: ```xml ...

    SQL.rar_MyBatis3DynamicSql_dynamic mybatis_mybatis_mybatis Dyna

    5. `&lt;foreach&gt;`标签:用于遍历集合,构建IN或NOT IN子句,也可以用于动态生成ORDER BY或GROUP BY等。 在实际应用中,我们通常会在Mapper接口的XML配置文件中使用这些动态SQL元素。例如,可以创建一个根据多个条件...

    SpringMVC+Mybatis实现的SqlServer整合逆向工程Example类分页带条件数据查询

    例如,为了获取第100000到100050条记录,我们可以使用如下的SQL语句:\n\n```sql\nSELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ID ASC) AS rowid,* FROM M_CM_GpsNumMapping)t WHERE t.rowid &gt; 100000 AND t....

    mybatis 批量插入 嵌套select.pdf

    ORDER BY send_time DESC LIMIT 1) ) &lt;/foreach&gt; ``` 导致了`java.sql.SQLException: You can’t specify target table ‘chat_messages’ for update in FROM clause`的错误。为了解决这个问题,我们需要对查询...

    myBatis系列之八:分页查询

    在MyBatis中实现分页查询,通常有两种主要方法:一是使用MyBatis的`&lt;foreach&gt;`标签配合自定义参数;二是利用MyBatis提供的PageHelper插件。 1. **&lt;foreach&gt;标签分页**: 在MyBatis的映射文件中,我们可以利用`...

    MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)

    只有在某些特殊场景,比如构建动态 SQL(例如动态生成 ORDER BY 子句)时,才考虑使用 ${}。对于批量查询,可以使用 foreach 元素来处理数组或集合,例如: ```xml select * from country where id in &lt;foreach ...

    mybatis动态sql之Map参数的讲解

    =''"&gt; and purc_time=#{purc_time} order by #{purc_time} desc ``` 在上面的示例中,我们定义了一个SELECT语句,参数类型为Map。Map参数可以包含多个键值对,例如purc_id、prod_id、ch_id等。在SQL语句中,我们...

    详解Mybatis框架SQL防注入指南

    3. `ORDER BY`后的字段:应当在Java代码中预先定义允许的字段列表,仅允许用户传入字段索引,而不是直接使用用户输入的字段名。 实战思路: 1. 分析项目源码,通过IDE的搜索功能寻找可能存在注入的XML文件,重点...

    MyBatisPlus中使用or()和and()遇到的问题及细节处理

    在MyBatisPlus中,`or()`和`and()`...而在MyBatis的XML映射文件中,合理使用`&lt;if&gt;`和`&lt;where&gt;`标签可以有效地构建动态SQL,避免语法错误。在编写复杂查询时,理解这些细节能够帮助我们写出更加准确、高效的SQL语句。

    分页技术、批量插入查找

    ORDER BY`语句实现,确保新数据按指定规则插入到正确位置。 总结: 分页技术有助于提升Web应用的性能和用户体验,而批量插入查找则优化了数据处理的效率。在Mybatis框架中,我们可以方便地实现这些功能。`person1....

    好用的java分页,快来

    在MyBatis中,我们可以利用`&lt;foreach&gt;`标签和自定义分页插件实现分页。例如,创建一个动态SQL映射文件: ```xml SELECT * FROM table WHERE condition ORDER BY column != null"&gt; LIMIT #{page.pageSize} ...

    Java实现分页查询

    FROM (SELECT * FROM YOUR_TABLE ORDER BY YOUR_SORT_COLUMN) T ) WHERE RN BETWEEN (your_page_number - 1) * your_pagesize + 1 AND your_page_number * your_pagesize ``` 3. **预编译SQL语句并设置参数**:...

    java分页技术汇总

    MyBatis可以通过动态SQL实现分页,同样有`LIMIT`和`OFFSET`方式,或者使用自定义插件如PageHelper,它提供了拦截器和分页对象,自动处理分页逻辑,使代码更简洁。 6. **Spring Data JPA分页**: Spring Data JPA...

    java分页例子

    2. MyBatis:MyBatis可以通过设置`@Param`注解的参数来实现分页查询,或者使用`&lt;foreach&gt;`标签配合动态SQL。例如: ```xml SELECT * FROM table LIMIT #{start}, #{limit} ``` 3. Spring Data JPA:Spring ...

    详解 Mysql查询结果顺序按 in() 中ID 的顺序排列

    这个查询是通过`&lt;foreach&gt;`标签动态构建`IN()`子句的,同时在`ORDER BY`子句中也使用了`FIELD()`函数。让我们详细解析一下这段代码: ```xml select style_num_id, style_id, style_title, style_pic FROM gb_...

    01-JAVA岗位笔试题(A卷)附答案

    对于大表的查询,特别是使用`ORDER BY`和`LIMIT`组合时,可以通过以下方法进行优化: - **建立索引**:为经常用于排序的字段建立索引。 - **限制查询范围**:尽可能减少查询的数据量,避免全表扫描。 - **使用覆盖...

Global site tag (gtag.js) - Google Analytics