初识Mybatis,并创建第一个Mybatis项目(详细图文教程)

news/2024/11/28 11:32:17/

目录

前言

一、Mybatis是什么?

二、Mybatis的优点

三、创建第一个Mybatis项目

配置Mybatis开发环境

创建数据库

添加框架

 配置连接字符串和Mybatis

使用Mybatis操作数据库

测试

前言

Spring 集成了 Mybatis 框架,方便我们更加便捷的使用,但是 Mybatis 也可以单独使用,它和 Spring 没有关系。

一、Mybatis是什么?

Mybatis 是一个持久层框架,它支持自定义SQL、存储过程以及高级映射。可以通过简单的xml 或者注解来配置和映射原始类型接口和Java POJO为数据库中的记录。

  • JavaPOJO : 普通老式java对象
  • 持久层框架就是把是数据保存在硬盘上

简单来说,Mybatis 是简单完成程序和数据库交互的工具,也就是一个数据库工具,让我们更简单的操作和读取数据库。

mybatis主要做了什么?

声明接口 + 实现接口。

声明接口:就是接口用来进行方法的声明。

实现接口:xml或者注释的方式,但是mybatis中的注释比较复杂一点,最开始我们先用xml实现接口的方式。

二、Mybatis的优点

  • Mybatis是最简单的持久层框架,小巧且易学。
  • 底部集成了JDBC,与传统的JDBC项目相比,大大减少了我们的代码量。
  • 提供了xml标签,支持编写动态的SQL语句。
  • 通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • Mybatis相当灵活,代买写在xml文件中,大大降低了耦合度,提高了代码复用。
  • 提供了映射标签,支持对象与数据库的ORM关系字段映射。

ORM(Object Relational Mapping),即对象关系映射。在⾯向对象编程语⾔中,将关系型数据库中的数据对象建⽴起映射关系,进⽽⾃动的完成数据与对象的互相转换:

1. 将输⼊数据(即传⼊对象)+SQL 映射成原⽣ SQL

2. 将结果集映射为返回对象,即输出对象

ORM把数据库映射为对象:

  • 数据库表(table)--> 类(class)
  • 记录(record,⾏数据)--> 对象(object)
  • 字段(field) --> 对象的属性(attribute)

⼀般的 ORM 框架,会将数据库模型的每张表都映射为⼀个 Java 类。

三、创建第一个Mybatis项目

Mybatis其实就是一个工具,说是创建第一个Mybatis项目其实不准确,应该是应用Mybatis.

MyBatis 应用只分为两部分:

        配置 MyBatis 开发环境;

        使⽤ MyBatis 模式和语法操作数据库。

配置Mybatis开发环境

创建数据库

我们要使⽤ MyBatis 的⽅式来读取⽤户表中的所有⽤户,那么首先我们需要创建我们的数据库。

-- 创建数据库
drop database if exists mybatis_sql;
create database  mybatis_sql DEFAULT CHARACTER SET utf8mb4;
-- 使⽤数据数据
use  mybatis_sql;
-- 创建表[⽤户表]
drop table if exists userinfo;
create table userinfo(id int primary key auto_increment,username varchar(100) not null,password varchar(32) not null,photo varchar(500) default '',createtime datetime default now(),updatetime datetime default now(),`state` int default 1
) default charset 'utf8mb4';--表中插入数据
INSERT INTO ` mybatis_sql`.`userinfo` (`id`, `username`, `password`, `photo`,
`createtime`, `updatetime`, `state`) VALUES
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1)
;

以上语句在SQL工具上进行执行,查询表中数据结果如下即插入成功,进行下一步:

添加框架

接下来就是我们的java程序的部分的操作了,要使用Mybatis,就要给我们的项目加上Mybatis框架支持,那么有san种方式。

