MyBatis---初阶

一、MyBatis作用

是一种更简单的操作和读取数据库的工具。

二、MyBatis准备工作

1、引入依赖
2、配置Mybatis(数据库连接信息)
3、定义接口

@Mapper注解是MyBatis中用来标识接口为Mapper接口的注解。在MyBatis中,Mapper接口是用来定义SQL映射的接口,通过@Mapper注解标识的接口会被MyBatis自动扫描并注册为Mapper接口,从而可以在MyBatis的配置文件中进行配置和使用。

4、准备数据

建表规范:字段全部小写,单词之间使用_分割;必须有id、create_time、update_time3个字段。

5、创建对应的实体类

三、操作数据库--注解实现

1、查询所有用户

(1)实现代码

(2)测试

生成的测试代码,@SpringBootTest是加载spring运行环境:

运行结果:

该结果只能看到打印的结果,不能看见sql语句、参数等信息,可以配置。

配置内容:

再次运行代码:

2、根据id查询指定用户

(1)代码实现

id=#{id},id作为参数传给sql语句,且要保证参数名也为id,可以使用@Param重命名。

(2)测试

运行结果:

3、根据id和姓名查询指定用户

(1)代码实现

(2)测试

运行结果:

4、查询存在的问题

以上图片对比可以发现:sql的运行结果和java(mybatis)运行结果有些地方不一致。Java结果是null

sql表字段:

java类成员变量:

mybatis会根据查询的结果进行对应赋值,前几个属性名是一样的,后几个不一样,导致后几个变量名无法一一对应,使得不一样的成员变量没有结果。

5、解决属性名不一致

(1)起别名

可以给数据库属性名起别名,使得和成员变量名一致。

运行结果:

(2)结果映射

对于不一样的名字,可以将数据库名和java成员变量名进行一一映射。

运行结果:

对于该映射也可以在其他方法中使用:

给该映射定义一个id名:

复用该映射关系:

运行结果:

(3)配置文件实现自动转化

实现java变量驼峰命名方式与数据库属性命名方式的自动转换。

配置内容:

此时就可以实现一一对应了,不会出现java变量为null了。

6、增加用户

(1)代码实现

(2)测试

运行结果:

思考一个问题:以上没有对id进行赋值,自动赋值时,如何获取到自增id值???

在接口方法上加上@Options注解,useGeneratedKeys会命令mybatis使用jdbc的getuseGeneratedKeys方法,取到数据库内部自增主键,默认值为false;keyProperty:指定能够唯⼀识别对象的属性

获取id值:

运行结果:

7、更新用户

(1)代码实现

(2)测试

运行结果:

8、删除用户

(1)代码实现

(2)测试

运行结果:

四、操作数据库--xml实现

定义一个接口UserInfoXmlMapper;创建UserInfoXMLMapper.xml,xml里的内容是固定的,需要修改接口路径。

配置yml:

1、查询所有用户

(1)代码实现

(2)测试

运行结果:

2、根据id查询用户

(1)代码实现

(2)测试

运行结果:

3、根据id和用户名查询用户

(1)实现代码

(2)测试

运行结果:

4、解决属性名不一致

xml实现sql操作中,依旧会存在数据库字段名和成员变量名不对应的问题,以上图片没有呈现出来是因为配置中已经实现转换了。

(1)配置文件实现自动转化

实现java变量驼峰命名方式与数据库属性命名方式的自动转换。

配置内容:

此时就可以实现一一对应了,不会出现java变量为null了。

(2)起别名

(3)结果映射

对于不一样的名字,可以将数据库名和java成员变量名进行一一映射。

5、增加用户

(1)实现代码

(2)测试

运行结果:

对于获取到自增id值的方法和注解大致一样:

运行结果:

6、更新用户

(1)实现代码

(2)测试

运行结果:

7、删除用户

(1)实现代码

(2)测试

运行结果:

相关推荐
海边夕阳20069 分钟前
PostgreSQL性能调优:解决表膨胀、索引碎片和无效索引问题
数据库·经验分享·postgresql·性能优化
一 乐36 分钟前
个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·后端·小程序
m0_7482480241 分钟前
Redis的数据淘汰策略解读
数据库·redis·缓存
哥哥还在IT中1 小时前
让数据库更智能-大模型如何优化我们的SQL查询
数据库·sql
计算机小手1 小时前
探索 Maxwell:高效捕获 MySQL 数据变更的轻量级中间件
数据库·经验分享·mysql·开源软件
IvorySQL1 小时前
使用 PostgreSQL 时间点恢复(Point-In-Time Recovery)的多种数据恢复技术
数据库·postgresql
腾讯云云开发2 小时前
小程序数据库权限管理,一看就会!——CloudBase新手指南
前端·数据库·微信小程序
王道长服务器 | 亚马逊云2 小时前
帝国CMS + AWS:老牌内容系统的新生之路
服务器·网络·数据库·云计算·aws
李慕婉学姐3 小时前
Springboot的民宿管理系统的设计与实现29rhm9uh(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
LB21124 小时前
Redis黑马点评 Feed流
数据库·redis·缓存