MyBatis之映射文件

MyBatis 真正强大的地方在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。

传入的参数

#和$

MyBatis底层还是Jdbc,而Jdbc在操作数据库传递参数时,有两种方式,一种是使用Statement,还有一种是使用PreparedStatement: 使用statement时,存在SQL注入问题,PreparedStatement则通过预编译解决了SQL注入问题。
在MyBatis中,引入参数有两种方式,一种是使用#,还有一种是使用$,其中,使用#对应了Jdbc种的PreparedStatement,而使用$则对应了Jdbc种的Statement,在MyBatis中推荐使用#

使用#

在映射文件中使用#{}来表示参数
在这里插入图片描述

使用$

可以使用$替换#,注意,如果使用$,需要在Mapper中指定参数名字
在这里插入图片描述
如果接口中的没有对参数使用@Param注解,则会报错
在这里插入图片描述
在这里插入图片描述
添加@Param注解即可
在这里插入图片描述

多个参数

在映射文件中如果存在多个参数的情况,无论参数名是什么都使用#{arg0},#{arg1}…
在这里插入图片描述
也可以使用param
在这里插入图片描述

返回数据

ResultType

对于简单数据类型,例如查询总记录数、查询某一个用户名这一类返回值是一个基本数据类型的,直接写Java中的基本数据类型即可。
如果返回的是一个对象或者集合,并且对象中的属性和查询的字段名是一一对应的,那么resultType也可以直接写一个对象。
在这里插入图片描述

ResultMap

主要用来解决属性名和字段名不一致以及一对多、一对一查询等问题 字段名不一致时,首先可以通过取别名解决,例如Bean的定义如下:
在这里插入图片描述
在这里插入图片描述

解决方式一:

通过别名,这种方式,可以解决问题,但是有缺陷,最大缺陷是不能复用(可以sql片段解决,但是不完美)。
在这里插入图片描述

解决方式二:

使用resultMap
在这里插入图片描述

主键回写

一般情况下,主键有两种生成方式
主键自增长
自定义主键(一般可以使用UUID)
  如果是第二种,主键一般是在Java代码中生成,然后传入数据库执行,如果是第一个主键自增长,此时,Java可能需要知道数据添加成功后的主键。 在MyBatis中,可以通过主键回填来解决这个问题(推荐)。

在这里插入图片描述

selectKey

可以利用MySQL自带的last_insert_id()函数查询刚刚插入的id
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值