1.#{name} and ${name} 不一样 #表名直接转化为字符串,$表示单纯的String替换常用语order by ${},例如 name=测试 则在sql语句里#{name}='测试',${name}=测试 ${}的形式常用语 order by之后 即 在用字段或关键词的地方用,但是由于${}容易被sql注入因此不推荐,尽量用#{}写法
2.parameterType 参数类型如果是int String这种常用变量则不需要写上,如果是自定义Class或Map这种才需要,如果是自定义Class那么直接写#/${字段名},如果是Map则 #/${key值}
3.@Param(value="xxx") xxx即为在mapper里用的名字#/${xxx},使用注解写的名字必须严格按照名字来
4.传递参数的解决方案(能传递多个就能传递单个)
1).单参数 public void find(String name) ------xml文件 #/${xxx} xxx随便写都好用不必须是name
2).多参数 public void find(String name,int id) #{0} #{1} 依照顺序用下标取值,注意这种方法必须用#{index}否则 ${1}会被识别为 1
3). pubilc void find(@Param(value="name") String name,Param(value="id") int id) 注意这种方式无论是传1个或多个参数都必须用value="xxxx" 的值
4). public void find(User user);---xml文件 parameterType="user" 这里xml文件用的user是映射名,然后#/${xxxx}属性名取值,注意属性名要和数据库字段名一致
5). public void find(Map map);---xml文件 parameterType="Map" #/${key值}
网友评论