Spring之Mybatis

目录

Mybatis的原理简易实现

为什么选用Mybatis 

注解形式

 关联SQL和参数化SQL

 方法的返回值(查询的)

​XML形式

文件配置(用来找xml文件的位置)

XML形式下的两种结果映射

插入操作

 修改操作

删除操作


Mybatis的原理简易实现

需要那些依赖

需要的配置文件的内容 

配置好对应的数据url,数据库用户名,数据库密码,Mybatis自动帮我们连接 

使用示范 

  • 将我们数据库的一行数据封装为一个对象 

为什么选用Mybatis 

Mybatis围绕数据库读写的解决方案,解决问题:每次从头写JDBC都太麻烦了

  • 动态拼接SQL
  • ORM,程序员直接把表映射当成类,把表中的记录映射成一个对象,表的结构简单,关系不复杂,使用ORM更方便
  • Mybatis偏向ORM,@Mapper接口(映射器),但是对动态的SQL支持还不错,主要还是因为Mybatis的市场占有率比较高

 Mybatis的基本原理

  • 其基本原理还是对象代理那套
  • 我们作为mybatis的用户需要提供一些信息

1接口:接口中写明了各种各样的方法

2需要告诉mybatis接口的这些方法

  • 需要执行的是哪条SQL(关联SQL)
  • 参数化的SQL,如何匹配方法中的参数和SQL里面的参数(参数匹配)
  • 查询出来的表记录结果,如何和方法的返回值(一般对象)引进映射(结果映射)

3Mybatis根据我们准备的接口+相关的这些准备工作,提供好一个对象的代理,来完成JDBC的整套流程(支持注解或者XML)

注解形式

 关联SQL和参数化SQL

 方法的返回值(查询的)

  • 返回一条记录:User这种,对象其实就是一个有约束的Map ,类似于Map<String,Object>
  • 返回一批记录:List<?>/Set<?>,就类似于List<Map<String,Object>>,Set<....>

 XML形式

文件配置(用来找xml文件的位置)

 XML文件的配置

对应代理类的样式

 代理对象的调用

XML形式下的两种结果映射

  • 在我们上面的例子对象的属性名和我们的数据库中字段名是一样的,所以不需要做结果映射,但是对应不上的时候,就需要我们自己来处理 
  • 让SQL语句去靠近对面的命名,也就是完全给SQL的字段起别名
  • 给mybatis一个映射关系,让mybatis帮我们进行映射
  • 注解也可以进行映射,但是比较麻烦,这里先不学

 方法返回值跟使用注解差不多(就是一个使用注解实现,一个使用XML文件配置实现)

  • 在配置文件中,告诉mybatis,咱的XML路径所在
  • 准备好了XML文件,并且和@Mapper接口建立关系
  •  为接口的每个方法建立 1进行相关方法的绑定和返回类型的确定2要执行的SQL ,参数化SQL(或者关联SQL) 3返回结果映射

直接使用注解的方式,更方便,但是做一些复杂的需求的时候不是很方便,使用XML的方式,做需求的相对跟合适(ResultMap,动态SQL),两者可以配合使用

插入操作

XML形式

  • 首先还是配置Spring的配置文件,能让Spring扫描到这个xml文件
  • XML文件,让我们的XML文件和对应执行sql的代理类连接起来,然后为对应的方法配置SQL语句和相关设置
  • 我们这里新用了一个@Component的注解,表示Spring在运行的时候能够启动这个类的run方法 

注解形式

 修改操作

  •  明确Param的作用,和没有Param修饰的时候,为什么又可以对应

删除操作

  • 也可以用User对象自动去对应,这里就不掩饰了,跟前面的操作是一样的

动态SQL 

实现批量插入

 我们想将userList的数据都插入到数据库,怎么做到呢?

回忆一下纯SQL是如何一次插入多条数据,怎么写?

insert into 表名(属性....) values(属性值...),(属性值...),(属性值...),这里到底有多少个(...),我们是不知道的,这里依赖的就是userList.size,一定是在运行阶段把SQL写完成,所以我们需要动态SQL

批量删除操作

 批量查询

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

库里不会投三分

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

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

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

打赏作者

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

抵扣说明:

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

余额充值