第一种呢就是创建一个新的项目,创建的时候选中Mybatis框架:创建一个spring项目(这里如果有问题可以看这篇文章:http://t.csdn.cn/8IJTu),在项目创建的时候加上 Mybatis 框架支持:

 第二种就是升级我们的一个原有项目,也就是在我们已有的项目上添加Mybatis框架,那么简单的操作⽅式就是使⽤EditStarters插件:

 插件的使用:在我们的配置文件界面直接右击,选择生成,选择我们刚才安装的插件,进行框架的添加选择。

 

第三种就是直接引入依赖到 pom 文件中。

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>2.3.1</version><scope>test</scope></dependency>

 配置连接字符串和Mybatis

 配置连接字符串:在application.yml文件中写入一下代码:

spring:datasource:url: jdbc:mysql://localhost:3306/mybatis_sql?characterEncoding=utf8&useSSL=falseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver

url改为自己用的:端口号和数据库名

Mybatis由两部分,一个是接口一个是实现,实现由两种方法:xml或者注释,注释比xml复

杂,在这里我们采用xml的方式实现,mybatis是基于spring实现的,那么spring要应用mybatis就要进行扫描我们的实现,我们要配置路径告诉spring要扫描哪里。

配置mybatis xml的文件路径,在刚才配置数据库的文件直接配置。

#配置 mybatis xml 的文件路径,在resources/mapper下创建所有表对的 xml 文件
mybatis:mapper-locations: classpath:mapper/**Mapper.xml

我们扫描路径为上述,那么要在对应目录下(classpath指的是resources)建一个文件夹mapper,里边的文件明明格式都为**Mapper.xml.

那么目前为止,Mybatis开发环境配置完成,接下来我们使用Mybatis模式和语法操作数据库。

使用Mybatis操作数据库

刚才开发环境的配置中,我们配置了xml文件进行实现,实现什么呢?

     就是实现我们的java接口,那么接口是是干什么呢?接口是用来实现方法的声明。那么现在我们要创建实现的接口。(建议:接口统一放在mapper包下,和配置中的mapper对应)

  创建mapper接口:@Mapper是Mybatis的注解

import com.example.springmybatisdemo.model.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;@Mapper
public interface UserMapper {List<User> userAll();
}

接口要查询我们数据库的所有用户的信息,那么首先我们要有对象,那么我们现在创建一个对象(也就是类)。

创建user类,里边的属性和数据库中表的字段相对应。

import lombok.Data;import java.util.Date;
@Data
public class User {private Integer id;private String username;private String password;private String photo;private Date createtime;private Date updatetime;
}

 接口写完,写实现,xml的方式实现,在我们的配置文件的mapper包下新建一个xml文件。

 数据持久层的实现,xml代码:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati
s.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.springmybatisdemo.mapper.UserMapper"><select id="userAll" resultType="com.example.springmybatisdemo.model.User">select * from userinfo;</select>
</mapper>

现在我们就完成了,然后我们进行测试一下:

测试

我们要自测一下是否可以成功查询,也就是单元测试。来到我们要测试的接口页面,接口UserMapper界面:

 

 来到这个界面:

会自动给我们生成测试的代码,一般我们不用改,给要测试的成员打上对勾就好了。

给生成的代码加上注解@SpringBootTest,表示要加载Springboot测试的环境,因为我们是在spring环境下进行的开发。接下来,将我们要测试的方法(类)注入进测试方法。


import com.example.springmybatisdemo.model.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import static org.junit.jupiter.api.Assertions.*;
@Slf4j
@SpringBootTest
class UserMapperTest {@Autowiredprivate UserMapper userMapper;@Testvoid userAll() {List<User> users=userMapper.userAll();log.info(users.toString());}
}

 然后直接运行,进行测试,测试成功结果如图:

若是有错,最先检查一下自己的数据库密码名称,数据库名、表名是否对应。 

这下我们 Mybatis 的第一个代码就写完了,下次再见~


http://www.ppmy.cn/news/979218.html

相关文章

JSON格式Python,Java,PHP等封装获取淘宝商品快递费用数据API方法

淘宝是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取淘宝天猫商品详情快递费用数据&#xff0c;您可以通过开放平台的接口或者直接访问淘宝天猫商城的网页来获取商品详情快递费用。以下是两种常用方法的介绍&a…

腾讯语音SDK记录4098,4101

起因&#xff1a;Unity项目想要实现发送语音的功能。记录一下接入腾讯语音SDK中一些遇到的问题。 首先&#xff0c;Unity环境是支持测试整个录音流程的。确定这点的话&#xff0c;就不会在找不到问题的时候怀疑是环境问题&#xff0c;然后打包还是一样的报错了。 以下是常见的…

火山引擎DataLeap的Data Catalog系统公有云实践 (上)

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 前言 Data Catalog 通过汇总技术和业务元数据&#xff0c;解决大数据生产者组织梳理数据、数据消费者找数和理解数的业务场景。本篇内容源自于火山引擎大数据研发治…

使用node内置test runner,和 Jest say 拜拜

参考 https://nodejs.org/dist/latest-v20.x/docs/api/test.html#test-runner 在之前&#xff0c;我们写单元测试&#xff0c;必须安装第三方依赖包&#xff0c;而从node 20.0.0 版本之后&#xff0c;可以告别繁琐的第三方依赖包啦&#xff0c;可直接使用node的内置test runner…

Ubuntu18.04 下配置Clion

配置Clion 安装gcc、g、make Ubuntu中用到的编译工具是gcc©&#xff0c;g&#xff08;C&#xff09;&#xff0c;make(连接)。因此只需安装对应的工具包即可。Ubuntu下使用命令安装这些包&#xff1a; &#xff08;1&#xff09;安装gcc sudo apt install gcc&am…

MFC第二十天 数值型关联变量 和单选按钮与复选框的开发应用

文章目录 数值型关联变量数值型关联变量的种类介绍 单选按钮与复选框单选按钮的组内选择原理解析单选按钮和复选框以及应用数值型关联变量的开发CMainDlg.cppCInputDlg.hCInputDlg.cpp 附录 数值型关联变量 数值型关联变量的种类介绍 1、 数值型关联变量&#xff1a; a)控件型…

高压开关柜无线测温系统设计与实现 安科瑞 许敏

摘要&#xff1a;文章提出了一种用于小车式开关柜的无线测温系统&#xff0c;包括设于小车动触头套管上的温度传感器、环绕设于小车动触头上的电流传感器&#xff0c;温度传感器及电流传感器均分别连接有数据接收处理器&#xff0c;数据接收处理器电连接有设于小车式开关柜上的…

min_free_kbytes

转自&#xff1a;技术分享 | MemAvailable 是怎么计算的-腾讯云开发者社区-腾讯云 背景 前两天安装 OceanBase 时遇到一个小问题&#xff1a; 很明显&#xff0c;安装OB时要求服务器可用内存至少 8G&#xff0c;不达标就无法安装。为了凑这3台10G内存的服务器我已经费了不少劲…