【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 小时前
SpringBoot分布式项目订单管理实战:Mybatis最佳实践全解
spring boot·分布式·mybatis
要天天开心啊5 小时前
MyBatis第二天笔记
笔记·tomcat·mybatis
于过11 小时前
基于Mybatis的SQL模版解析
后端·mybatis
小刘|13 小时前
Mybatis_Plus中的常用注解
java·spring·mybatis
小钊(求职中)16 小时前
七种分布式ID生成方式详细介绍--Redis、雪花算法、号段模式以及美团Leaf 等
java·spring boot·分布式·spring·mybatis
bysjlwdx17 小时前
deploy myEclipse j2ee project to server没反应
ide·java-ee·myeclipse
luoluoal18 小时前
java项目之基于ssm的医院门诊挂号系统(源码+文档)
java·mysql·mybatis·ssm·源码
shaoweijava1 天前
基于SpringBoot的美食设计网站(源码+数据库)
数据库·spring boot·mysql·mybatis
三氧化真1 天前
使用FastExcel时的单个和批量插入的问题
java·数据库·mybatis
努力也学不会java1 天前
【MyBatis】MyBatis 操作数据库
java·数据库·spring boot·spring·java-ee·intellij-idea·mybatis