首先我们先将其区别列举出来:
基于上两篇博客的准备工作,继续开发:MyBatis的删除、修改、插入操作!!!-CSDN博客
#{}的使用
?UserMapper.java:
User testLogin(User user);
UserMapper.xml:
<select id="testLogin" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">
select * from user where username=#{username} and password=#{password}
</select>
测试类:
/**
* 测试sql注入
*/
@Test
public void testLogin(){
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User userInfo = new User();
userInfo.setUsername("李星云");
userInfo.setPassword("111");
User user = userMapper.testLogin(userInfo);
System.out.println(user);
}
结果:
?${}的使用:
?只需改动UserMapper.xml文件在的代码即可:
<select id="testLogin" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">
select * from user where username='${username}' #' and password='${password}'
</select>
我们将这条sql语句复制到MySQL的管理工具中看看效果:
?这时我们运行程序,看能不能访问到数据:
很显然,我们成功访问到了数据,假设这是真正的登录页面,我们只需知道账号就可登录成功,那么显然${}在开发中并不能满足我们的需要。
底层区别:
?jdk类型转换:
单个简单类型参数:
#{}的使用:
?${}的使用:
?