where标签

所属的文件:表的XML配置文件中。
所处的位置:配置文件中的<select>,<update>,<delete>等标签下。
作用:
(1)避免直接使用where时,不想进行筛选时造成的语法错误。即有内容则输出,没内容则连where都不输出。
如:select * from student where造成的语法错误。
(2)避免下面的语句的多个判断条件拼接的语句前多出一个and,造成的语法错误。
如:

<where>
    <if test="name!=null and !"".equals(name.trim())">and a.NAME = #{name}</if>
    <if test="description!=null and !"".equals(description.trim())">and a.DESCRIPTION like '%' #{description} '%'</if>
</where>

错误的拼接的效果:select * from student where and a.NAME = #{name} and a.DESCRIPTION like '%' #{description} '%',很明显多出一个and
<where>会自动帮你消除最前面的and,保证SQL语法不错。

sql标签

所属的文件:表的XML配置文件中。
定义形式:<sql id="aaa">ID,COMMAND,DESCRIOPTION,CONTENT</sql>
引用形式:例如在select标签中。

<select id="test" parameterType="com.xxx.bean.test" resultMap="testMap">
select <include refid="columns"/> from message
</select>

注意其中的<include refid="xxx"/>就是引用了sql标签(有点像字符串常量的赶脚)。

set标签

所属的文件:表的XML配置文件中。
所处的位置:配置文件中的<update>标签下。
作用:类似where标签,(1)有内容则输出,无内容set也不输出(2)去除多出的逗号

trim标签

所属的文件:表的XML配置文件中。
所处的位置:配置文件中的<select>,<update>,<delete>等标签下。
作用:(1)有内容则输出,没内容则不输出。
字段prefix:前缀;
字段suffix:后缀;

<trim prefix="where" suffix="test" >

</trim>

(2)帮助前后去掉多余的分隔符。
字段prefixOverrides:去掉前面的特定字符串。
字段suffixOverrides:去掉后面的特定字符串。

<trim prefix="where" suffix="test" prefixOverrides="and/or" suffixOverrides=",">

</trim>

可以模拟where和set标签。

if标签

所属的文件:表的XML配置文件中。
所处位置:<select>等标签下。
形式:

<if test="可使用OGNL表达式,特殊字符需要使用HTML的转义方法">
此处获取参数使用#{属性名} 
</if>

获取参数参考Mybatis学习笔记(二)—–查询sql的配置文件

choose标签

所属的文件:表的XML配置文件中。
所处位置:<select>等标签下。
形式:

<choose>
    <when test="">
    </when>
    <when test="">
    </when>
    <when test="">
    </when>
    <otherwise>
    </othserwise>
</choose>

association标签

所属的文件:表的XML配置文件中。
所处位置:<resultMap>标签下。
形式:

<association property="AAA" resultMap="namespace.BBB"/>

AAA是该表配置的BEAN类中有一个名为AAA的引用变量(一对一),BBB为另一个命名空间中的一个resultMap的id,将其内容赋给当前的表中的某变量(名为AAA的引用变量)。
如:有类A,类B。
其中,A中有成员变量B b,则在A的resultMap中定义<association property="b" resultMap="B的namespace.resultMap的id"/>

标签总结

mysql like xml标签_配置文件