使用MyBatis操作数据库及单元测试

目录

一.MyBatis介绍

二.MyBatis操作数据库步骤

三.单元测试

idea上生成测试

配置mybatis日志

动态参数


一.MyBatis介绍

MyBatis是⼀款优秀的持久层框架,⽤于简化JDBC的开发。

JDBC来操作数据库太复杂了,使用MyBatis 是因为它可以帮助我们更⽅便、更快速的操作数据库。

二.MyBatis操作数据库步骤

1.创建springboot工程, 并导入mybatis的起步依赖、mysql的驱动包

2.创建用户表, 并创建对应的实体类User
创建用户表

sql 复制代码
-- 创建数据库
DROP DATABASE IF EXISTS mybatis_test;
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 = utf8mb4; 
-- 添加用户信息
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' );

创建完成后查看数据库表的信息

3.建立数据库和Java对象的映射

java 复制代码
package com.lele.demo.model;

import lombok.Data;

import java.util.Date;

@Data
public class 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(),


    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private Integer gender;
    private String phone;
    private Integer delete_Flag;
    private Date create_Time;
    private Date update_Time;
}

4.创建对数据库的操作类
使用Mybatis对数据库的操作类,一般命名为xxxMapper
对数据库的操作就在这个类中完成

java 复制代码
package com.lele.demo.mapper;

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

import java.util.List;

//MyBatis的注解
@Mapper
public interface UserInfoMapper {
    @Select("select * from userinfo")
    List<UserInfo> selectAll();
}


配置数据库连接字符串
Mybatis中要连接数据库,需要数据库相关参数配置
• MySQL驱动类
• 登录名
• 密码
• 数据库连接字符串
配置application.yml文件

java 复制代码
 #数据库连接配置
spring:
 datasource:
 url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
 username: root
 password: root
 driver-class-name: com.mysql.cj.jdbc.Driver

测试结果:

三.单元测试

idea上生成测试

上面通过浏览器上测试的方式比较复杂,这里改用单元测试的方式。

在idea自动生成测试类,在需要写单元测试的类中进行如下操作。

配置mybatis日志

java 复制代码
mybatis:
    configuration:
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

配置上mybatis日志后,运行结果上会有执行语句的注释,更方便观察,也更方便观察出错原因。

查询单条信息并打印

动态参数

把SQL中的常量改成动态信息

参数重命名

相关推荐
祈禾9 小时前
Redis三大缓存问题与分布式锁
运维·数据库·redis·笔记·分布式·缓存
DBA小马哥10 小时前
关系型数据库核心概念手册:SQL、事务与存储引擎的技术脉络
数据库·sql
丫头,冲鸭!!!10 小时前
记账网站3-连数据库
数据库·个人开发
灯澜忆梦10 小时前
【MySQL12】进阶篇 | SQL优化
数据库·sql·mysql·性能优化
IvorySQL10 小时前
PostgreSQL 日报|PG18.5 回归测试崩溃问题(8 月 12 日)
大数据·数据库·人工智能·postgresql
ltl10 小时前
学习型查询优化器:Neo、Bao、Balsa 与 LLM-CBO
数据库
ltl11 小时前
持久内存退场之后:ZNS SSD 与下一代非易失内存
数据库
故乡dee云13 小时前
AWS 产品太多不会选?按“网站、数据库、文件、日志”4 类需求快速匹配
数据库·云计算·aws
曹牧15 小时前
C#:问号
前端·数据库·c#
奇树谦15 小时前
《现代 Key-Value 数据库原理:从 B+Tree 到 LSM Tree》-第五篇:现代数据库横向对比
数据库·lsm-tree