mybits 动态sql注入

条件分支SQL

这里 user 默认为 传入的对象 ,name,age,sex 为User 的属性
user_name, user_age, user_sex 为数据库表的字段名

  • where
  • if
    <select id="selectUser">
    select * from 表名
      <where>
              <if test="name != null">
                      user_name = #{userName}
              </if>
              <if test="age != null">
                      and user_age = #{age }
              </if>
              <if test="sex != null">
                      and user_sex = #{sex }
              </if>
      </where>
    <!-- 在这里只要if条件满足就会加上相应的语句 -->
</select>

在《where》标签里面 最自动将 where后把 and 或 or 去掉,避免出现sql语法错误

  • choose&when&otherwise
    <select id="selectUser">
    select * from 表名
      <where>
          <choose>
              <when test="name != null">
                      user_name = #{userName}
              </when>
              <when test="age != null">
                      and user_age = #{age }
              </when>
              <otherwise>
                      and user_sex = #{sex }
              </otherwise>
           </choose>
      </where>
    <!-- 在choose标签里面只要if条件满足就会加上相应的语句,同时不会在进行后续的判断。但是如果when 条件都不满足,就会执行otherwise -->
</select>

循环SQL

  • forEach
    <select id="selectUser">
    select * from 表名
      <where>
            <foreach    collection="list"  item="user" separator="," open="age in (" close=")">
                #{age}
            </foreach>
      </where>
    <!-- 在foreach标签内可以设置如下参数
              collection          为遍历集合的类型 
                index              默认为遍历的下标,在collection为map类型中为key 
                item                默认为每次遍历的值,在collection为map类型中为value 
                separator        每次循环间隔以什么分隔
                open              在遍历开始的时候自动为你添加代码
                close              在遍历结束的时候自动为你添加代码
        -->
</select>

其他特殊SQL

  • where
    如上所示,where标签会自动帮你添加 where关键字,如果where 内所写条件皆不满足,就不会给sql语句添加where关键字,并且会自动帮你去除多余的and 或 or。
  • set
    set为动态更新数据更加方便。
    <update   id="updateUser">
    update  表名
            <set>
                    <if test="name != null">name=#{name},</if>
                    <if test="age != null">age=#{age},</if>
                   <if test="sex != null">sex=#{sex},</if>
           </set>
  where id=#{id}
</update >
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容