13.1 模糊查询实现
13.1.1 DAO
public interface MemberDAO {
//根据昵称查询用户信息——模糊查询
// 模糊查询需要使用${}取值,与sql进行拼接
// 在使用${}时,即使只有一个参数也需要使用@Param注解声明参数的key(非String对象参数可以不用声明)
public List<Member> searchMemberByNick(@Param("keyWord") String keyWord);
}
13.1.2 映射文件
<!--如果参数时String类型,需要parameterType声明参数类型-->
<select id="searchMemberByNick" parameterType="java.lang.String" resultMap="memberMap">
select member_id,member_nick,member_gender,member_age,member_city
from members
where member_nick like '%${keyWord}%'
</select>
13.1.3 测试
@Test
public void testSearchMemberByNick(){
MemberDAO memberDAO = MyBatisUtil.getMapper(MemberDAO.class);
List<Member> members = memberDAO.searchMemberByNick("花");
for (Member m: members) {
System.out.println(m);
}
}
13.2 #{}和${}的区别
-
${key} 表示获取参数,先获取参数的值拼接到SQL语句中,再编译执行SQL语句;可能引起SQL注入问题
-
#{key} 表示获取参数,先完成SQL编译(预编译),预编译之后再将获取的参数设置到SQL与中 ,可以避免SQL注入问题