ibatis动态语句中的prepend

关于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会被过滤掉了,会出错。

 

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

 

 

时间: 2024-10-01 14:32:28

ibatis动态语句中的prepend的相关文章

ibatis动态语句

问题描述 有两个动态变量,emp_name.empNo当emp_name不为空时,拼接如下EMP_IDIN(SELECTEMP_IDFROMbase_sys_userWHEREEMP_NAMELIKE'%$emp_name$%')当empNo不为空时,拼接如下EMP_IDIN(SELECTEMP_IDFROMbase_sys_userWHEREEMP_NOLIKE'%$empNo$%')两个不为空时,拼接如下EMP_IDIN(SELECTEMP_IDFROMbase_sys_userWHEREE

ibatis动态语句不同的写法

  所谓的不同写法当然原理一样,只不过我觉得第二种更加清晰和原生一些.   写法一:  <sql id="queryCondition">   <dynamic prepend="WHERE">    <isNotEmpty prepend="and" property="stuNum">     <![CDATA[  num= #stuNum# ]]>    </isNo

ibatis中动态语句的iterate标签

  例子一   查询条件dto public class queryCondition {  private String[] stuIds; private String name; } 查询sqlMap <select id="selectStu" parameterClass="cn.xy.queryCondition" resultClass="cn.xy.Student">  select id,name from stud

转:ibatis动态sql

直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的字符串连接.对于这个问题,Ibatis提供了一套标准的相对比较清晰的方法来解决一个问题,这里有个简单的例子:     <select id="getUserList" resultMap="user">          select * from user            

ibatis sql语句 大于等于号的问题

问题描述 刚接触IBATIS,希望大家能够帮忙看一下.<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap><typeAli

SQL语句中where 1=1的基本用法

刚才有一位网友说了本文的不足,我再此重新编辑重发一篇整理过的,希望多提意见.   与where 1=1等效的类似语句有1<>2,'a'='a','a'<>'b',其目的是where的条件为永真,得到的结果就是未加约束条件的.那么where 1=1 有什么用处呢? 使用一 拼接SQL语句   一个简单拼接SQL语句的例子: String sql = select * from table student where 1=1; StringBuffer buffer = new Str

Ibatis动态(dynamic)查询

Ibatis的动态查询使得数据操作变得非常的灵活,下次举出了常用的动态查询的属性信息: Ibatis配置信息 Xml代码   <!-- Dynamic Sql -->     <typeAlias alias="Student" type="com.ibatis.Student" />       <typeAlias alias="StudentDTO" type="com.ibatis.Studen

动态页中服务器端的处理

动态|服务器      前面的章节已经研究了ASP的一些内置对象.重点介绍的对象有Request.Response.Session和Application对象.ASP中另一个比较主要的对象为Server对象.本章重点介绍这个对象的背景知识和使用方法. Server对象在服务器端脚本中通过实例和使用其他外部对象和组件,提供了一种扩展ASP页的功能的方法.事实上,许多人认为这个对象是ASP之所以能够流行的主要因素.引入Server对象的意义很大,这意味着ASP不必提供人们所需要的所有属性.它可调用其

iBATIS分页实例中ObjectDataSource的应用浅析

iBATIS分页实例中ObjectDataSource的应用首先让我们来看看属性方面的特点,ObjectDataSource 控件内置了对分页的支持.我们需要设置 ObjectDataSource 的 EnablePaging属性,然后要设置SelectMethod.SelectCountMethod .StartRowIndexParameterName和MaximumRowsParameterName 属性.当 EnablePaging 属性设置为 true 时,SelectParamete