你知道在MyBatis中传参的#{}和${}的区别吗???
2023-12-19 22:15:18
首先我们先将其区别列举出来:
首先演示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注入
*/
@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类型转换:
单个简单类型参数:
#{}的使用:
?${}的使用:
?
文章来源:https://blog.csdn.net/qq_64847107/article/details/135093199
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!