在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 标签带来的空格、换行、回车问题可以通过使用 replace 函数或 trim 函数来解决。这两个函数都可以删除空格、换行、回车符号,从而生成正确的 SQL 语句。
通过网上找到order by排序可以有效解决这个问题,返回与查询时的产品id顺序一致。还有一点,List时有序的 这里先附带上这个sql语句(只能在数据库中成功) select prod_id, prod_name, price, `describe`, prod_date, ...
MyBatis的动态SQL是其一大特色,通过`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<foreach>`等标签,可以根据条件动态生成SQL语句。例如,如果需要根据某个条件过滤网站,可以这样编写: ```xml ...
5. `<foreach>`标签:用于遍历集合,构建IN或NOT IN子句,也可以用于动态生成ORDER BY或GROUP BY等。 在实际应用中,我们通常会在Mapper接口的XML配置文件中使用这些动态SQL元素。例如,可以创建一个根据多个条件...
例如,为了获取第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 > 100000 AND t....
ORDER BY send_time DESC LIMIT 1) ) </foreach> ``` 导致了`java.sql.SQLException: You can’t specify target table ‘chat_messages’ for update in FROM clause`的错误。为了解决这个问题,我们需要对查询...
在MyBatis中实现分页查询,通常有两种主要方法:一是使用MyBatis的`<foreach>`标签配合自定义参数;二是利用MyBatis提供的PageHelper插件。 1. **<foreach>标签分页**: 在MyBatis的映射文件中,我们可以利用`...
只有在某些特殊场景,比如构建动态 SQL(例如动态生成 ORDER BY 子句)时,才考虑使用 ${}。对于批量查询,可以使用 foreach 元素来处理数组或集合,例如: ```xml select * from country where id in <foreach ...
=''"> and purc_time=#{purc_time} order by #{purc_time} desc ``` 在上面的示例中,我们定义了一个SELECT语句,参数类型为Map。Map参数可以包含多个键值对,例如purc_id、prod_id、ch_id等。在SQL语句中,我们...
3. `ORDER BY`后的字段:应当在Java代码中预先定义允许的字段列表,仅允许用户传入字段索引,而不是直接使用用户输入的字段名。 实战思路: 1. 分析项目源码,通过IDE的搜索功能寻找可能存在注入的XML文件,重点...
在MyBatisPlus中,`or()`和`and()`...而在MyBatis的XML映射文件中,合理使用`<if>`和`<where>`标签可以有效地构建动态SQL,避免语法错误。在编写复杂查询时,理解这些细节能够帮助我们写出更加准确、高效的SQL语句。
ORDER BY`语句实现,确保新数据按指定规则插入到正确位置。 总结: 分页技术有助于提升Web应用的性能和用户体验,而批量插入查找则优化了数据处理的效率。在Mybatis框架中,我们可以方便地实现这些功能。`person1....
在MyBatis中,我们可以利用`<foreach>`标签和自定义分页插件实现分页。例如,创建一个动态SQL映射文件: ```xml SELECT * FROM table WHERE condition ORDER BY column != null"> LIMIT #{page.pageSize} ...
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语句并设置参数**:...
MyBatis可以通过动态SQL实现分页,同样有`LIMIT`和`OFFSET`方式,或者使用自定义插件如PageHelper,它提供了拦截器和分页对象,自动处理分页逻辑,使代码更简洁。 6. **Spring Data JPA分页**: Spring Data JPA...
2. MyBatis:MyBatis可以通过设置`@Param`注解的参数来实现分页查询,或者使用`<foreach>`标签配合动态SQL。例如: ```xml SELECT * FROM table LIMIT #{start}, #{limit} ``` 3. Spring Data JPA:Spring ...
这个查询是通过`<foreach>`标签动态构建`IN()`子句的,同时在`ORDER BY`子句中也使用了`FIELD()`函数。让我们详细解析一下这段代码: ```xml select style_num_id, style_id, style_title, style_pic FROM gb_...
对于大表的查询,特别是使用`ORDER BY`和`LIMIT`组合时,可以通过以下方法进行优化: - **建立索引**:为经常用于排序的字段建立索引。 - **限制查询范围**:尽可能减少查询的数据量,避免全表扫描。 - **使用覆盖...