美文网首页
Mybatis${value} #{} 区别分析

Mybatis${value} #{} 区别分析

作者: 名字是乱打的 | 来源:发表于2020-03-15 23:11 被阅读0次

    方法1:匹配字符作参数整体传入

    mapper.java

    public interface UserMapper {
        int findCountUsers();
    }
    

    mapper.xml

    <!--根据名字模糊查询用户-->
        <select id="findUserByName" parameterType="string" resultType="user">
            select * from  user  where username like  #{name}
        </select>
    

    test.java

    public class MybatisTest {
    
        private InputStream in;
        private SqlSession sqlSession;
        private UserMapper userMapper;
    
        @Before//用于在测试方法执行之前执行
        public void init() throws Exception {
            //1.读取配置文件,生成字节输入流
            in = Resources.getResourceAsStream("SqlMapperConfig.xml");
            //2.获取SqlSessionFactory
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            //3.获取SqlSession对象
            sqlSession = factory.openSession();
            //4.获取dao的代理对象
            userMapper = sqlSession.getMapper(UserMapper.class);
        }
    
        @After//用于在测试方法执行之后执行
        public void destroy() throws Exception {
            //提交事务
            sqlSession.commit();
            //6.释放资源
            sqlSession.close();
            in.close();
        }
       @Test
        public void findUserByName() {
            List<User> userList = userMapper.findUserByName("%王%");
            for (User u: userList){
                System.out.println(u);
            }
        }
    }
    

    该种方法,我们的sql语句正常写,我们讲%放在了传参里,将匹配字符做一个整体传入

    方法二: \color{red}{固定占位符} ${value}

    其他的不变,只修改mapper.xml

     <!--根据名字模糊查询用户方法二 固定占位符-->
        <select id="findUserByNameMethods2" parameterType="string" resultType="user">
            select * from  user  where username like  '${value}'
        </select>
    

    提示 :
    这里`${value}` 一点不能改,一点不能少
    原因:
    源码已指出,这里是通过固定的value作为key

    3 #{}与${}的区别

    如下图,展示了上面两种模糊查询结合第三项的结果

    而不用占位符可能导致的sql注入漏洞大家都知道.

    相关文章

      网友评论

          本文标题:Mybatis${value} #{} 区别分析

          本文链接:https://www.haomeiwen.com/subject/ewnbehtx.html