【Mybatis】07 万用Map & 模糊查询细节

这应该算一个补充点

在尚硅谷的Java笔记资料有专门的一起万用Map讲解

参考自:https://www.bilibili.com/video/BV1NE411Q7Nx?p=5

 

万用Map

我们可以使用Map作为SQL参数注入的一个特殊手段

 

 

对应的Mapper可以这么写:

参数类型是Map,不要忘记Mybatis官方说的Java常用类型的别名,

虽然写Map也会识别,但是尽量按官方说的标准来使用,这是一种约定

 

SQL注入的参数标识符可以随意定义,只要我们在Map容器中的key要一一对应即可

实际开发并不推荐使用Map作为SQL注入的手段,这样的开发不规范,后续的维护很困难

如果必须使用,一定要备注键名对应说明

 

测试结果成功

    @Test
    public void mapTest(){
        SqlSession sqlSession = MybatisUtil.getSqlSession(true);
        System.out.println(sqlSession);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String,Object> map = new HashMap<String, Object>();

        map.put("name","哈吉咩");
        map.put("password","335577");

        int add = mapper.addUserByMap(map);
        System.out.println(add);
        sqlSession.close();
    }

 

 

模糊查询要注意的实现细节

 

案例,使用模糊查询

 

配置SQL

因为在核心配置中设置了包扫描别名和注解别名,根据官方的描述

注解别名会优先配置的包别名,这里的实体类使用注解的别名

Like 一般要配合通配符 % or _ 一起使用,这里不写死的话,就要在注入的时候写进String

 

忘了Like怎么写?翻回我自己写的笔记

查询时我们就要这样编写

 

为了防止SQL注入攻击,我们不应该这样写模糊SQL的注入,这个注入是危险的

所以就像刚开始提到的一样,应该写死在Mapper配置的SQL标签中

这个百分号必须使用双引号修饰,单引都不行【另外注入值不要空格分开】

 

测试结果

 

 

 

 

posted @ 2020-05-04 10:28  emdzz  阅读(219)  评论(0编辑  收藏  举报