SpringBoot整合Mybatis方式2:使用注解方式整合Mybatis
创始人
2024-02-16 01:28:27
0

SpringBoot整合Mybatis

  • 简介
  • SpringBoot整合Mybatis方式2:使用注解方式整合Mybatis
    • 1.先用idea创建一个添加mybatis需要的相关依赖的工程。
    • 2.准备数据库和表
    • 3.创建表映射类
    • 4.创建mapper代理接口
    • 5.创建Service层和Service的实现层
    • 6.创建控制层(也就是web层)
    • 7.添加配置信息
      • 7.1添加数据库链接信息和设置mybatis中的别名信息
      • 7.2在应用程序入口类上配置@MapperScan扫描mapper接口文件所在包!
    • 8.运行
  • 扩展1(增删改查)
  • 扩展2(注解方式一对一 @One)
    • 补充1:xml的方式组装映射字段与数据库字段
    • 补充2:javaType与ofType的区别
  • 扩展3(注解方式一对多查询 @Many)

简介

在 Spring+SpringMVC 中整合 MyBatis 步骤需要在配置文件里配置多个 Bean,比如MapperScannerConfigurer,SqlSessionFactoryBean 等,步骤还是比较复杂的,Spring Boot 中对此做了进一步的简化,使 MyBatis 基本上可以做到开箱即用,也就是搭建SSM环境 。
Spring Boot中整合mybatis,主要有两种方式:①xml文件;②注解方式

SpringBoot整合Mybatis方式2:使用注解方式整合Mybatis

方式2和方式1相比,主要是mapper文件的区别,所以除了第4和第7步有点不一样以外,其它步骤相同。

1.先用idea创建一个添加mybatis需要的相关依赖的工程。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建出来的项目结构如下:
在这里插入图片描述

2.准备数据库和表

在这里插入图片描述

3.创建表映射类

之前创建表映射类时,我们是手动添加set,get,toString方法和构造方法等,比如像这样
在这里插入图片描述
现在,我们可以添加一个Lombok 依赖来简化这些代码
在这里插入图片描述
添加需要的注解,通过注解来实现自动帮我们加入get,set,构造方法等。

4.创建mapper代理接口

注意:不需要创建UsersMapper.xml文件,只需要创建UsersMapper接口就可以,将之前xml文件中的sql语句通过注解的方式写到接口中。
在这里插入图片描述

5.创建Service层和Service的实现层

在这里插入图片描述
在这里插入图片描述

6.创建控制层(也就是web层)

在这里插入图片描述

7.添加配置信息

7.1添加数据库链接信息和设置mybatis中的别名信息

数据源配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.username=root 
spring.datasource.password=root 
spring.datasource.url=jdbc:mysql://localhost:3306/boot?characterEncoding=utf8&serverTimezone=GMT%2B8mybatis配置
mybatis.type-aliases-package=com.test.ssm.pojo ```

7.2在应用程序入口类上配置@MapperScan扫描mapper接口文件所在包!

在这里插入图片描述

8.运行

在这里插入图片描述
在这里插入图片描述

扩展1(增删改查)

(可以删去UserMapper.xml)
在这里插入图片描述
在这里插入图片描述

扩展2(注解方式一对一 @One)

一个人拥有一张金卡或银卡
表一:id uname pwd card_id
表二:id category(1 金卡、2 银卡)
表一的card_id与表二的id对应,card定义为对象 (private Card card)

当我们创建的表映射类中的映射字段与数据库中的字段不一致时(如映射字段为uname,数据库字段为u_name),需要我们自己组装。(xml方式中通过resultMap,注解方式中通过@Result)
如果不进行组装,那么进行反射的时候,无法通过u_name找到对应的名字。

@Result({@Result(property = "id",column = "id " , id = true),@Result(property = "uname",column = "u_name " ),   // 可以使用javaType=""后可以转换一下数据类型@Result(property = "pwd",column = "pwd " )@Result(property = "card",column = "card_id " ,one=@one(select=com.tst.ssm.mapper.CardMapper.selectCardById))
})

UserMapper.java
在这里插入图片描述
在这里插入图片描述
CardMapper.java
在这里插入图片描述
视图层(user.card.category )
在这里插入图片描述

补充1:xml的方式组装映射字段与数据库字段

// association表示单个对象(一对一、多对一)
// association中属性一定要设置javaType,用来指定对象类型
// 代表一个学生有一个班级
// collection表示集合(一对多)


补充2:javaType与ofType的区别

共同点:JavaType和ofType都是用来指定对象类型的。
不同点:JavaType是用来指定pojo中属性的类型,而ofType指定的是映射到list集合属性中pojo的类型。
javaType是< association >(一对一/多对一)中的属性,用于指定从表方的引用实体类。
ofType 是< collection > (用于建立一对多中集合属性的对应关系)的属性,用于指定集合元素的数据类型。

扩展3(注解方式一对多查询 @Many)

一个用户对应多个地址
表一:id uname pwd card_id addressList
表二:id detail(1 肥东、2 肥西、3 长丰、4 瑶海) userid(1 1 1 2)
表一的id与表二的userid对应,addressList定义为集合 (private List

addressList;)

User.class(地址不止一个,使用集合)
在这里插入图片描述
AddressMap.java
在这里插入图片描述
UsersMapper.java
在这里插入图片描述
在这里插入图片描述
视图层
在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...