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"/>
标签总结