关于ibatis动态sql的prepend的属性,我们需要理解一下几点

select * from student
<dynamic prepend="where">
 <isNotNull property="id" prepend="and">
  id = #id#
 </isNotNull>
 <isNotNull property="name" prepend="and">
  name like '%$name$%'
 </isNotNull>
</dynamic>

要点一  prepend是添加在动态语句的前面

and是添加在id = #id#,同样and是添加在name like '%$name$%'前面

要点二  dynamic中首个prepend被忽略

按照要点一说法,语句select * from studnet and id = #id#就会出现问题了。其实若<isNotNull>写在<dynamic>里,且包含prepend,第一个isNotNull的prepend会被忽略。有的人会说,id不加prepend,变成<isNotNull property="id">?那就错了,因为name前面的and会被过滤掉了,会出错。

要点三  明白了要点二,可以理解拼接语句中遇到的一些错误问题

本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1021949如需转载请自行联系原作者


woshixuye111

ibatis动态语句中的prepend相关推荐

  1. ibatis 动态语句拼写心得

    ibatis 动态语句拼写心得 文章分类:Java编程 项目中用到了ibatis.看了很多篇在XML 里动态编写sql 的文章! 我突然有了疑问,在一个statement 中可以包含多个 dynami ...

  2. oracle动态语句打开游标,Oracle动态语句中返回游标

    本来以为动态语句只能返回类似int.varchar2这种类型,今天测试了下,发现还支持游标,现测试如下: 创建返回游标的函数: create or replace function testf ret ...

  3. ibatis mysql iterate_ibatis中动态语句的iterate标签

    例子一 查询条件dto public class queryCondition { private String[] stuIds; private String name; } 查询sqlMap s ...

  4. oracle不使用游标,oracle – 为什么我们不能在动态SQL语句中使用强引用游标?

    这是一个带有强类型引用游标的过程: SQL> create or replace procedure p1 is 2 type dept_rc is ref cursor return dept ...

  5. oracle 执行带参数的sql语句_当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现?...

    当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现? 描述详细一点就是:在要执行的SQL语句中所用到(: parameter)这种参数的个数,因具体条件不同,而 ...

  6. finereport报表设计中模板数据集的sql语句中if的用法_报表工具中动态参数的灵活运用...

    报表开发过程中,有的时候我们会觉得普通参数很难满足一些业务需求,比如第二个数据集要引用第一个数据集的结果进行计算,动态控制 SQL 的过滤条件,动态列等,如果您遇到了这种情况,可以尝试使用动态参数即 ...

  7. sqlserver使用sp_executesql执行动态语句,并在存储过程中获取执行后的结果

    declare @SqlStr nvarchar(max)--判断语句 declare @AlarmType varchar(10)--告警类别 max:大于范围值,min:小于范围值 declare ...

  8. HTML调用Java函数或语句,在动态THML语句中调用JS函数传递带空格参数的问题

    刚刚遇到一个问题,调用js函数的参数里带空格,造成调用失败的问题. 部分代码如下: html+=" "; //name中如果有空格就是调用失败 html+=" " ...

  9. 数据库SQL:在插入语句中使用查询查询语句(动态获取数据库自增字段的值)

    在插入语句中使用查询: INSERT into 表名(获取自增id1 ,获取自增id2 ,字段3 ,...... ,字段N ) SELECT 表别名1.id, 表别名2.id ,"字段3的值 ...

最新文章

  1. cassandra框架模型之一——Colum排序,分区策略 Token,Partitioner bloom-filter,HASH
  2. Windows内核加载器概念学习
  3. 版本控制集中式与分布式的区别
  4. P1101 单词方阵
  5. 正则表达式-匹配数字范围
  6. HBase—基础介绍
  7. 关于C++/C中符号
  8. 编译时错误之 error C2338: tuple_element index out of bounds
  9. 最大子段和问题Java实现
  10. uushare新增类似美味(del.icio.us)的书签服务
  11. 18--两数之和 II - 输入有序数组
  12. html5音乐播放器设计论文,基于微信小程序的音乐播放器设计和毕业论文
  13. 引用类型赋值“.NET技术”为null与加速垃圾回收
  14. 神奇的 SQL 之 ICP → 索引条件下推
  15. 多分类问题的另一种处理策略——softmax回归
  16. CMD 命令 文件操作
  17. 中国公用计算机互联网网络简称为什么,中国公用计算机互联网国际联网管理办法...
  18. 学习编程语言有哪些基本步骤呢?
  19. 从小白开始教你怎样在Eclipse中使用Git(番外) - 各种图标的含义
  20. java实现图片压缩

热门文章

  1. 在Ubuntu中打开pycharm步骤:
  2. 利用 Pandas 将数据集中的某列文本拆分为多行
  3. 使用迭代查找一个list中最小和最大值,并返回一个tuple。
  4. mybatis plus 中 EntityWrapper源码解读
  5. vlmcsd 编译与测试
  6. 老王学linux-centos6.7drbd8.4.3
  7. 8天后,有份独家小程序数据分析报告重磅来袭
  8. HDU 2602 Bone Collector DP(01背包)
  9. [译]5.1. System Initialization Overview 系统初始化简介
  10. 用JS脚本进行页面元素控制