MyBatis的基本使用
创始人
2024-05-31 03:16:16
0

MyBatis

为啥MyBatis会使用xml

在一个程序中,若需要操作数据表,那么 SQL 语句有两种存放方式:1. 放到 Java 类里面(这个就存在大量的字符串拼接,还有占位符需要处理-----JDBC);2:放到 xml 中(但是 xml 无法被 Java 代码调用的,所以就在 Java代码和 xml 中加了一层 对xml中方法的接口声明)

image-20230201102331856

MyBatis的基本使用

MyBatis 就是一个ORM(对象关系映射)框架,将数据库中的每张表映射成Java中的类,以此可以使用OOP思想来操作数据表了

程序启动时,@Mapper注解会根据配置文件里配置的mybatis路径+命名来讲接口与xml文件进行关联,并将@Mapper注解修饰的接口放入Spring中

配置数据库连接 + MyBatis 的 xml 存放路径 + 命名格式(xml中存放的就是数据表的操作语句)

image-20230115144955108

@Mapper

@Mapper注解比较特殊,虽然是修饰接口的,但是也能将其放入Spring中,然后使用@Autowired进行注入,并直接当作对象来调用其中的方法

image-20230201133703826

查询

  1. 创建一个接口

    image-20230201103355657

  2. 新建一个 xml 文件,来实现接口中的方法

    image-20230201104340105

带参数查询

image-20230201134800624

添加

默认返回受影响的行数,若需要返回自增主键的ID,需要给 Insert 设置参数 useGeneratedKeys=“true” keyProperty=“id”;将会把自增主键的值放入id列,直接对象的 getId 即可拿到

image-20230201152237037

image-20230201152246021

删除

image-20230201153629458

修改

image-20230201154448489

参数传递中#{} 与 ${}的区别

  • #{}:预编译处理(MyBatis 在处理 #{} 的时候,会将其替换为 ? ,底层还是使用 PrepareStatement 的 set 方法进行填充的)

  • ${}:直接替换(在判断字符串的时候,就会出问题,除非自己手动添加 引号)这个可以用在参数为关键字的时候,如:线上购物的时候,可以选择价格由低到高,由高到低;这个就需要传递 SQL 关键字了,desc / asc;就可以采用这种方式

    image-20230202102809273

SQL注入问题

${} 就存在 SQL 注入问题,它是直接 数值替换的

#{} 就不会存在SQL注入问题,它采用的就是 占位符的方式

image-20230202133715758

image-20230202133830202

like模糊查询

使用 MySQL 内置函数 concat

image-20230214152920290

resultMap

当数据表中的字段名与 类 中的属性名不同时,可以用 resultMap标签来进行映射(只要有一个字段不同,那么所有的字段都需要写,不然多表查询会存在问题)

image-20230202135632869

多表查询

一个讨巧的办法:在一个主要的实体类中,加另外需要的属性名

如下:显示文章表的所有信息(uid 是一个外键,表示用户表的id),需要讲 作者名字 显示出来

image-20230202141619405

动态SQL

主要用于处理表单的必填和选填的时候

当前端没有传递参数的时候,对应的字段就不应该插入值,这就可以用动态SQL来解决了(不需要写多条SQL语句,根据不同的情况调用不同的SQL语句,动态SQl一条语句解决全部的情况)

image-20230214153847474

if 标签

用作某个字段是否拼接上

trim标签

参数:prefix 前缀(语句最前面加的东西) suffix 后缀(语句最后面加的东西)

​ prefixOverrides(将最前面包含的东西去掉) suffixOverrides(将最后面包含的东西去掉)

image-20230214155950459

where标签

在指定字段进行筛选的时候,就可以用where标签(如:若输入了姓名来查就表示需要where条件;什么都没有输入的情况下,就表示查询所有,就不要where条件)虽然直接加where 1 = 1也可以解决,但并不直观

where 标签默认会去掉筛选条件最前面的 and

image-20230214161256861

相当于 标签

image-20230214161551274

set 标签

主要用于 update 语句中

作用:

  1. 添加 set 关键字
  2. 去掉最后一个逗号

image-20230214162001979

foreach标签

