一、动态查询
1)一张表的动态查询
<select id="queryMore" resultMap="pw.Blog">
SELECT *
FROM `t_blog`
<where>
<if test="bname != null">
AND `b_name` LIKE concat('%',#{bname},'%')
</if>
<if test="blable != null">
AND `b_lable`LIKE concat('%', #{blable},'%')
</if>
<if test="uname != null">
AND `u_name` = #{uname}
</if>
</where>
</select>
SELECT *
FROM `t_blog`
<where>
<if test="bname != null">
AND `b_name` LIKE concat('%',#{bname},'%')
</if>
<if test="blable != null">
AND `b_lable`LIKE concat('%', #{blable},'%')
</if>
<if test="uname != null">
AND `u_name` = #{uname}
</if>
</where>
</select>
mapper的sql语句(这是一张表的动态查询sql示例),我们需要注意的是if标签中的 test 里面的那个null和后台Java代码中的“”是不一样的,因此我们要判断转化一下
/**
* 动态查询
* @param bname
* @param blable
* @param uname
* @return
* @throws Exception
*/
public List<Blog> queryMore(@Param("bname") String bname,@Param("blable") String blable,@Param("uname") String uname)throws Exception;
* 动态查询
* @param bname
* @param blable
* @param uname
* @return
* @throws Exception
*/
public List<Blog> queryMore(@Param("bname") String bname,@Param("blable") String blable,@Param("uname") String uname)throws Exception;
对应的mapper代码,注意一定要是List<> 因为我们查询得到的对象是一组,要储存在List<>数组中
2)多张表的动态查询
二、模糊查询
1)
`b_name` LIKE concat('%',#{bname},'%')
2)
`b_name` LIKE `%${bname}%`