mybatis中#{}和${}的区别与用法

来源:互联网 发布:php三级分销思路 编辑:程序博客网 时间:2024/06/05 02:34

mybatis中#{}和${}的区别与用法

  • mybatis中和的区别与用法
    • 两者区别
    • 两者用法
    • 测试类

两者区别

#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换#{}可以有效防止sql注入。 如果parameterType传输单个简单类型值或是属性值,#{}括号中可以是value或其它名称。

${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, 如果parameterType传输单个简单类型值,${}括号中只能是value。

两者用法

#{} 用法

    <select id="findUserByUsername" parameterType="String" resultType="com.scarecrow.javabean.User">    select * from user where username like "%"#{v}"%"    </select>

${}用法

<select id="findUserByUsername" parameterType="String" resultType="com.scarecrow.javabean.User">    select * from user where username like "%${value}%"    </select>

测试类

@Test    public void run2() throws IOException{        InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        SqlSession sqlSession = sqlSessionFactory.openSession();        UserMapper mapper = sqlSession.getMapper(UserMapper.class);        List<User> users = mapper.findUserByUsername("五");        for(User user2 : users){            System.out.println(user2);        }    }