MyBatis查询接收数据 批量删除
创始人
2024-05-12 00:57:59

MyBatis查询接收数据 批量删除

  • 查询出的数据只有一条
    • 通过实体类对象接收
    • 通过List集合接收
    • 通过map集合接收
  • 查询出的数据有多条
    • 通过list集合接收
    • 通过map类型的list集合接收
    • @MapKey注解
  • 模糊查询
  • 批量删除
  • ${}和#{}的区别


查询出的数据只有一条

通过实体类对象接收

mapper接口代码:

在这里插入图片描述

映射文件:

    

通过List集合接收

mapper接口代码:

在这里插入图片描述

映射文件:

 

resultType属性里面此时是想将接收过来的数据库取来的字段转换成对应实体类的名称,但既然要转换成实体类对象,那肯定是有前提的,这个前提就是字段名与实体类属性一一对应


那么问题来了?
如果此时我们没有创建实体类来接收数据,那么接收数据该由谁来完成呢

通过map集合接收

mapper接口代码:

在这里插入图片描述

映射文件:

    

查询出的数据有多条

通过list集合接收

mapper接口代码:

在这里插入图片描述

映射文件:


通过map类型的list集合接收

mapper接口代码:

在这里插入图片描述

映射文件:

 

看到这里不知道大家有没有发现什么问题
在这里插入图片描述
我们明明没有在配置文件里面给Map类的全类名设置别名,为什么可以直接给这写成map呢?
MyBatis中设置了默认的类型别名

java.lang.Integer-->int,integer
int-->_int,_Integer
Map-->map
String-->string

@MapKey注解

如果接受多个数据时,我们没有实体类也不想用list集合
可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中

mapper接口:

在这里插入图片描述

映射文件:

  

模糊查询

mapper接口:

在这里插入图片描述

映射文件:

    

批量删除

mapper接口:

在这里插入图片描述

映射文件:

    delete from t_user where id in(${ids})

${}和#{}的区别

#{}相当于事先给sql语句形成占位符,之后将占位符拿参数依次替换掉占位符
${}就可以想象成我们最开始学JDBC的时候sql语句拼接一样
所以为了防止SQL注入,一般都会选择#{}
但在模糊查询和批量删除的时候,却选择的时在这里插入图片描述
因为
在这里插入图片描述
如果是#{}那sql语句会先变成’%?%‘,但在?被’‘包裹着,所以就起不到占位符的作用了
在这里插入图片描述
如果是#{}那么value值就会变为’1,2,3’,不符合参数条件

相关内容

热门资讯

原创 什... 凌晨四点半,某职业学院烹饪专业的学生王恒凯已经开始练习刀工。不远处,实习餐厅的后厨里,一台人形机器人...
美国为何迫切想要格陵兰岛?格陵... 近日,美国总统特朗普再次将注意力转向他2025年上任以来多次扬言要得到的格陵兰岛。美国白宫新闻秘书莱...
学校最新或2023(历届)联欢... 学校联欢晚会贺词尊敬的各位领导、各位来宾、老师们、同学们:大家好!爆竹声声辞旧岁,载歌载舞贺新,在这...
决战四季度动员大会讲话稿 大干... 决战四季度动员大会讲话稿要巩固取得的成绩,始终咬定目标、坚定信心不动摇;正视存在问题,切实增强忧患意...
在生态茶产业工作会议上的讲话 ... 在生态茶产业工作会议上的讲话同志们:   党的xx大明确提出,建设生态文明是实现全面建设小康社会奋斗...