我们根据实体类的不同取值,使用不同的SQL语句来进行查询。比如在id如果不为空时可以根据id查询,如果用户名不为空时还要加入用户名作为条件,这种情况在我们的多条件组合查询中经常会碰到。
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; !DOCTYPE mapper公共”——//mybatis.org//DTD mapper 3.0//EN”“http://mybatis.org/dtd/mybatis-3-mapper.dtd”的在 & lt;映射器命名空间=癱om.joker.dao.IUserDao”比; & lt;选择id=" findByUser " resultType=坝没А眕arameterType=坝没А北? 从用户选择* 1=1 & lt;如果测试="用户名!=null和用户名!=薄氨? 和用户名# {username} & lt;/if> & lt;如果测试=暗刂?=null”比; 和地址像#{地址} & lt;/if> & lt;/select> & lt;/mapper>
注意:& lt; if>标签属的测试性中写的是对象的属性名,如果是包装类的对象要使用OGNL表达式的写法。另外要注意,1=1的作用。
为了简化上面,1=1的条件拼装,我们可以采用& lt; where>标签来简化开发。
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; !DOCTYPE mapper公共”——//mybatis.org//DTD mapper 3.0//EN”“http://mybatis.org/dtd/mybatis-3-mapper.dtd”的在 & lt;映射器命名空间=癱om.joker.dao.IUserDao”比; & lt;选择id=" findByUser " resultType=坝没А眕arameterType=坝没А北? 从用户选择* & lt; where> & lt;如果测试="用户名!=null和用户名!=薄氨? 和用户名# {username} & lt;/if> & lt;如果测试=暗刂?=null”比; 和地址像#{地址} & lt;/if> & lt;/where> & lt;/select> & lt;/mapper>
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; !DOCTYPE mapper公共”——//mybatis.org//DTD mapper 3.0//EN”“http://mybatis.org/dtd/mybatis-3-mapper.dtd”的在 & lt;映射器命名空间=癱om.joker.dao.IUserDao”比; & lt; !——查询所有用户在id的集合之中 foreach标签:用于遍历集合 *收集:代表要遍历的集合元素,注意编写时不要写# {} *开放:代表语句的开始部分 *近:代表结束部分 *项目:代表遍历集合的每个元素,生成的变量名 * sperator:代表分隔符 ——比; & lt;选择id=" findInIds " resultType="用户" parameterType=皅ueryvo”比; 从用户选择* & lt; where> & lt;如果测试=" id !=null和ids.size()比;0”比; & lt; foreach收集=" id "开放=(“=?“id”=皍id”分隔符=项目”、“比; # {uid} & lt;/foreach> & lt;/if> & lt;/where> & lt;/select> & lt;/mapper>
MyBatis的sql中可将重复的sql提取出来,使用时用包括引用即可,最终达到sql重用的目的。
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; !DOCTYPE mapper公共”——//mybatis.org//DTD mapper 3.0//EN”“http://mybatis.org/dtd/mybatis-3-mapper.dtd”的在 & lt;映射器命名空间=癱om.joker.dao.IUserDao”比; & lt; !——抽取重复的语句代码片段——比; & lt; sql id=癲efaultSql”比; 从用户选择* & lt;/完成; & lt;选择id=" findAll " resultType=坝没А北? & lt;包括refid=" defaultSql "祝辞& lt;/include> & lt;/select> & lt;选择id=" findById " resultType="用户" parameterType=癷nt”比; & lt;包括refid=" defaultSql "祝辞& lt;/include> 在id=# {uid} & lt;/select> & lt;/mapper>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。