首先我们先将其区别列举出来:
首先演示sql注入:
基于上两篇博客的准备工作,继续开发: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注入*/@Testpublic 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类型转换:
单个简单类型参数:
#{}的使用:
${}的使用: