【MyBatis】深入解析 MyBatis XML 开发:增删改查操作和方法命名规范、@Param 重命名参数、XML 返回自增主键方法


增删改查操作


接下来,我们来实现一下用户的增加、删除和修改的操作。


**( Insert )**


UserInfoMapper接口:

我们写好UserInfoMapper接口后,自动生成 XML 代码;


UserInfoMapper.xml实现:


增删改查方法命名规范


如果我们在 mapper 接口的方法名没有 insert,select,update,delete 这四个单词,自动生成 XML 代码时,会出现下列提示,来确认我们的方法属于增删改查中的哪一个类型:


上图遇到的问题其实涉及到了 Mybatis 各层方法的命名规范问题:


接下来,我们回到正题,在 XML 文件对应 insertUser() 接口的位置写出如下 SQL:

sql 复制代码
insert into user_info(username, `password`, age) 
values(#{username}, #{password}, #{age})

此时,这条 insert 的 SQL 也涉及到一个传参的问题;

根据上面的 SQL ,我们是把参数 username,password,age 放到对象 userInfo 中了,在 XML 中就要从这个传过去的对象中,获取需要的属性;

  • MyBatis 是先有 XML 开发方式,才有注解开发方式,注解的设计也参考了 XML;
  • 如果我们的参数使用对象,那么 Mybatis 会自动生成按对象属性 username , age , password 这样的参数,而不需要我们通过 userInfo.age 这样的方法来获取属性参数;
  • 我们只需要区分数据库字段,和被 #{}包含着的 java 属性即可

接下来,我们生成测试类方法,并且写出对应逻辑,执行程序,观察日志结果:


刷新数据库的 user_info 表,可以发现,我们已经成功插入数据:


@Param****设置参数名称


如果使用@Param设置参数名称的话,使用方法和注解类似,但是 java 在#{} 属性需要通过从命名对象调用获得:


  • UserInfoMapper接口:

  • UserInfoMapper.xml实现:

生成并执行测试类方法:


观察错误日志,发现程序成功运行:


返回自增****id


接口定义不变,Mapper.xml实现设置useGeneratedKeyskeyProperty属性。


观察打印日志:


我们再来查看表:

通过上述的方法,我们可以拿到数字最大的自增主键;


我们可以顺便回忆以下,使用 @Option 注解是怎么拿到自增 id 的:


**( Update )**


写出 UserInfoMapper接口,并且自动生成 UserInfoMapper.xml 文件,写出对应的 SQL


生成测试类方法并执行:


查看表:


**( Delete )**


UserInfoMapper接口 和 UserInfoMapper.xml实现:



我们再查看表,发现 Id= 15 的记录已经被删除了:


**( Select )**


【MyBatis】深入解析 MyBatis:关于注解和 XML 的 MyBatis 开发方案下字段名不一致的的查询映射解决方案-CSDN博客


开发中使用注解还是 XML 的方式?


关于开发中使用哪种模式这个问题,没有明确答案。仁者见仁智者见智,并没有统一的标准,更多是取决于你的团队或者项目经理、项目负责人。


相关推荐
马尔代夫哈哈哈5 小时前
Spring IoC&DI
数据库·sql
液态不合群7 小时前
[特殊字符] MySQL 覆盖索引详解
数据库·mysql
virus59457 小时前
悟空CRM mybatis-3.5.3-mapper.dtd错误解决方案
java·开发语言·mybatis
计算机毕设VX:Fegn08957 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
瀚高PG实验室7 小时前
PostgreSQL到HighgoDB数据迁移
数据库·postgresql·瀚高数据库
打码人的日常分享8 小时前
智能制造数字化工厂解决方案
数据库·安全·web安全·云计算·制造
没差c8 小时前
springboot集成flyway
java·spring boot·后端
三水不滴8 小时前
Redis 过期删除与内存淘汰机制
数据库·经验分享·redis·笔记·后端·缓存
时艰.8 小时前
Java 并发编程之 CAS 与 Atomic 原子操作类
java·开发语言
编程彩机9 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