官方中文文档地址:
http://www.mybatis.org/mybatis-3/zh/getting-started.html
1、在Mybatis mapping.xml映射配置文件中使用大于>号小于号<
XML文件会在解析XML时将5种特殊字符进行转义,分别是&, <, >, “, ‘, 我们不希望语法被转义,就需要进行特别处理。箭头哪边就是左和右
< |
< |
小于号 |
> |
> |
大于号 |
& |
& |
和 |
' |
" |
单引号 |
" |
' |
双引号 |
第一种使用转义符号:
SELECT * FROM test
WHERE 1 = 1 AND A <= 12 AND A >= 23
<!--等同于 when A<=12 and A>=23 -->
第二种使用<![CDATA[ ]]>标签:推荐使用<![CDATA[ ]]>
,清晰,简洁
SELECT * FROM test
WHERE 1 = 1 AND A <= 12 AND A >= 23
<!--等同于 -->
when A <![CDATA[<= ]] 12 and <![CDATA[>= ]] 23
在CDATA内部的所有内容都会被解析器忽略,保持原貌。所以在Mybatis配置文件中,要尽量缩小 <![CDATA[ ]]>
的作用范围,来避免<if test=""> </if> <where> </where>
等sql标签无法解析的问题。
2.Mybatis中使用OGNL表达式test比较字符串
在Mybatis映射配置文件中,使用OGNL表达式test的时候,比较字符串时,需要调用 toString()方法保证 == 两边的值都是 String 类型。
<!-- 以下为错误写法,会抛NumberFormatException异常 -->
<if test="username == 'U'">
<!-- 正确写法如下两种 字符串必须用双引号判断,不可以用单引号-->
<if test="username == 'U'.toString()">
<if test='username == "U"'>
3、Mybatis实现WHERE IN查询
WHERE IN查询中,IN的参数是一个列表,需要传送一个列表参数,使用 foreach 实现。
<select id="selectTestByIds" resultType="demo">
SELECT * FROM Test t
WHERE ID in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
当使用可迭代对象或者数组时,index是当前迭代的次数,item的值是本次迭代获取的元素。当使用字典(或者Map.Entry对象的集合)时,index是键,item是值。
你可以将任何可迭代对象(如列表、集合等)和任何的字典或者数组对象传递给foreach作为集合参数。
4.Mybatis插入数据的时候返回插入记录的主键id
在进行输入库插入的时候,如果我们需要使用已经插入的记录的主键,则需要返回刚才插入的数据的主键id。
通过设置 insert 标签的 useGeneratedKeys 属性为 true 可以返回插入的记录的主键的id。
<insert id="User" useGeneratedKeys="true" keyProperty="id"> </insert>