一:Mybatis的两个内置参数
两个内置参数: _paramete 和 _databaseId
_paramete参数:代表接口方法传过来的全部参数封装为Map集合 当接口方法参数列表只有一个:#{ _paramete} 就可以取到该值 当接口方法参数列表多个参数: #{ _paramete.key} key是传入参数的名称 或者 #{param1} #{param2} #{param3} .... #{paramN}取值 _databaseId参数: 如果配置了databaseIdProvider标签 _databaseId就是代表当前数据库的别名
二、各种参数的处理
1、单个参数
如果接口方法传入的只有一个参数,在映射文件得到参数的方法???
1、使用 #{_paramete} 内置参数处理 2、使用 #{参数名} ,单个参数名字可以随便取 3、如果该单个参数是一个自定义类,直接写 #{属性}
2、多个参数
如果接口方法传入的有多个参数,在映射文件得到参数的方法???
1、 使用_paramete内置对象:#{ _paramete.key} 或者#{param1} #{param2} } .... #{paramN}取值 2、把所有的参数封装为一个Map集合或者Bean中 ,只传入这个类 3、在接口方法参数前:@Param("引用名称") --> #{引用名称} 4、如果想获得某个参数的属性,可以通过 . 的形式
3、传入参数是Collection或者数组怎么取值
如果接口方法传入list、int[]、set,在映射文件得到参数的方法???
该参数的key: Collection: key为 collection或者list 数组的key为: array #{collection[0]} #{list[0]} #{array[0]}
三、Mybatis中的#{} 与${} 取值
※
1、#{ }或者 ${ } 都可以得到参数的值 2、#{}防止SQL注入,是经过ps处理的,以占位符的方式 3、${}以 字符串拼接 的方式设置sql的,存在注入问题 4、${}在写sql时可以放到字符串里面 如:"%${name}%" ,但是#{}不可以,但是可以使用concat函数拼接