美文网首页
mybatis-xml文件常见使用

mybatis-xml文件常见使用

作者: 鱼da王 | 来源:发表于2019-01-24 17:36 被阅读0次
  1. CDATA标签的用法

    • 环境:

      在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

    • 使用:

      在mapper文件中写sql语句时,遇到特殊字符时,如:< 等,建议使用 <![CDATA[ sql 语句 ]]> 标记,将sql语句包裹住,不被解析器解析

  2. 插入空值时,需要指定JdbcType -- 最好都加上,安全

  3. *#{}、${}的区别*

    • #{}

      在预处理时,会把参数部分用一个占位符 ? 代替。

      参数替换在 DBMS 中

    • ${}

      只是简单的字符串替。 会造成sql注入问题,例子如下:

      select * from ${tableName} where name = #{name}
      -- 当 tableName = "user; delete user; --"
      --动态解析如下
      select * from user; delete user; -- where name = ?;
      

      但是表名用参数传递进来的时候,只能使用 ${} ,具体原因可以自己做个猜测,去验证。这也提醒我们在这种用法中要小心sql注入的问题。

  4. foreach

          <if test="statuses != null and statuses.size() > 0">
            AND status IN
            <foreach collection="statuses" item="status" index="index"
                     open="(" close=")" separator=",">
              #{status,jdbcType=INTEGER}
            </foreach>
          </if>
    
  5. 插入操作返回id

    <insert id="insertAndGetId" parameterType="com.tiefan.btc.tripmarketingactiveserv.entity.bargain.BargainGroup" useGeneratedKeys="true" keyProperty="id">
            insert into bargain_group
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <if test="delFlag != null">
                    del_flag,
                </if>
            </trim>
            <trim prefix="values (" suffix=")" suffixOverrides=",">
                <if test="delFlag != null">
                    #{delFlag,jdbcType=BIT},
                </if>
            </trim>
        </insert>
    
  6. like

    <select id="getUsersByName" parameterType="string" resultType="com.buaa.mybatis.po.User">
        SELECT * FROM USER WHERE username LIKE CONCAT('%',#{name},'%')
    </select>
    

相关文章

网友评论

      本文标题:mybatis-xml文件常见使用

      本文链接:https://www.haomeiwen.com/subject/aujujqtx.html