 博客主页:从零开始的-CodeNinja之路

⏩ 收录文章:【MyBatis】初步解析MyBatis:实现数据库交互与关系映射的全面指南

欢迎大家点赞评论收藏⭐文章

目录

前言什么是MyBatis?一. MyBatis准备工作(创建工程、数据库表准备、实体类)二. 配置数据库三. 编写SQL语句(注解/XML)3.1 数据准备3.2 写持久层代码

四. 测试

总结

前言

在应用分层学习时,我们了解到web应用程序⼀般分为三层,即:Controller、Service、Dao.之前的案例中,请求流程如下:浏览器发起请求,先请求Controller,Controller接收到请求之后,调用Service进行业务逻辑处理,Service再调用Dao,真实的数据从数据库中是读取.

什么是MyBatis?

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

在上面我们提到⼀个词:持久层

持久层:指的就是持久化操作的层,通常指数据访问层(dao),是用来操作数据库的. 简单来说:MyBatis是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库工具

Mybatis操作数据库的步骤:

准备工作(创建springboot工程、数据库表准备、实体类 引入Mybatis的相关依赖,配置Mybatis(数据库连接信息) 编写SQL语句(注解/XML) 测试

一. MyBatis准备工作(创建工程、数据库表准备、实体类)

创建springboot工程,并导入mybatis的起步依赖、mysql的驱动包 Mybatis是⼀个持久层框架,具体的数据存储和数据操作还是在MySQL中操作的,所以需要添加MySQL驱动 项目工程创建完成后,项目管理器会自动在pom.xml⽂件中,导入Mybatis依赖和MySQL驱动依赖

二. 配置数据库

Mybatis中要连接数据库,需要数据库相关参数配置

MySQL驱动类登录名密码数据库连接字符串

如果是application.yml⽂件,配置内容如下:(一定要注意空格和对齐,没对齐就报错,直接进行Copy即可,手写极其容易出错)

spring:

datasource:

url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false

username: root

password: 232122

driver-class-name: com.mysql.cj.jdbc.Driver

mvc:

favicon:

enable: false

profiles:

active: dev

mybatis:

configuration:

log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

map-underscore-to-camel-case: true

logging:

file:

name: logs/springboot.log

logback:

rollingpolicy:

max-file-size: 1KB

file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

level:

com:

example:

demo: debug

如果是application.properties⽂件,配置内容如下:

#驱动类名称

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#数据库连接的url

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false

#连接数据库的用户名

spring.datasource.username=root

#连接数据库的密码

spring.datasource.password=root

三. 编写SQL语句(注解/XML)

3.1 数据准备

在自己的数据库中,创建用户表,并创建对应的实体类User

代码如下:(直接进行Copy即可,手写太过麻烦)

-- 创建数据库

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' );

创建对应的实体类UserInfo,实体类的属性名与表中的字段名⼀⼀对应

例如:数据库的字段名是user_name,在idea中我们就要创建userName的变量来接收,前面我们已经导入了驼峰自动转换,所以不必担心在数据库交互时的连接问题

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;

}

3.2 写持久层代码

Mybatis的持久层接⼝规范⼀般都叫XxxMapper

@Mapper注解:表示是MyBatis中的Mapper接⼝

程序运行时,框架会自动生成接⼝的实现类对象(代理对象),并给交Spring的IOC容器管理@Select注解:代表的就是select查询,也就是注解对应方法的具体实现内容.

在上面的测试中,我们需要创建持久层接⼝UserInfoMapper

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 queryAllUser();

}

上述代码中我是使用了一个xml的方式(就是加注解)来操作数据库的

四. 测试

使用Idea自动生成测试类

在需要测试的Mapper接⼝中,右键->Generate->Test 选择要测试的方法,点击OK书写测试代码

import com.example.demo.model.UserInfo;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest//注意,此处的SpringBootTest必须填上,它是为了引入前面所写代码引入的注解

class UserInfoMapperTest {

@Autowired

private UserInfoMapper userInfoMapper;

@Test

void queryAllUser() {

List userInfoList = userInfoMapper.queryAllUser();

System.out.println(userInfoList);

}

}

总结

Mybatis操作数据库的步骤:

准备工作(创建springboot工程、数据库表准备、实体类)引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)编写SQL语句(注解/XML)测试

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: