记性不好,仅作记录,方便整理,共勉!!!
1) < ! [ CDATA [忽略检查的文本]]>
- 解决属性值中使用XML中的特殊字符。
- 不逐一的对其进行转义。
- CDATA段内内容直观的被忽略,无论里面是否包含XML敏感内容,全部被当作普通的文本去看待,列如:
<content>
<![ CDATA [
<script language="javascript">
function sayhello(){ alert("hello!"); }
</script>
] ] >
</content>
2 ) SUM( IF (逻辑值,逻辑值为真时运算,逻辑值为假时运算) ) AS “别名”
3 ) ON DUPLICATE KEY UPDATE
- 若该数据的主键值
/ UNIQUE KEY
已经在表中存在,则执行更新操作, 即UPDATE 后面的操作。 - 提高效率,保证原子性
4 ) foreach标签语法及使用
MyBatis的foreach标签应用于多参数的交互如:多参数(相同参数)查询、循环插入数据,以下为几个属性的意思解释:
collection:参数名称,根据Mapper接口的参数名确定,也可以使用@Param注解指定参数名
item:参数调用名称,通过此属性来获取集合单项的值
open:相当于prefix,即在循环前添加前缀
close:相当于suffix,即在循环后添加后缀
index:索引、下标
separator:分隔符,每次循环完成后添加此分隔符
查询
/**
* 多个参数查询user集合
*
* @param list
* @return
*/
@SuppressWarnings("unchecked")
List<User> getUsersByListParam(@Param("list") List list);
<!-- 使用foreach接收list参数 -->
<select id="getUsersByListParam" resultType="com.xuyong.entity.User">
select * from user
<foreach collection="list" item="item" open="where id in(" close=")" separator=",">
#{item}
</foreach>
</select>
插入
/**
* 使用foreach批量插入
*
* @param users
* @return
*/
int insertMultiUsers(@Param("users") List<User> users);
<!-- 使用foreach批量插入用户-->
<insert id="insertMultiUsers">
insert into user(user_name,gender,email,address,dept_id)
values
<foreach collection="users" item="user" separator=",">
(#{user.userName},#{user.gender},#{user.email},#{user.address},#{user.deptId})
</foreach>
</insert>
5 ) bind标签语法及使用
- bind标签执行表达式,创建变量。
- 可以用于模糊查询,给特定参数加些特殊的业务前缀等等。
<select id="selectUseIf" parameterType="com.soft.test.model.DynamicTestModel" resultMap="userMap">
<if test="username != null and username neq ''">
<bind name="pattern" value="'%' + _parameter.getUsername() + '%'" />
</if>
select * from t_user
<where>
<if test="username != null and username neq ''">
username like #{pattern}
</if>
</where>
</select>