关于ibatis的@Param的一些复习

在SSM框架中,@Param主要是用来注解dao类中方法的参数,便于在对应的dao.xml文件中引用,如:在userDAO类中有这么一个函数:

public User selectByNameAndPwd(@Param("userName") String name,@Param("Password") String )

在其对应的dao.xml文件中的查询语句则为:

select  username,password from user where username=${userName} and  password=${Password}

注:在不使用@Param注解的时候,函数的参数只能为一个,并且在查询语句取值时只能用#{},且其所属的类必须为Javabean(实体类),而使用@Param注解则可以使用多个参数,在查询语句中使用时可以使用#{}或者${}

 

不使用@Param注解

public int getUsersDetail(User user);




 <!--这里直接引用对象属性即可,不需要对象.属性的方式--> 
<select id="getUserDetail" statementType="CALLABLE" resultMap="baseMap">
          Exec WebApi_Get_CustomerList #{userid}
</select>

使用的时候不用在xml中继续使用parameterType=“XXXXXX”  了

在mybaitis的dao层使用。在mybatis中我们常常要使用到多个对象参数,但是在xml中的parameterType往往只能指定一个参数类型。为了解决这个问题,我们可以在dao的接口中使用@param注解,多个参数可以使用多个@param注解。这样就可以将参数传入mybatis的sql语句中了。使用的时候不用在xml中继续使用parameterType=“XXXXXX”  了。

 

然后讲讲 ${}和#{}

#{},和 ${}传参的区别如下:
使用bai#传入参数是,sql语句解du析是会加上"",当成zhi字符串来解析,这样相比于$的好处是dao比较明显对的吧,#{}传参能防止sql注入,如果你传入的参数为 单引号',那么如果使用${},这种方式 那么是会报错的
另外一种场景是,如果要做动态的排序,比如 order by column,这个时候务必要用${}
select * from table order by 'name' ,这样是没用
目前来看,能用#就不要用$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值