MyBatis 手册动态,存储过程、增、删、改语句

原创 2017年01月03日 17:15:53
利用数据库内部对象来查取,表相关列、属性 实现动态组装sql语句。
<!-- 动态存储过程 -->
<insert id="exeDynamicProcedure" statementType="CALLABLE" parameterType="java.util.Map">
         <![CDATA[ {call ]]><if test="owner!=null">${owner}.</if>
         <![CDATA[${objName}(]]>
         <foreach collection="tags" item="tag" index="ind" separator=",">
          <choose>
           <when test=" tag.peModel==1 ">#{tag.col_values,mode=IN,jdbcType=${tag.peTypeStr}}</when>
           <when test=" tag.peModel==0" >#{${tag.pe_col_name_lower},mode=OUT,jdbcType=${tag.peTypeStr}}</when>
          </choose>
         </foreach>
        <![CDATA[ )}]]>
  </insert>
 
<!-- 动态更新 -->
     <update id="exeDynamicUpdate" parameterType="java.util.Map" >
      update <if test="owner!=null">${owner}.</if>${objName}
   <set>
         <foreach collection="tags" item="tag" index="ind" separator=",">
          ${tag.pe_col_name}=#{tag.col_values,jdbcType=${tag.peTypeStr}}
         </foreach>
         </set>
         <where>
          <foreach collection="wheres" item="tag" index="ind" separator="and">
          ${tag.pe_col_name}=#{tag.col_values,jdbcType=${tag.peTypeStr}}
         </foreach>
         </where>
     </update>
    
<!-- 动态删除 -->
     <delete id="exeDynamicDelete" parameterType="java.util.Map" >
      delete <if test="owner!=null">${owner}.</if>${objName}
         <where>
          <foreach collection="wheres" item="tag" index="ind" separator="and">
          ${tag.pe_col_name}=#{tag.col_values,jdbcType=${tag.peTypeStr}}
         </foreach>
         </where>
     </delete>
     
     
<!-- 动态新增 -->
     <insert id="exeDynamicInsert" parameterType="java.util.Map" >
      insert into <if test="owner!=null">${owner}.</if>${objName}(
       <foreach collection="tags" item="tag" index="ind" separator=",">
        ${tag.pe_col_name}
         </foreach>
      )values(
       <foreach collection="tags" item="tag" index="ind" separator=",">
        #{tag.col_values,jdbcType=${tag.peTypeStr}}
         </foreach>
      )
     </insert>

相关文章推荐

关于Java调用Oracle存储过程时,传入动态参数作为in语句条件的问题

关于Java调用Oracle存储过程时,传入动态参数作为in语句条件的问题

sql server、db2、oracle 存储过程动态sql语句示例

sql server、db2、oracle 存储过程动态sql语句示例

在动态SQL语句中调用存储过程

当我们碰到有一类存储名称和过程的参数上都相似时,可以使用execute immediate来动态执行这些存储过程,在这次的项目中我有一类用“P_InsertInto_”开头的存储过程,后面是表名如:P...
  • idebian
  • idebian
  • 2013年03月20日 14:30
  • 5900

存储过程中执行动态Sql语句

MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。还有一个最大的好处就...

存储过程中执行动态Sql语句

SQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利...

MyBatis执行动态sql及存储过程

MyBatis调用动态SQL和存储过程

关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题

关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题   需求:需要将多个参数作为一个参数传给存储过程执行,如:参数'1000','2000','3000','4000'等多个...

Oracle中创建存储过程、运行动态SQL并得到动态SQL语句所查询的值

create or replace procedure proc_getnewfuhebyfacid(fac_id_s in varchar2,fac_id_e in varchar2,newfuhe...

oracle存储过程详解--游标 实现增、删、改、查的(1)

注:以下是转来的内容,但是设计PLSQL代码,原文有问题,所以PLSQL代码我都验证修改了。测试需要在scott/tiger下进行,对于没有的表,需要自行创建,表复制的语句为     CREATE ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MyBatis 手册动态,存储过程、增、删、改语句
举报原因:
原因补充:

(最多只允许输入30个字)