参数传递方式
参数传递
1>使用@pramas注解指明参数名称,在xml文件中的sql语句传参{}里面就写参数名称就行了,这里会把名称和值封装成一个map,取值的时候放入名称就可以传入实参了
public Student login(@prama(“username”) string username,@prama(“pwd”) string pwd)
2>单个参数传参: 如果你的方法中只需要传一个参数,那么在xml文件中的{}里面只需要写说value就可以了
select * from student where stuid=#{value};
3>如果你的方法传入的是一个javabean对象,那么sql语句中{}直接写上javabean的属性名
select * from student where stuid=#{stuid}
4>如果你要传递多个参数但是又不想使用@prama注解,你可以在传参的时候写上参数的下标,假设你要传username和pwd
seelct * from student where username={0} and pwd=#{1}
这里你可以看成一个数组取值的过程,和数组差不多
#{}和${}传参的区别
1>#{}传递参数和${}传递参数的共同点是都可以获取map的值pojo中的值
2>#{}是以预编译的方式去传参,可以很好地防止sql注入
3>
是
直
接
取
出
参
数
的
值
去
进
行
s
q
l
语
句
的
拼
接
,
会
产
生
安
全
问
题
,
但
是
如
果
原
生
j
d
b
c
不
正
常
占
位
符
的
情
况
下
我
们
可
以
用
{}是直接取出参数的值去进行sql语句的拼接,会产生安全问题,但是如果原生jdbc不正常占位符的情况下我们可以用
是直接取出参数的值去进行sql语句的拼接,会产生安全问题,但是如果原生jdbc不正常占位符的情况下我们可以用{}传参,比如说分表,排序,按年份来分
4>举例
select * from student where stuiid=${id} and username=#{username};
preparing:select * from student where id=2 and username=?