当前位置: 首页 > article >正文

【JavaEE进阶】MyBatis通过XML实现增删改查

目录

🎍前言

🍀配置连接字符串和MyBatis

🍃写持久层代码

​🚩添加mapper接口

🚩添加UserInfoMapper.xml

🚩单元测试

🌲查(Select)

🚩结果映射

🌴增(Insert)

🚩返回自增id

🎄改(Update)

🎋删(Delete)

🌳多表查询

🚩准备工作


🎍前言

Mybatis的开发有两种⽅式:

  • 1. 注解
  • 2. XML

上⾯学习了注解的⽅式,接下来我们学习XML的⽅式

使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能.如果需要实现复杂的SQL功能,建 议使⽤XML来配置映射语句,也就是将SQL语句写在XML配置⽂件中.

MyBatis XML的⽅式需要以下两步:

  • 1. 配置数据库连接字符串和MyBatis
  • 2. 写持久层代码

🍀配置连接字符串和MyBatis

配置XML的路径信息

application.yml⽂件配置内容如下:

classpath对应resources目录,那么xml路径是resources目录下创建mappper,在创建以Mapper.xml文件结尾的文件

🍃写持久层代码

持久层代码分两部分

  1. ⽅法定义Interface
  2. ⽅法实现:XXX.xml

🚩添加mapper接口

数据持久层的接⼝定义:

🚩添加UserInfoMapper.xml

数据持久成的实现,MyBatis的固定xml格式:

🚩单元测试

单元测试类创建如下:

测试类初始代码如下:

接下来我们就可以进行实现增删改查了。

🌲查(Select)

UserInfoXMLMapper接口代码如下:

UserInfoMapper.xml代码如下:

  • id:指方法名
  • resultType:指返回的数据类型,上述使用的List但是并不是,而是上篇文章中定义的实体类(UserInfo),通过全限定类名表示

测试代码如下:

启动测试类如下:

我们上面在进行查询所有内容时,结果显⽰:deleteFlag,updateTime进⾏赋值了

因为数据库与java命名规则不同,数据库的蛇形将转换成驼峰,因为我们在yml配置中设置了驼峰自动转换,所以这里能进行赋值,即这里跟使用注解的方式相同。若想此配置注释掉,则deleteFlag,updateTime打印为null

在上篇文章中说到解决这个办法的方式有三种:

  1. 起别名
  2. 结果映射
  3. 开启驼峰命名

通过起别名的方式我们也可以在xml中,通过SQL语句来进行,和使用注解的SQL语句相同,这里我们就来说说xml结果映射的方式。

🚩结果映射

UserInoXMLMapper接⼝:

添加XML:

测试代码:

执行结果:

小结:在实际开发中,建议把<result></result>写全,比如那些相同的字段和属性(username......)

🌴增(Insert)

UserInoXMLMapper接⼝:

UserInfoMapper.xml实现如下:

测试单元代码如下:

启动测试结果如下:

查询数据库如下:

🚩返回自增id

接⼝定义不变,UserInfoMapper.xml实现设置useGeneratedKeys和keyProperty属性

进行单元测试:

启动测试结果如下:

🎄改(Update)

UserInfoXMLMapper接⼝:

UserInfoMapper.xml实现如下:

测试单元代码如下:

测试单元代码启动:

修改前数据库:

修改之后数据库:

🎋删(Delete)

UserInfoXMLMapper接⼝:

UserInfoMapper.xml实现如下:

测试单元代码如下:

启动元测试代码如下:

删除数据之前:

删除数据之后:

总结:

  • 1. 引入依赖
  • 2. 配置文件中,配置Mapper xml的路径(确保路径正确)
  • 3. xml中的id要和方法名保持一致
  • 4. 不同的操作,使用不同的标签 <select><update><delete><insert>
  • 5. namespace 标识实现的哪个接口,通过全限定类名(包名+类名)
  • 6. 参数传递
  • 7. SQL语句

🌳多表查询

多表查询和单表查询类似,只是SQL不同⽽已;但是在企业开发中,很少使用多表查询,通常情况下,都是使用单表查询来替代。

🚩准备工作

在上篇文章中建了一张用户表

我们再来建⼀张⽂章表,进⾏多表关联查询.⽂章表的uid,对应⽤⼾表的id

数据准备:

对应Model:​​​​​​​

需求:根据uid查询所有文章表信息,以及用户表中的作者和年龄等相关信息

接⼝定义:

编写测试代码:

运行测试代码:SQL语句发生错误​​​​​​​

修改接口:在换行时加上空格

运行测试代码:

如果名称不⼀致的,采⽤ResultMap,或者别名的⽅式解决,和单表查询⼀样

Mybatis 不分单表还是多表,主要就是三部分:SQL,映射关系和实体类

通过映射关系,把SQL运⾏结果和实体类关联起来


http://www.kler.cn/a/553270.html

相关文章:

  • 【从0做项目】Java搜索引擎(8) 停用词表 正则
  • 2015年下半年试题二:论软件系统架构风格
  • C++类与对象深度解析(一):从引用、内联函数到构造析构的编程实践
  • 成人床垫更新关于 SOR/2016-183 和《纺织品贴标和广告法规》的合规
  • JavaAPI常用类型(包装类、BigDecimal类)
  • HarmonyOS学习第1天:走进 HarmonyOS开启万物互联新时代
  • 以教代学——费曼学习法
  • 虚拟机切换BIOS/UEFI
  • Python天梯赛刷题-五分题(上)
  • spring boot知识点1
  • playwright 管理测试集+page页面操作
  • 【优先级队列】任务分配
  • c++进阶———继承
  • 基于ffmpeg+openGL ES实现的视频编辑工具(一)
  • 猿大师办公助手对比其他WebOffice在线编辑Office插件有什么优势
  • 【JAVA工程师从0开始学AI】,第五步:Python类的“七十二变“——当Java的铠甲遇见Python的液态金属
  • 论文笔记:Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling
  • 如何查看一个Linux命令是不是其他命令的别名?
  • 01-零基础入门嵌入式系统
  • HDLBits ——> Building Larger Circuits