一:概述
1.#{}是不能写到字符串中的,如果写到字符串表达字串内容一部分。Mybatis是无法给这个占位符赋值。
${}是可以写到字符串中的,表达取${}中表描述的字段的值。
2.#{} 占位符使用jdbc的预编译处理,可以有防止sql注入。
${}表示取字符的值,有sql注入的可能。
对于模糊查询来讲,如果在映射文件中不使用字符中,使用#{}
二:实例
共有的dao层的接口
1.#{}
@Test
public void testGetPersonByLikeName() {
SqlSession session= MyBatisUtils.getSession();
PersonDao personDao = session.getMapper(PersonDao.class);
Person person=new Person();
person.setName("王%");
List<Person> personList= personDao.getPersonByLikeName(person);
for (Person p : personList) {
System.out.println(p);
}
session.commit();
MyBatisUtils.close(session);
}
2.${}
对于模糊查询来讲,如果在映射文件中的sql语句中含有单引号,此时不能使用#{},只能使用${}
@Test
public void testGetPersonByLikeName() {
SqlSession session= MyBatisUtils.getSession();
PersonDao personDao = session.getMapper(PersonDao.class);
Person person=new Person();
person.setName("王");
List<Person> personList= personDao.getPersonByLikeName(person);
for (Person p : personList) {
System.out.println(p);
}
session.commit();
MyBatisUtils.close(session);
}