`
yhq1212
  • 浏览: 81963 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ibatis UPDATE 动态XML与insert

 
阅读更多

update的时候需要写中间的这些XML是件挺蛋疼的事。  所以像了个方法


<update id="xiaoegcUpdateSave" parameterClass="com.framework.mapping.Cg_Xiaoegc">
            <![CDATA[
               update     cg_xiaoegc  set id  =#id#    
            ]]>

          <isNotEmpty property="id" prepend=",">     <![CDATA[ ID=#id#     ]]>      </isNotEmpty>
           <isNotEmpty property="xmbh" prepend=",">     <![CDATA[ XMBH=#xmbh#     ]]>      </isNotEmpty>
            <isNotEmpty property="dwmc" prepend=",">     <![CDATA[ DWMC=#dwmc#     ]]>      </isNotEmpty>  
            <isNotEmpty property="dwbh" prepend=",">     <![CDATA[ DWBH=#dwbh#     ]]>      </isNotEmpty>  
            <isNotEmpty property="dwxz" prepend=",">     <![CDATA[ DWXZ=#dwxz#     ]]>      </isNotEmpty>  
            <isNotEmpty property="lxr" prepend=",">     <![CDATA[ LXR=#lxr#     ]]>      </isNotEmpty>
             <isNotEmpty property="lxdh" prepend=",">     <![CDATA[ LXDH=#lxdh#     ]]>      </isNotEmpty>
              <isNotEmpty property="gcmc" prepend=",">     <![CDATA[ GCMC=#gcmc#     ]]>      </isNotEmpty>
               <isNotEmpty property="gcdd" prepend=",">     <![CDATA[ GCDD=#gcdd#     ]]>      </isNotEmpty>
                <isNotEmpty property="ysje" prepend=",">     <![CDATA[ YSJE=#ysje#     ]]>      </isNotEmpty>
                  <isNotEmpty property="zjly_sjbk" prepend=",">     <![CDATA[ ZJLY_SJBK=#zjly_sjbk#     ]]>
                       </isNotEmpty>  <isNotEmpty property="zjly_zc" prepend=",">     <![CDATA[ ZJLY_ZC=#zjly_zc#     ]]>
                             </isNotEmpty>  <isNotEmpty property="htje" prepend=",">     <![CDATA[ HTJE=#htje#     ]]>  
            </isNotEmpty>  <isNotEmpty property="jhkg_time" prepend=",">     <![CDATA[ JHKG_TIME=#jhkg_time#     ]]>      </isNotEmpty>
            <isNotEmpty property="jhjg_time" prepend=",">     <![CDATA[ JHJG_TIME=#jhjg_time#     ]]>      </isNotEmpty>
             <isNotEmpty property="dwmc_sg" prepend=",">     <![CDATA[ DWMC_SG=#dwmc_sg#     ]]>      </isNotEmpty>
               <isNotEmpty property="lxr_sg" prepend=",">     <![CDATA[ LXR_SG=#lxr_sg#     ]]>      </isNotEmpty>
                <isNotEmpty property="lxdh_sg" prepend=",">     <![CDATA[ LXDH_SG=#lxdh_sg#     ]]>      
                </isNotEmpty>  <isNotEmpty property="jbqk" prepend=",">     <![CDATA[ JBQK=#jbqk#     ]]>      </isNotEmpty>  
                <isNotEmpty property="bz" prepend=",">     <![CDATA[ BZ=#bz#     ]]>      </isNotEmpty>  
                <isNotEmpty property="type_gc" prepend=",">     <![CDATA[ TYPE_GC=#type_gc#     ]]>      </isNotEmpty>  
                <isNotEmpty property="status" prepend=",">     <![CDATA[ STATUS=#status#     ]]>      </isNotEmpty>
                 <isNotEmpty property="createdate" prepend=",">     <![CDATA[ CREATEDATE=#createdate#     ]]>      </isNotEmpty>
                  <isNotEmpty property="beianshijian" prepend=",">     <![CDATA[ BEIANSHIJIAN=#beianshijian#     ]]>      </isNotEmpty>
          
            
            <![CDATA[
                   where 1=1 and  id =#id#        
            ]]>
            
            

用下面的SQL可以搞定
select wm_concat(a) from (
select   
 '<isNotEmpty property="'||lower(COLUMN_NAME)||'" prepend="1234">     <![CDATA[ '|| COLUMN_NAME||'=#'||lower(COLUMN_NAME)||'#     ]]>      </isNotEmpty>'  
 as  a
 from   user_tab_columns where  table_name='CG_XIAOEGC'
)
操作过程,使用此段SQL生成XML文件后,先将“,”替换成空格,然后将1234替换成你要的字符,如AND ,OR ,逗号等


或者直接使用下面的SQL
select replace(replace(wm_concat(a) ,',','  '),'1234','你想要的字符(and ,or ,逗号)') from (
select   
 '<isNotEmpty property="'||lower(COLUMN_NAME)||'" prepend="1234">     <![CDATA[ '|| COLUMN_NAME||'=#'||lower(COLUMN_NAME)||'#     ]]>      </isNotEmpty>'  
 as  a
 from   user_tab_columns where  table_name='CG_XIAOEGC'
)

 

 

 先查询表的所有字段,然后拼接字符串,最后WM_concat变成一行后替换其中的“,”后再次替换其中的1234临时字符成需要的“AND OR 等”

 

 

 

 

生成INSERT


select 'insert into   CG_XIAOEGC values(' || wm_concat(COLUMN_NAME) ||') values('||wm_concat('#'||lower(COLUMN_NAME)||'#')||')' 
  from   user_tab_columns where  table_name='CG_XIAOEGC'

 

 

生成SELECT


select ' select ' || wm_concat(COLUMN_NAME) ||' from   CG_XIAOEGC  ' 
  from   user_tab_columns where  table_name='CG_XIAOEGC'

分享到:
评论

相关推荐

    ibatis生成xml,object

    例如,`select`标签用于查询,`insert`用于插入数据,`update`用于更新记录,而`delete`则用于删除操作。每个标签内部可以定义参数和结果映射,使得SQL执行更加灵活。 生成的Java对象(POJO)通常包含了字段和...

    ibatis用xml配置文件配置使用

    通常包含`&lt;mapper&gt;`标签,然后是各种`&lt;select&gt;`, `&lt;insert&gt;`, `&lt;update&gt;`, `&lt;delete&gt;`标签,用于对应SQL查询、插入、更新和删除操作。例如: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE mapper ...

    sqlserver Ibatis XML自动生成工具

    4. `delete`标签:用于删除数据,结构与`insert`和`update`类似。 使用该工具生成的XML文件可以无缝集成到你的Ibatis项目中,与Java接口配合使用,实现对数据库的高效操作。在Java代码中,你只需调用对应的Mapper...

    iBATIS-XmlParser

    iBATIS 是一款著名的开源Java持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,从而实现数据库操作与业务逻辑的解耦。"iBATIS-XmlParser" 指的是iBATIS框架中解析XML配置文件的部分,这部分主要负责读取和...

    ibatis教程 输入参数详解

    以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索映射SQL语句的方法、命名空间的注意事项、作用域与生命周期的解释、mapper配置...

    iBATIS框架源码剖析源码

    2. **SqlMap接口和SqlMapClient**:SqlMap是与数据库交互的接口,而SqlMapClient是其实现,提供了执行SQL映射文件中的SQL语句的方法,如select、insert、update和delete。 3. **动态SQL**:iBATIS支持动态SQL,允许...

    IBATIS中,要查询出来的属性来自哪个xml,就把这个方法写在该xml下

    2. **SQL语句**: 包括`&lt;select&gt;`、`&lt;insert&gt;`、`&lt;update&gt;`、`&lt;delete&gt;`等标签,用于定义具体的SQL语句。 3. **参数映射**: 定义输入参数的类型和映射方式。 4. **结果映射**: 定义查询结果如何映射到Java对象上。 5....

    ibatis配置文件模板

    - `&lt;update&gt;`:用于更新,结构与`&lt;insert&gt;`类似。 - `&lt;delete&gt;`:用于删除,结构与`&lt;insert&gt;`类似。 - `&lt;resultMap&gt;`:定义复杂对象的映射,可以处理一对一、一对多、多对一等关联关系。 在实际开发中,Ibatis...

    ibatis demo,ibatis例子,ibatis示例

    3. **SqlSession**:SqlSession是Ibatis的核心组件,它提供了执行SQL的方法,如`selectOne`、`insert`、`update`和`delete`。每次数据库操作后,记得关闭SqlSession以释放资源。 4. **动态SQL**:Ibatis的动态SQL...

    ibatis总结 ibatis ibatis ibatis ibatis

    例如,`&lt;select&gt;`标签用于定义查询语句,`&lt;insert&gt;`、`&lt;update&gt;`和`&lt;delete&gt;`分别对应增删改操作。在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签。 ...

    ibatis自动生成工具

    Ibatis自动生成工具可以帮助我们快速创建DAO接口,这些接口包含了常见的CRUD(Create、Read、Update、Delete)操作,例如`selectByExample()`, `insert()`, `updateByExample()`, `deleteByExample()`等方法。...

    ibatis3应用实例(oracle数据库)

    例如,可能包含一个`UserMapper.xml`文件,其中定义了用户相关的SQL语句,以及对应的`UserMapper.java`接口,通过`@Select`、`@Insert`等注解与XML映射文件关联。 六、总结 Ibatis3与Oracle数据库的结合,既发挥了...

    简单的ibatis与mysql的交互

    Ibatis的SqlSession对象在这里发挥作用,通过SqlSessionFactory创建SqlSession,然后调用SqlSession的selectOne、insert、update或delete方法执行SQL。 6. **Eclipse工程结构**:一个典型的Ibatis-Mysql项目结构...

    Ibatis 入门经典 实例

    2. 编写 SQL 映射:在 XML 文件中编写 SQL 语句,通过 `&lt;select&gt;`、`&lt;insert&gt;`、`&lt;update&gt;`、`&lt;delete&gt;` 等标签进行操作。 3. 映射接口与 XML 关联:在 XML 文件中通过 `&lt;mapper&gt;` 标签指定接口全限定名。 4. ...

    ibatis源代码项目

    除了XML映射文件,iBatis还支持注解驱动,可以直接在Mapper接口的方法上使用@Select、@Insert、@Update和@Delete注解,简化配置,提高开发效率。 六、事务管理 iBatis通过SqlSession提供了事务控制,开发者可以...

    iBatis文档

    SQL映射文件中的标签可以复用SQL片段,、&lt;insert&gt;、&lt;update&gt;、标签分别对应查询、插入、更新和删除操作。动态SQL是iBatis的一大亮点,通过、、、等标签,可以在运行时根据条件动态生成SQL语句。 此外,iBatis支持预...

    ibatis简单CRUD例子

    3. **映射机制**:通过XML配置或者注解,Ibatis可以将数据库的查询结果映射到Java对象,实现数据对象与数据库表之间的转换。 4. **事务管理**:Ibatis支持Spring等容器的事务管理,也可以独立进行事务控制。 5. **...

    ibatis

    4. 映射文件与接口绑定:Ibatis 支持Mapper接口,通过`@Select`、`@Insert`、`@Update`、`@Delete`等注解,将SQL语句直接写在方法上,简化了编程模型。同时,通过Mapper工厂,可以根据接口生成具体的Mapper实例,...

Global site tag (gtag.js) - Google Analytics