dao接口案例:根据昵称查询会员信息(模糊匹配 like)
模糊查询需要使用${} 取值,与sql拼接,
在使用${}时,即使只有一个参数时也需要使用@Param注解声明参数的key(非String对象参数可以不用声明)
package com.ccl.dao;
import com.ccl.pojo.Member;
import com.ccl.pojo.MemberSearchCondition;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
public interface MemberDao {
//单条件
public Member queryMemberByNickName(String nick);
//多条件
public List searchMember(HashMap params);
//public ListsearchMember(MemberSearchCondition params);
public List searchMemberCity(List cities);
public List searchMemberByNick(@Param("keyWord") String keyWord);
}
映射文件配置
如果参数是String类型,需要parameterType声明参数类型
测试select from members where member_nick like '%${keyWord}%'
@Test
public void testSearchMemberByNick(){
MemberDao memberDao = MyBatisUtil.getMapper(MemberDao.class);
List members = memberDao.searchMemberByNick("花");
for (Member member : members) {
System.out.println(member);
}
}
${} 和 #{}二者区别
${key}表示获取参数,先获取参数的值拼接到sql语句中,再执行sql语句 可能引起sql注入问题
#{key}表示获取参数,先完成sql预编译,预编译完成之后再将获取的参数设置到sql语句中 ,可以避免sql注入问题