为了处理批量删除的情况,如果前端传过来的是一个集合,需要进行批量操作,就用foreach

collections 就是 接口中的参数名 separator 就是分隔符

item 就是遍历的当前对象 就相当于把 list 构造成:(1,2,3)的形式

进行批量操作,就用foreach

collections 就是 接口中的参数名 separator 就是分隔符

item 就是遍历的当前对象 就相当于把 list 构造成:(1,2,3)的形式

image-20230214163628632

相关内容

热门资讯

九年级政治复习提纲人教版(精... 九年级政治复习提纲人教版 篇一政治复习提纲一、马克思主义政治经济学基本原理1. 劳动价值论:价值的决...
那个她不要忘记,我会陪在你身... 那个她不要忘记,我会陪在你身边初三作文 篇一那个她不要忘记,我会陪在你身边初三作文初三,是一个特殊的...
初三下学期作文【优选4篇】 初三下学期作文 篇一奋斗的力量人生就像一场马拉松,我们每个人都在为了梦想而奋斗。而初三下学期,更是我...
初三感动为话题的作文400字... 初三感动为话题的作文400字 篇一初三生活即将结束,回想起这三年的时光,我心中涌上了无数的感动。这些...
一路沧桑,一路春光初三作文6... 篇一:一路沧桑,一路春光初三作文650字第一篇内容:一路沧桑初三,是人生中一个重要的转折点,也是一个...
九年级体育作文【推荐6篇】 九年级体育作文 篇一:我的体育课经历九年级的体育课是我最期待的一门课程。在这门课上,我可以锻炼身体,...
初三我们来了400字作文【优... 初三我们来了400字作文 篇一初三我们来了初三,对于我们来说是一个重要而紧张的时刻。这是我们人生中的...
废电池的危害初三作文【经典3... 废电池的危害初三作文 篇一废电池的危害初三作文随着科技的进步和人们生活水平的提高,电子产品在我们的日...
初三数学复习思路(实用3篇) 初三数学复习思路 篇一初中数学是一个非常重要的学科,它不仅是学习其他学科的基础,而且在以后的学习和工...
艾草香初三作文【优选3篇】 艾草香初三作文 篇一艾草香初三作文 艾草香初三作文 篇二艾草香初三作文篇一:艾草香初三作文初三的生活...
伟大与努力初三作文【经典3篇... 伟大与努力初三作文 篇一:奋斗的意义伟大与努力初三作文 篇二:追逐伟大的梦想伟大与努力初三作文 篇三...
不忘初心努力拼搏初三作文85... 不忘初心努力拼搏初三作文850字 篇一初三,对于每一个学生来说都是一个重要的年级。这一年,我们既要面...
三月三上巳节习俗【最新3篇】 三月三上巳节习俗 篇一三月三上巳节是中国传统的节日,也是一个重要的祭祀节日。它起源于古代中国的巫师文...
我初三作文【优秀6篇】 我初三作文 篇一我的初三生活初三,对于每个初中生来说,都是一个非常重要的一年。也许有些人会觉得初三只...
旅游作文(优秀3篇) 旅游作文 篇一探索自然奇观的旅程我最近参加了一次令人难忘的旅行,去了一个被誉为自然奇观的地方。这个地...
关于做文明人的作文初三(优选... 关于做文明人的作文初三 篇一作文题目:文明礼仪,从我做起文明是一种素养,礼仪是一种传统,做文明人是每...
初三作文训练(实用6篇) 初三作文训练 篇一:我的暑假计划暑假即将来临,作为初三的学生,我对这个暑假充满了期待。虽然暑假是休息...
丢作文600字初三(优选6篇... 丢作文600字初三 篇一寻找失落的灵感初三的作文,对于我来说,是一道难以逾越的坎。一直以来,我都能轻...
遇见未来的人初三优秀作文65... 篇一:遇见未来的人在一个晴朗的早晨,我骑着自行车沿着小路向学校的方向驶去。突然,我的眼前出现了一个奇...
我的初三我的梦作文600字【... 我的初三我的梦作文600字 篇一初三是我人生中非常重要的一年,也是我梦想开始逐渐明确的一年。在这一年...