`

ibatis中的order by 参数配置问题 .

 
阅读更多

昨天一个项目中在写ibatis中的sql语句时,order by #field#, 运行时总是报错,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别.
总结如下:
1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错..

2.$传入的数据直接生成在sql里,如$field$传入的是id,则sql语句生成是这样,order by id, 这就对了. 如:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    <isNotNull property="orderBy"><![CDATA[ order by $orderBy$ ]]>
        
<isNotNull property="descOrAsc"><![CDATA[ $descOrAsc$ ]]></isNotNull>
    
</isNotNull>

 

3.#方式能够很大程度防止sql注入.

4.$方式一般用于传入数据库对象.例如传入表名.

5.一般能用#的就别用$.

 

遇到的问题是order by后面的字段是动态的,有时候用字段1,有时候用字段2

sqlmap的配置为:

<isNotEmpty property="mytag1">
     obder by $mytag1$
</isNotEmpty>
<isNotEmpty property="mytag2">
     obder by $字段2$
</isNotEmpty>

为什么用$$来包含order by的参数,因为$$内的value不会被解释成'value',而是直接原样翻译。

总结:如果要考虑数据类型,用#;若是只考虑字符,则用$.

 

分享到:
评论

相关推荐

    oracle分页(ibatis-2.3.4.726.jar).rar

    6. **注意事项**:在Oracle中,`ROWNUM`在查询执行过程中被立即计算,因此不能与`ORDER BY`一起使用,否则可能会导致分页结果不准确。如果需要排序,可以使用`ROW_NUMBER()`函数结合`PARTITION BY`子句,但这通常...

    ibatis 配置文件详解

    通过上述解析,我们可以看出ibatis配置文件在ibatis框架中的核心地位,它不仅定义了数据源和事务管理策略,还指定了SQL映射文件的位置,使得ibatis能够根据配置正确地执行SQL语句,完成数据库操作。

    ibatis出错调试心得

    在使用iBatis进行数据库操作的过程中,可能会遇到各种各样的问题。这些问题往往由于iBatis错误信息的隐晦性而难以快速定位与解决。本文将根据所提供的标题、描述及部分内容,详细阐述在使用iBatis时可能遇到的一些...

    ibatis的dynamicSQL中,关于prepend的使用

    order by ACC_LAST_NAME ``` 这段代码展示了如何使用`&lt;dynamic&gt;`标签以及`prepend`属性。具体来说: - `&lt;dynamic prepend="where"&gt;`表示该动态SQL块将在满足条件时以`where`作为开头。 - `...

    Ibatis.net 分页

    利用`&lt;if&gt;`标签检查参数是否为空,然后在查询中加入ORDER BY和LIMIT子句。 ```xml SELECT * FROM Users WHERE 1=1 != null"&gt; ORDER BY ${sortField} != null and pageNum != null"&gt; LIMIT #{pageNum}, #{...

    spring mvc+ibatis+spring注解

    在Ibatis中,可以通过动态SQL来实现排序(ORDER BY)和分页(LIMIT 或 ROWNUM),而在控制器层,Spring MVC 可以处理请求参数,传递分页和排序条件到服务层,从而返回对应的查询结果。 "新增、修改、删除"是CRUD...

    ibatis 入门的例子

    例如,你可以根据条件选择性地加入WHERE子句,或者在ORDER BY子句中添加排序字段,大大提高了代码的可复用性和灵活性。 **2. 映射文件** 映射文件是Ibatis的核心配置,它定义了SQL语句、参数映射和结果映射。映射...

    iBATIS DataMapper1.6 中文翻译

    1. 解决了带有`group by`的`Select`语句中N+1问题,优化了查询性能,避免了多次数据库访问。 2. 引入了`&lt;include/&gt;`节点,支持SQL片段的重用,提高代码的可维护性和复用性。 3. 添加了对字典查询的支持,即`...

    Ibatis查询语句里,可以使用多表查询

    本文详细介绍了 iBatis 中多表查询的概念及其配置方法。通过上述示例,我们可以了解到如何在 iBatis 中编写复杂的 SQL 查询语句,并且如何通过定义合适的 `ResultMap` 来处理查询结果。这对于实际项目开发具有重要的...

    Ibatis调用Oracle存储过程返回自定义类型

    ORDER BY TRADE_NO ASC; V_WEALTH_DEAL_DETAIL CUR_WEALTH_DEAL_DETAIL%ROWTYPE; V_IDX INT := 0; BEGIN P_ARR_OUT := WEALTH_DEAL_DETAIL_ARRAY(); OPEN CUR_WEALTH_DEAL_DETAIL; LOOP FETCH CUR_WEALTH_...

    SQL&Ibatis学习 ppt

    理解子查询、联接(JOIN)、分组(GROUP BY)、排序(ORDER BY)和聚合函数(如COUNT、SUM、AVG、MAX、MIN)的使用。 3. 高级SQL:掌握复杂的查询技巧,如嵌套查询、集合操作(UNION、INTERSECT、EXCEPT)、自连接...

    ibatis 增删改查 存储过程及分页模拟

    ORDER BY ${sortColumn} ${sortOrder} LIMIT #{pageSize} OFFSET #{offset} ``` 最后,为了输出SQL日志,我们需要引入Log4j,并在`log4j.properties`或`log4j.xml`中配置SQL日志的级别。例如: ```properties...

    springboot mybatis mapper.xml 配置

    在Spring Boot集成MyBatis的过程中,`mapper.xml`配置文件起着至关重要的作用。它用于定义SQL语句,实现数据库的CRUD操作。本示例将深入探讨如何配置`mapper.xml`,并提供新增、修改、删除、查询及分页查询的实践...

    Jquery dataTable后台获取数据示例

    排序功能通过`columnDefs`和`order`参数配置。 3. **检索/过滤**: DataTables 的搜索功能允许用户在输入框中输入关键词,筛选出包含该关键词的行。这可以通过`search`属性实现,同时可以设置是否对所有列进行搜索或...

    mybatis入门

    - 在排序时使用`orderby`动态参数时,建议使用`$`而不是`#`,因为`#`会自动添加引号,可能导致SQL语法错误。 - 对于复杂的条件判断和动态SQL构建,MyBatis提供了丰富的标签如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`...

    Hibernate知识整理.doc

    - 分组与排序:支持 GROUP BY 和 ORDER BY 子句,进行聚合和排序操作。 - 联合查询:可以进行多个实体间的关联查询。 9- Hibernate 手动配置: 手动配置 Hibernate 包括设置配置文件、定义实体类、编写映射文件、...

Global site tag (gtag.js) - Google Analytics