超详细的Mybatis单表增删改查案例


完成品牌数据的增删改查

Snipaste_2024-04-21_11-40-03.png

查询

查询所有数据

跟着上篇入门案例做,然后修改成自己的数据库信息
编写接口方法,在SQL映射文件中编写sql语句
问题当实体类属性名和数据库表列名不一样时,不能自定封装数据,该怎么办?

  1. 起别名

Snipaste_2024-04-21_11-48-59.png

  1. resultMap标签

Snipaste_2024-04-21_11-55-24.png
resultMap标签通常用于属性名和列名不一致或者多表查询

查看详情

根据id查看某个品牌的具体信息
我们在书写sql语句时,会书写占位符
#{key}:在映射文件中作为sql的占位符参数使用
${key}:
1. 在核心配置文件中获取外部配置文件的数据,入门篇的properties文件
2.在映射文件中作为sql的占位符参数使用(注意:需要使用@Param(“参数”)声明参数名)
在这里插入图片描述

#{key}和${key}的区别
#{}:底层是使用PreparedStatement对象,对sql进行预编译,能防止sql注入
${}:底层是使用Statement对象,对sql进行拼接,会有sql注入风险

条件查询

根据状态,企业名称,商品名称查询品牌信息,这里需要多个参数
当方法中传递的参数有2个或以上时,会分不清哪个属性是所对应的字段名
所以就需要在参数前加@Param(“参数”)
Snipaste_2024-04-21_12-31-32.png
sql语句设置多个参数有3种方式

  1. 散装参数,就是上面那种情况,需要加@Param注解
  2. 实体类封装参数,保证sql中的参数和实体类的属性对应上即可
  3. map集合,保证sql中的参数和map集合的键的名称对应上即可

Snipaste_2024-04-21_12-42-52.png
Snipaste_2024-04-21_12-49-58.png
sql语句中 = 可以换成like
换成like之后我以为是模糊查询,但是并不是,想变成模糊查询,有俩种方式:

  1. 以map举例,要么在写map集合时其值输入的时候加入%
  2. 要么在映射文件书写sql时写成concat(‘%’,#{companyname},‘%’)

Snipaste_2024-04-21_14-49-29.png

Snipaste_2024-04-21_14-51-52.png

多条件查询-动态条件

上面哪个条件中,用户可以只输入一个,也可以输入俩个,也可以三个都输入
SQL语句会随着用户的输入或外部条件的变化而变化,我们称之为动态SQL
Snipaste_2024-04-21_15-05-06.png
Snipaste_2024-04-21_15-11-13.png

单条件查询-动态SQL

Snipaste_2024-04-21_15-14-09.png
<where>标签可以自动去除sql语句中where条件里面多余的or或and

添加

主键回填

当一个表中的主键为自增时,第二个表有一个字段所对应的是第一个表中的自增主键,那么在给第二个表添加数据时,第二个表中对应表主键的字段该怎么添加呢?
这时就要用到主键回填,就是第一个表添加的过程中,通过主键回填可以获得第一个表的主键值,然后赋值给第二个表的某个字段
Snipaste_2024-04-21_16-21-12.png
Snipaste_2024-04-21_16-21-59.png

修改

修改部分数据

<set>标签,可以自动除sql语句中多余的逗号
Snipaste_2024-04-21_16-43-08.png

删除

批量删除

Snipaste_2024-04-21_17-04-13.png
标签:遍历容器,获取容器中的元素,拼接sql
<foreach
collection = “集合/数组”
item = “从容器中取出的每一个元素”
separator = “元素之间的分割符号”
open = “以x作为开始”
close = “以x作为结束”>
</foreach>

  • 34
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Zeal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值