一, 动态 sql, 比如说利用 sql 查询年龄为 21, 姓名为 "jcc" 的人.
- <select id="queryByNameOrASqlTag" parameterType="Person" resultType="Person">
- select id,name,age,sex from person where
- <if test="name !=null and name!=''">
- name = #{name}
- </if>
- <if test="age !=null and age!=0">
- and age = #{age}
- </if>
- </select>
在 select 标签中, 可以写上条件语句判断, name 与 age 是否为空.
如果出现 name 为空的情况, sql 为: select id ,name ,age,sex from person where and age = 21, 那么运行测试类就会出现 sql 语句报错.
第一种方法可以在 where 后面写一句 1=1, 就是不论你 name 和 age 是不是空 sql 都会执行成功.
第二种方法: 在 select 标签中添加 where 标签, 该标签会自动识别删除第一个 and, 不会处理后面的 and.
<select id="queryByNameOrASqlTag2" parameterType="Person" resultType="Person"> select id,name,age,sex from person <where> <if test="name !=null and name!=''"> and name = #{name} </if> <if test="age !=null and age!=0"> and age = #{age} </if> </where> </select>
来源: http://www.bubuko.com/infodetail-3692366.html