1.特殊符号处理
在 mybatis 中的 xml 文件中,存在一些特殊的符号,比如:<、>、"、&、<>等,正常书写mybatis 会报错,需要对这些符号进行转义。具体转义如下所示:
特殊字符 转义字符< <> >" "’ '& &
除了可以使用上述转义字符外,还可以使用 <![CDATA[]]> 来包裹特殊字符。如下所示:
<if test="id != null">AND <![CDATA[ id <> #{id} ]]></if>
<![CDATA[ ]]>是 XML 语法,在 CDATA 内部的所有内容都会被解析器忽略。但是有个问题那就是 <if> </if> <where> </where> <choose> </choose> <trim> </trim> 等这些标签都不会被解析,所以我们只把有特殊字符的语句放在 <![CDATA[ ]]> 尽量缩小<![CDATA[ ]]> 的范围。
在StudentDao类中写该方法
List<Student> findStudents4(int num);
在StudentMapper.xml文件中写相应的SQL语句
<!--解决方式1:使用转义字符代替select * from student where num < #{num}--><select id="findStudents4" parameterType="int" resultType="Student">select * from student where num < #{num}</select>
<!--解决方式2:<![CDATA[特殊符号]]>--><select id="findStudents4" parameterType="int" resultType="Student">select * from student where num <![CDATA[<]]> #{num}</select>
在测试类的main方法中调用该方法
查询结果如下!
2.模糊查询
比如想查找姓张的所有人,可以用“张%”来代替
在StudentDao类中写该方法
List<Student> findStudents5(@Param("name") String name);
在StudentMapper.xml文件中写相应的SQL语句
<!-- 方式一:select * from student where name like '${name}%' 字符串拼接--><select id="findStudents5" resultType="Student">select * from student where name like '${name}%'</select>
<!-- 方式二:select * from student where name like concat(#{name},'%')使用数据库函数,连接字符串--><select id="findStudents5" resultType="Student">select * from student where name like '${name}%'</select>
在测试类的main方法中调用该方法
查询结果如下!