Mybatis .xml编译常识
Posted 薄荷加冰透心凉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis .xml编译常识相关的知识,希望对你有一定的参考价值。
Mybatis .xml编译须知
${} 和 #{} 区别
${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。
#{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给sql的?号占位符设置参数值,
比如ps.setInt(0, parameterValue),#{item.name}的取值方式为使用反射从参数对象中获取item对象的name属性值,相当于param.getItem().getName()。
#{}有预编译的效果,可以防止SQL攻击
Mapper.java传递String[] Mapper.xml 可以写成类似
<!-- 获取deptId 通过id -->
<select id="getDeptIdById" resultType="int" parameterType="string">
select count(*) from tbl_user
where deptId in
<foreach collection="array" item="id" open="(" separator=","
close=")">
#{id}
</foreach>
</select>
Mapper.java 传递参数list Mapper.xml 可以写成类似
/**
* 保存市场活动线索关系
*
* @param list
* @return
*/
public int saveClueActivityRelationByList(List<ClueActivityRelation> lists);
<!-- 保存线索市场活动关系 -->
<insert id="saveClueActivityRelationByList" parameterType="ClueActivityRelation">
insert into tbl_clue_activity_relation(id,activityId,clueId)
values
<foreach collection="list" item="obj" separator=",">
(#{obj.id},#{obj.activityId},#{obj.clueId})
</foreach>
</insert>
xml中mybatis里面进行运算
使用<![CDATA[
可以隔绝 + - 等
]]>
sql语句中当前时间
now()
curDate()
SQL语句:
cast(x as y)函数
将x数据类型转换为y数据类型
以上是关于Mybatis .xml编译常识的主要内容,如果未能解决你的问题,请参考以下文章