【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标签中
这个百分号必须使用双引号修饰,单引都不行【另外注入值不要空格分开】
测试结果