你知道在MyBatis中传参的#{}和${}的区别吗???

发布时间:2023年12月19日

首先我们先将其区别列举出来:

首先演示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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。