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

相关推荐
从琳开始9891 小时前
从Socket到UDP回显服务器:Java网络编程完整指南
java·网络·网络协议·udp·java-ee
CoderYanger1 天前
Java EE 进阶:5. Spring IoC&DI(第二弹):Spring IoC
java·开发语言·spring boot·spring·面试·职场和发展·java-ee
正儿八经的少年1 天前
MyBatis 一对一、一对多 SQL
数据库·sql·mybatis
SEO_juper1 天前
Go 站点地图生成器:从首页爬全站,一键生成 sitemap.xml
xml·开发语言·人工智能·golang·node.js·seo·外贸独立站
paopaokaka_luck2 天前
社区服务平台(加权协同过滤推荐、Jieba中文词频分析、WebSocket实时聊天、求助处理闭环、 活动积分闭环、ECharts多维分析)
java·前端·spring boot·mysql·echarts·mybatis
CoderYanger3 天前
Java EE 进阶:5. Spring IoC&DI(第一弹):Spring IoC
java·开发语言·spring boot·spring·面试·职场和发展·java-ee
可爱系程序猿3 天前
XML 导入失败并指向 msxml6.dll:用最小样本区分解析错误与组件加载
xml·程序人生·电脑
我命由我123453 天前
6-3.Python 异常处理 - 异常处理进阶(else 块与 finally 块、异常传递、自定义异常)
开发语言·前端·数据库·后端·python·学习·java-ee
代码不停3 天前
MyBatis操作数据库
数据库·mybatis
wno7043 天前
Spring Boot中JdbcTemplate与Mybatis使用PostgreSQL
spring boot·postgresql·mybatis