MyBatis 初识简单操作

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MyBatis 初识简单操作

前言

上一期我们讲完Spring的配置文件以及日志的设置,这一期我们就来谈谈mybatis操作数据库的一些操作,使用这个框架可以极大地简化JDBC的冗长代码,大大增强了生产力,只需我们提供简单的sql语句以及对应的注解就可以操作数据库

我们说web应用程序主要分为三层 Controller  Service Dao

前两层我们都在之前的文章中谈论过,但是之前我们的底层数据都是使用moke的方式产生的,现在我们就来学习Spring与数据库的交互

废话不多说,我们现在就开始认识一下Mybatis  

回顾JDBC

为了更好的了解java操作数据库的代码操作,我们先回顾一下之前使用JDBC是如何操作数据库的

1.创建数据库连接池

2.使用DataSourse获取数据库连接Connection

3.编写带?占位符的SQL语句

4.通过Connection以及SQL创建操作命令对象statement

5.替换占位符,确定替换的字段类型以及替换的值需要一一对应

6.使用statement执行sql语句

7.查询操作,返回结果集.....

8.处理结果集

9.释放资源

这里我们发现增删改查都有一些共性的代码,比如都需要创建数据库连接池,都需要建立连接,需要使用带占位符的SQL语句等,我们就想能不能用一套注解将其封装起来,这样我们就只需要书写对

应的SQL语句以及集合容器就可以获得所有的数据库数据

1.什么是Mybatis

Mybatis是一个优秀的持久层框架,主要用于简化JDBC的开发

首先我们创建一个项目,注意这里记得勾选Mybatis和MySQL的驱动

注意这里项目创建成功会自动在pom文件中导入需要的依赖

注:这里的SpringBoot框架的版本号记得与Mybatis对应

参考网址 MyBatis中文网

2.数据准备

这里我们首先需要创建一个数据库以便测试使用

CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;

然后创建表往表里面插入对应的数据

-- 使⽤数据数据
USE mybatis_test;
-- 创建表[⽤⼾表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE `userinfo` (
 `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
 `username` VARCHAR ( 127 ) NOT NULL,
 `password` VARCHAR ( 127 ) NOT NULL,
 `age` TINYINT ( 4 ) NOT NULL,
 `gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-⼥ 0-默认',
 `phone` VARCHAR ( 15 ) DEFAULT NULL,
 `delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',
 `create_time` DATETIME DEFAULT now(),
 `update_time` DATETIME DEFAULT now(),
 PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mp4
 
 

插入用户信息

-- 添加⽤⼾信息
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ('wangwu', 'wangwu', 18, 1, '18612340004' );

此时我们可以使用可视化工具或者是对应的数据库客户端查看是否插入成功,博主这里使用的是navicat

配置文件设置

  spring:
    datasource:
      url: jdbc:mysql://127.0.0.1:13306/mybatis_test?characterEncoding=utf8&useSSL=false
      username: root
      password: abc123
      driver-class-name: com.mysql.cj.jdbc.Driver

注:这里的数据库以及对应的密码用户,数据库名称都记得修改成自己的,否则会出现报错信息

比如密码错误等等

3.Mybatis实现数据库操作

首先我们想实现一个select*语句

在这之前,我们先得创建一个UserInfo类用来保存每一条数据库信息

@Data
public class UserInfo {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private Integer gender;
    private String phone;
    private Integer deleteFlag;
    private Date createTime;
    private Date updateTime;
}

1.实现select语句

@Mapper
public interface UserInfoMapper {
    @Select("select * from userinfo")
    List<UserInfo> getUserInfoAll();
}

Mybatis的持久层接口规范主要是叫xxxMapper

@Mapper注解表示是Mybatis中的Mapper接口

程序运行时框架就会自动生成其实现类对象交给SpringIOC管理

这里我们使用一个@Select注解来表示这里需要写一条selct语句

因为这里程序中有多条数据,所以我们使用list集合来装返回的对象数据

我们这里的返回数据测试在test单元测试中测试

在上述接口中按住alt+insert点击test

然后勾上对应的接口

然后再test的文件夹下就会出现对应的测试代码

我们只需要注入对应的对象,执行获取到返回的对象列表打印即可看到数据库中的结果

最后结果如下,点击箭头所指的小三角即可执行

我们可以和数据库中的数据进行对比一下

这里就会发现后面的几个时间选项没有展示出来,这一点我们将在下篇进行讲解

2.打印日志

这里有时候为了对比输入输出参数,我们也是需要打印参数查看的

只需要在yml文件中添加一行打印日志

  mybatis:
    configuration: # 配置打印 MyBatis⽇志
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3.参数传递

我们知道其他的语句在写入数据库的时候一定得有传参,所以下面我们来谈谈对参数传递的操作

我们只需要将接口中的方法带有参数,然后和对应的语句中进行参数绑定即可

比如下面我们尝试获取id为2的用户数据

注:如果是使用阿里云虚拟的时候需要使用重命名对应参数与sql中的对应

使用@Parma("")即可修改对应的名称

下面我们来实现对应的增删改查

4.insert

这里和上面的其实是类似的,我们只需要使用对应的

@insert注解即可,我们开始演示

我们发现数据库已经更新了

如果这里使用了重命名,我们需要使用对象.属性来传参

比如

这时候我们就需要使用对象名.属性来传参

5.delete

此时我们将刚刚更新的数据进行删除

使用@Delete注解

这是一开始的数据表状态

执行成功后,我们就成功的将数据表的id=6的信息删除成功了

6.update

和上面一样的操作,这次我们将id为5的数据名称改为赵雷

7.获取自增主键

我们在数据库中设置的id是自增主键,我们可以尝试获取id

直接获取是不会获取到的

我们可以使用一个注解完成 @Options

可能出现的错误小总结

1.sql错误

2.mysql配置信息错误

3.未配置数据库,没有填写配置信息..

4.数据库名填写错误

5.表不存在或名称填写错误

6.方法名重复

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
XML Java 数据库连接
【MyBatis】MyBatis操作数据库(一)
【MyBatis】MyBatis操作数据库(一)
60 1
|
6月前
|
XML Java 数据库连接
如何使用 MyBatis 来进行增、删、改、查操作
如何使用 MyBatis 来进行增、删、改、查操作
287 2
|
6月前
|
SQL 存储 Java
基于MyBatis的增删改查操作
基于MyBatis的增删改查操作
47 1
|
6月前
|
缓存 Java 数据库连接
我们后端程序员不是操作MyBatis的CRUD Boy
大家好,我是南哥。一个对Java程序员进阶成长颇有研究的人,今天我们接着新的一篇Java进阶指南。为啥都戏称后端是CRUD Boy?难道就因为天天怼着数据库CRUD吗?要我说,是这个岗位的位置要的就是你CRUD,你不得不CRUD。哪有公司天天能给你搭建高并发、高可用、大数据框架的活呢,一条业务线总要成长吧,慢慢成熟了就要装修工来缝缝补补、美化美化,也就是CRUD的活。不能妄自菲薄CRUD Boy,我们是后端工程师。今天来指南下操作数据库之MyBatis框架。
134 3
|
5月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
7月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
155 0
|
5月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
6月前
|
Java 数据库连接 数据库
Spring日志完结篇,MyBatis操作数据库(入门)
Spring日志完结篇,MyBatis操作数据库(入门)
|
7月前
|
XML Java 数据库连接
利用MyBatis框架操作数据库2
利用MyBatis框架操作数据库
51 2
|
7月前
|
Java 数据库连接 测试技术
利用MyBatis框架操作数据库1
利用MyBatis框架操作数据库
54 1