昨天一个项目中在写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',而是直接原样翻译。
总结:如果要考虑数据类型,用#;若是只考虑字符,则用$.
分享到:
相关推荐
6. **注意事项**:在Oracle中,`ROWNUM`在查询执行过程中被立即计算,因此不能与`ORDER BY`一起使用,否则可能会导致分页结果不准确。如果需要排序,可以使用`ROW_NUMBER()`函数结合`PARTITION BY`子句,但这通常...
通过上述解析,我们可以看出ibatis配置文件在ibatis框架中的核心地位,它不仅定义了数据源和事务管理策略,还指定了SQL映射文件的位置,使得ibatis能够根据配置正确地执行SQL语句,完成数据库操作。
在使用iBatis进行数据库操作的过程中,可能会遇到各种各样的问题。这些问题往往由于iBatis错误信息的隐晦性而难以快速定位与解决。本文将根据所提供的标题、描述及部分内容,详细阐述在使用iBatis时可能遇到的一些...
利用`<if>`标签检查参数是否为空,然后在查询中加入ORDER BY和LIMIT子句。 ```xml SELECT * FROM Users WHERE 1=1 != null"> ORDER BY ${sortField} != null and pageNum != null"> LIMIT #{pageNum}, #{...
order by ACC_LAST_NAME ``` 这段代码展示了如何使用`<dynamic>`标签以及`prepend`属性。具体来说: - `<dynamic prepend="where">`表示该动态SQL块将在满足条件时以`where`作为开头。 - `...
在Ibatis中,可以通过动态SQL来实现排序(ORDER BY)和分页(LIMIT 或 ROWNUM),而在控制器层,Spring MVC 可以处理请求参数,传递分页和排序条件到服务层,从而返回对应的查询结果。 "新增、修改、删除"是CRUD...
例如,你可以根据条件选择性地加入WHERE子句,或者在ORDER BY子句中添加排序字段,大大提高了代码的可复用性和灵活性。 **2. 映射文件** 映射文件是Ibatis的核心配置,它定义了SQL语句、参数映射和结果映射。映射...
1. 解决了带有`group by`的`Select`语句中N+1问题,优化了查询性能,避免了多次数据库访问。 2. 引入了`<include/>`节点,支持SQL片段的重用,提高代码的可维护性和复用性。 3. 添加了对字典查询的支持,即`...
本文详细介绍了 iBatis 中多表查询的概念及其配置方法。通过上述示例,我们可以了解到如何在 iBatis 中编写复杂的 SQL 查询语句,并且如何通过定义合适的 `ResultMap` 来处理查询结果。这对于实际项目开发具有重要的...
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_...
理解子查询、联接(JOIN)、分组(GROUP BY)、排序(ORDER BY)和聚合函数(如COUNT、SUM、AVG、MAX、MIN)的使用。 3. 高级SQL:掌握复杂的查询技巧,如嵌套查询、集合操作(UNION、INTERSECT、EXCEPT)、自连接...
ORDER BY ${sortColumn} ${sortOrder} LIMIT #{pageSize} OFFSET #{offset} ``` 最后,为了输出SQL日志,我们需要引入Log4j,并在`log4j.properties`或`log4j.xml`中配置SQL日志的级别。例如: ```properties...
在Spring Boot集成MyBatis的过程中,`mapper.xml`配置文件起着至关重要的作用。它用于定义SQL语句,实现数据库的CRUD操作。本示例将深入探讨如何配置`mapper.xml`,并提供新增、修改、删除、查询及分页查询的实践...
排序功能通过`columnDefs`和`order`参数配置。 3. **检索/过滤**: DataTables 的搜索功能允许用户在输入框中输入关键词,筛选出包含该关键词的行。这可以通过`search`属性实现,同时可以设置是否对所有列进行搜索或...
- 在排序时使用`orderby`动态参数时,建议使用`$`而不是`#`,因为`#`会自动添加引号,可能导致SQL语法错误。 - 对于复杂的条件判断和动态SQL构建,MyBatis提供了丰富的标签如`<if>`、`<choose>`、`<when>`、`...
- 分组与排序:支持 GROUP BY 和 ORDER BY 子句,进行聚合和排序操作。 - 联合查询:可以进行多个实体间的关联查询。 9- Hibernate 手动配置: 手动配置 Hibernate 包括设置配置文件、定义实体类、编写映射文件、...