-
CDATA标签的用法
-
环境:
在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。
-
使用:
在mapper文件中写sql语句时,遇到特殊字符时,如:< 等,建议使用 <![CDATA[ sql 语句 ]]> 标记,将sql语句包裹住,不被解析器解析
-
-
插入空值时,需要指定JdbcType -- 最好都加上,安全
-
*#{}、${}的区别*
-
#{}
在预处理时,会把参数部分用一个占位符 ? 代替。
参数替换在 DBMS 中
-
${}
只是简单的字符串替。 会造成sql注入问题,例子如下:
select * from ${tableName} where name = #{name} -- 当 tableName = "user; delete user; --" --动态解析如下 select * from user; delete user; -- where name = ?;
但是表名用参数传递进来的时候,只能使用 ${} ,具体原因可以自己做个猜测,去验证。这也提醒我们在这种用法中要小心sql注入的问题。
-
-
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>
-
插入操作返回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>
-
like
<select id="getUsersByName" parameterType="string" resultType="com.buaa.mybatis.po.User"> SELECT * FROM USER WHERE username LIKE CONCAT('%',#{name},'%') </select>
网友评论