MyBatis获取参数值

MyBatis获取参数值的两种方式:${}、#{}

                ${}:本质就是字符串拼接,可能造成SQL注入,要自己手动添加单引号。

                #{}:本质是占位符赋值,相当于JDBC中的?,可以自动添加单引号。

MyBatis获取参数值的各种情况

        字面量:

                字面量就是它本身,比如:字面量1,就是1它本身,string类型的字面量“ABC”,就是ABC本身,int i,或者string s,那么i和s就是变量,是不确定的值。

        1. Mapper接口种方法的参数是单个字面量类型

                可以通过${}和#{}来获取,{}中的名称可以是任意的,但是${}要自己添加单引号

                Mapper接口

                Mapper.xml

                测试 

                结果

                SQL语句:select * from `user` where name = 'coco'

         使用了  select * from `user` where name = #{username} 的结果如下

         SQL语句:select * from `user` where name = ?

        2. Mapper接口种方法的参数是多个字面量类型

                MyBatis会自动将这些参数放在一个map集合中,以两种方式存储

                         以arg0,arg1...为键,以参数为值;

                         以param1,param2...为键,以参数为值;

                因此只需要通过${}和#{}访问map集合的键就可以获取相对应的值,${}需要手动加单引号

                参数有多个的时候用  arg0、arg1、...或param1、param2、...来获取map集合中的对应值,按传参的顺序排,可以混着用

        3. Mapper接口种方法的参数是Map集合类型

                若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合

                 map集合的键的名字可以自己定,而情况2是mybatis定的

                将这些数据放在map中, 只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${}需要手动加单引号

        4. Mapper接口种方法的参数是实体类类型

                可以使用${}和#{},通过访问实体类对象中的属性名获取属性值

                注意${}需要手动加单引号

                属性和属性名:

                        将set和get方法名中的set和get去掉,将剩下的首字母变成小写就是属性名

                        因为有一些成员变量中没有但是有对应的set和get方法

        5. 使用@Param标识参数

                (使用@param注解命名参数 @Param("id")相当于 @Param(value="id"))

                mybatis会将参数放在map集合中,以两种方式存储

                         以@Param的值为键,以参数为值

                         以param1,param2...为键,以参数为值

                        因此只需要通过${}和#{}访问map集合的键就可以获取相对应的值,${}需要手动加单引号

                相比于第三种就省去了自己手动创建Map集合的过程了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值