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

目录

🎍前言

🍀配置连接字符串和MyBatis

🍃写持久层代码

​🚩添加mapper接口

🚩添加UserInfoMapper.xml

🚩单元测试

🌲查(Select)

🚩结果映射

[🌴增(Insert)](#🌴增(Insert))

🚩返回自增id

🎄改(Update)

🎋删(Delete)

🌳多表查询

🚩准备工作


🎍前言

Mybatis的开发有两种⽅式:

    1. 注解
    1. XML

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

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

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

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

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

🌳多表查询

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

🚩准备工作

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

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

数据准备:

对应Model:​​​​​​​

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

接⼝定义:

编写测试代码:

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

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

运行测试代码:

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

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

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

相关推荐
前网易架构师-高司机5 天前
带标注的驾驶员安全带识别数据集,识别率99.5%,可识别有无系安全带,支持yolo,coco json,pascal voc xml格式
xml·yolo·数据集·交通·安全带
莫寒清5 天前
Mybatis的插件原理
面试·mybatis
逍遥德5 天前
Maven教程.01- settings.xml 文件<profile>使用详解
xml·java·maven
莫寒清5 天前
MyBatis 中动态 SQL 的作用
面试·mybatis
吹晚风吧5 天前
实现一个mybatis插件,方便在开发中清楚的看出sql的执行及执行耗时
java·sql·mybatis
码云数智-大飞5 天前
像写 SQL 一样搜索:dbVisitor 如何用 MyBatis 范式颠覆 ElasticSearch 开发
sql·elasticsearch·mybatis
逍遥德5 天前
Maven教程.03-如何阅读pom.xml文件
xml·java·后端·maven
Mr__Miss6 天前
mybatisPlus分页组件3.5.15版本报错解决方案
mybatis
无名-CODING6 天前
MyBatis中#{}和${}完全指南:从原理到实战
mybatis
松叶似针6 天前
Flutter三方库适配OpenHarmony【doc_text】— .docx 解析全流程:从 ZIP 解压到 XML 提取
xml·flutter·harmonyos