【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运⾏结果和实体类关联起来

相关推荐
2025年一定要上岸9 小时前
JAVA EE初阶 - 预备知识(三)
java·java-ee
初见_Dream12 小时前
Retrofit+OkHttp+ViewModel
xml·okhttp·retrofit
ONEPEICE-ing12 小时前
快速入门Springboot+vue——MybatisPlus多表查询及分页查询
前端·vue.js·spring boot·mybatis
wolf犭良14 小时前
14、《SpringBoot+MyBatis集成(2)——进阶配置XML与注解的灵活运用》
xml·spring boot·mybatis
seabirdssss14 小时前
重构测试项目为spring+springMVC+Mybatis框架
java·spring·重构·mvc·mybatis
火烧屁屁啦16 小时前
【JavaEE进阶】MyBatis之动态SQL
java·java-ee·mybatis
5xidixi17 小时前
JAVA EE初阶 JVM
java·jvm·java-ee
李长渊哦17 小时前
学习 `@PreDestroy`:Java EE/Jakarta EE 生命周期回调
java·学习·java-ee
I_Am_Me_17 小时前
【JavaEE进阶】Spring Web MVC⼊⻔
前端·spring·java-ee
嘵奇18 小时前
MyBatis框架七:缓存
缓存·mybatis