利用数据库内部对象来查取,表相关列、属性 实现动态组装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>