zoukankan      html  css  js  c++  java
  • ibatis (六) dynamic的用法

    view plain copy print?

    1. dynamic可以去除第一个prepend="and"中的字符(这里为and),从而可以帮助你实现一些很实用的功能。具体情况如下:  
    2.   
    3. 1.使用dynamic  
    4.   
    5. 1.1 xml  
    6. select * from Person表  
    7.         <dynamic prepend="where">  
    8.                 <isNotNull property="name" prepend="and">  
    9.                     name=#name#  
    10.                 </isNotNull>  
    11.                 <isNotNull property="sex" prepend="and">  
    12.                     sex=#sex#  
    13.                 </isNotNull>                
    14.         </dynamic>  
    15.   
    16. 1.2 结果  
    17.   
    18. 当name、sex都非null时打出如下的sql语句:  
    19. select Person表 where (and) name= ? , and sex= ?  
    20.   
    21. 显然name前的and被自动去除了,很方便吧。  
    22.   
    23. 2.不使用dynamic  
    24.   
    25. 2.1 xml  
    26. 如果我把dynamic 去掉就会变的很恶心,如下:  
    27. select * from Person表         
    28.                 <isNotNull property="name" prepend="and">  
    29.                     name=#name#  
    30.                 </isNotNull>  
    31.                 <isNotNull property="sex" prepend="and">  
    32.                     sex=#sex#  
    33.                 </isNotNull>            
    34.   
    35. 2.2 结果  
    36. 当name、sex都非null时打出如下的sql语句:  
    37. select Person表 where and name= ? , and sex= ?  
    38. 显然name前多个and,sql语句错误。  
    39.   
    40. 3.总结  
    41. dynamic 会自动去除第一个 prepend="and中的内容(这里为and),从而方便一些操作。

    解決and存在問題 在开发过程 中 sql 语句后面写上where 1=1

    这样就算不适用dynamic 也不需要消除and 就可以使用sql语句不会报错

     SELECT *
       FROM (SELECT ROWS_.*, ROWNUM ROWNUM_
               FROM (select user_id,
                            user_name,
                            status,
                            user_type,
                            organ_id,
                            login_name,
                            password,
                            tel,
                            email,
                            sex
                       from sys_user
                      where 1 = 1
                        and sys_user.user_id = 114833
                      order by user_id) ROWS_
              WHERE ROWNUM <= 10)
      WHERE ROWNUM_ >= 1

  • 相关阅读:
    走出软件作坊
    [Flash入门基本动画]第8课
    [Flash入门基本动画]第6课
    数据中心十项节能妙招
    全面实施虚拟化的五个步骤
    Javascript的匿名函数
    TSQL调试器重返SQL Server 2008
    SQL Server 2008(BI)PPT下载
    通过数据中心整合和虚拟化实现高密度服务器配置
    [Flash入门基本动画]第7课
  • 原文地址:https://www.cnblogs.com/hpj1038361347/p/6991627.html
Copyright © 2011-2022 走看看