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

来源:互联网 发布:专业书籍网络图书馆 编辑:程序博客网 时间:2024/06/10 08:04
利用数据库内部对象来查取,表相关列、属性 实现动态组装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>
0 0