mybatis中的#{}和${}的区别

#{}:底层使用PreparedStatement。
特点:先进行SQL语句的编译,然后给SQL语句中的占位符?传值。
${}:底层使用Statement.
特点:先进行SQL语句的拼接,然后在对SQL语句进行编译。

【注意】:优先使用#{},这是原则,避免SQL注入的风险。

【什么时候用${}】:传入Mapper的语句不需要带  '  '  的时候使用,如果需要SQL语句的关键字放到SQL语句中,只能使用${},因为#{}是以值的形式放到SQL语句当中的。

mybatis中的#{}和${}的区别_第1张图片mybatis中的#{}和${}的区别_第2张图片

mybatis中的#{}和${}的区别_第3张图片

批量删除-CarMapper语句:




    
        delete from t_car where id in(${ids})
    

测试程序:

 @Test
    public void testDeleteBatch(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        int i = mapper.deleteBatch("13,19,21");
        System.out.println(i);
    }

输出结果:3

mybatis中的#{}和${}的区别_第4张图片

模糊查询-CarMapper:




    

测试样例:

 @Test
    public void testSelectByBrandLike(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        List cars = mapper.selectByBrandLike("东风");
        cars.forEach(car -> System.out.println(car));
    }

你可能感兴趣的:(mybatis,数据库)