MyBatis 操作数据库

文章目录

  • 1. 什么是MyBatis?
  • 2. 入门MyBatis
    • 2.1 准备工作
      • 2.2.1 创建springboot项目
      • 2.2.2 数据准备
    • 2.2 配置数据库连接
    • 2.3 写持久层代码
    • 2.4 单元测试
      • 2.4.1 web测试
      • 2.4.2 自动测试

1. 什么是MyBatis?

MyBatis是一种持久层框架,用于简化JDBC的开发。

持久层:指的就是持久化操作的层, 通常指数据访问层(dao), 是⽤来操作数据库的。 MyBatis 操作数据库_第1张图片

2. 入门MyBatis

MyBatis操作数据库,分为下面四步:

  1. 准备工作(创建springboot项目,准备数据库表,实体类)
  2. 引入MyBatis相关依赖,配置相关文件
  3. 编写代码(分为注解/XML两种)
  4. 测试

2.1 准备工作

2.2.1 创建springboot项目

MyBatis 操作数据库_第2张图片

导⼊ mybatis的起步依赖、mysql的驱动包。
导入mysql驱动包的原因是因为MyBatis是一种持久层框架,具体的数据存储和数据操作还是在mysql中,所以导入mysql驱动是必要的。
项目创建成功后,pom.xml文件中自动导入两个依赖。
MyBatis 操作数据库_第3张图片
当然也可以在maven仓库中找到相关依赖,手动添加。
如何在之前创建项目中添加这些依赖?

  1. 快捷键Alt+Insert,点击Edit Starters
    MyBatis 操作数据库_第4张图片
  2. 点击OK
    MyBatis 操作数据库_第5张图片
  3. 选择需要的依赖
    MyBatis 操作数据库_第6张图片

2.2.2 数据准备

MyBatis是操作数据库的,那么肯定需要有数据库了,可以在MySql中创建一个数据库,方便学习操作。

创建数据库,创建userinfo表,添加数据:

mysql> 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 = utf8mb4;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
    -> VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
    ->  VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
    -> VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
    -> VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );
Query OK, 1 row affected (0.00 sec)
mysql> select * from userinfo;
+----+----------+----------+-----+--------+-------------+-------------+---------------------+---------------------+
| id | username | password | age | gender | phone       | delete_flag | create_time         | update_time         |
+----+----------+----------+-----+--------+-------------+-------------+---------------------+---------------------+
|  1 | admin    | admin    |  18 |      1 | 18612340001 |           0 | 2023-11-16 13:20:09 | 2023-11-16 13:20:09 |
|  2 | zhangsan | zhangsan |  18 |      1 | 18612340002 |           0 | 2023-11-16 13:20:22 | 2023-11-16 13:20:22 |
|  3 | lisi     | lisi     |  18 |      1 | 18612340003 |           0 | 2023-11-16 13:20:35 | 2023-11-16 13:20:35 |
|  4 | wangwu   | wangwu   |  18 |      1 | 18612340004 |           0 | 2023-11-16 13:20:52 | 2023-11-16 13:20:52 |
+----+----------+----------+-----+--------+-------------+-------------+---------------------+---------------------+
4 rows in set (0.00 sec)

创建实体类,userInfo.java:

package com.example.mybatisdemo.model;

import lombok.Data;
import java.util.Date;
@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;
}

2.2 配置数据库连接

配置application.yml⽂件, 配置内容如下:

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

其中mybatis_test是要操作的数据库,username是用户名,一般都是root,password是你数据库的密码。
其他的一般不需要修改,使用时直接复制就行。
application.properties⽂件配置和yml相同,只是格式的区别。

2.3 写持久层代码

MyBatis 操作数据库_第7张图片
在项⽬中, 创建mapper包,包中创建持久层接⼝UserInfoMapper。
Mybatis的持久层接⼝规范⼀般都叫 XxxMapper,放在mapper包中,这是一种企业规范。
代码:

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserInfoMapper {
	//查询所有⽤⼾
	@Select("select username, password, age, gender, phone from userinfo")
	public List<UserInfo> queryAllUser();
}

@Mapper注解:
表⽰是MyBatis中的Mapper接⼝,用于与MyBatis框架交互。
@Select注解:
代表的就是select查询,也就是注解对应⽅法的具体实现内容。

2.4 单元测试

2.4.1 web测试

如何验证上面代码成功运行呢?
可以使用web的方式,
MyBatis 操作数据库_第8张图片
MyBatis 操作数据库_第9张图片

2.4.2 自动测试

但是这种方法些许麻烦。
其实,在创建出来的SpringBoot⼯程中,在src下的test⽬录下,已经⾃动帮我们创建好了测试类 ,我们可以直接使⽤这个测试类来进⾏测试。
在需要测试的接口中,使用快捷键Alt+Insert,点击Test:
MyBatis 操作数据库_第10张图片
勾选要测试的方法,点击OK,⽤Idea⾃动⽣成测试类:
MyBatis 操作数据库_第11张图片
编写测试代码:

@Slf4j
@SpringBootTest
class UserInfoMapperTest {
    @Autowired
    private UserInfoMapper userInfoMapper;
    @Test
    void queryAllUser() {
        List<UserInfo> list = userInfoMapper.queryAllUser();
        log.info(list.toString());
    }
}

运行结果:
在这里插入图片描述
@SpringBootTest 注解:
是 Spring Boot 提供的一个注解,用于在 Spring Boot 应用中启动一个完整的测试环境。
@Slf4j 注解:
是Lombok提供的一种注解,用于打印日志。

你可能感兴趣的:(Spring,mybatis,数据库)