[000-01-018].第05节:MyBatis接收参数值的两种方式

我的后端学习大纲

MyBatis学习大纲


1.MyBatis获取参数值的两种方式

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

  • ${}的本质就是字符串拼接
  • #{}的本质就是占位符赋值能用#{}的时候,就不用${}

2.两种方式的不同点:

  • 1.${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号
  • 2.#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号

3.案例理解两种方式:

1.定义mapper接口,面向接口编程:

在这里插入图片描述

2.映射sql#{}形式:

在这里插入图片描述

3.映射sql-${}形式:

在这里插入图片描述

4.测试:

在这里插入图片描述

5.测试结果是:#{}形式可以正常查询结果${}形式报错提示了


4.选择两种参数处理方式的标准:

4.1.优先使用#{}

1.使用#{}可以避免一些SQL注入的情况

在这里插入图片描述


4.2.传参中具有SQL关键字时:只能使用${}

注意事项:当需要SQL语句的关键字放到SQL语句中,只能使用${}来进行处理,因为${}会把值直接放在了SQL语句中

a.案例举例:

1.定义接口

在这里插入图片描述

2.书写映射的SQL:

在这里插入图片描述

3.测试排序

在这里插入图片描述


4.3.解析的SQL中需要拼接表名称时:使用${}

a.概述:

  • 1.向SQL语句中拼接表名的时候,就需要使用${}:
  • 2.在实际业务中,可能会存在分表存储数据的情况,因为一张表存的话,数据量大,查询效率低,然后我们就可以将这些数据有规律的分表存储,这样在查询的时候效率就比较高了。因为扫描的数据量少了
  • 3.日志表:专门存储日志信息。如过只有t_log一张表,那么就会产生很多log,慢慢的这个表中国的数据就很大很大,那我们如果要解决,就可以每天生成一张表,然后每张表以当天的日期为名称,如t_log_20220401、t_log_20220402、......,然后需要要查询某天的日志信息的时候,就可以直接查t_log_日期那张表就可以了。当前台传给我们具体的日期,后台进行拼接建表查询就可以了

b.编码实现:

1.定义实体类POJO:

在这里插入图片描述

2.新建Logxml文件及其对应的Mapper接口文件:

在这里插入图片描述
在这里插入图片描述

3.接口中定义方法:

在这里插入图片描述

4.映射sql:

在这里插入图片描述

5.测试:

在这里插入图片描述


4.4.批量删除数据:

a. 批量删除:一次可以删除多条数据,SQL有两种写法:

  • 第1种:delete from t_car where id =1 or id=2 or id=3;(动态SQL方式实现)
  • 第2种:deelete from t_car where id in (1,2,3)

b.案例理解:

  • 1.定义接口:

在这里插入图片描述

  • 2.映射sql:如果使用#{}的时候,那么就会拼接的是字符串,这就导致sql报错

在这里插入图片描述
在这里插入图片描述


4.5.模糊查询:

a.SQL语句:

1.模糊查询其sql就是:select * from t_car where brand like '%奔驰%'

b.案例理解:

1.定义接口:

在这里插入图片描述

2.映射sql:

在这里插入图片描述

3.上述方式错误原因分析:上述方式解析后的SQL没有发现占位符号,然后变量值就不知道给谁,导致了错误产生。

在这里插入图片描述

4.解决办法:

在这里插入图片描述

5.测试:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值