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数据类型    
   

原文地址:https://www.cnblogs.com/liudongdong666666/p/7808386.html