Mybatis 简单启动过程入门详解

 更新时间:2025年03月19日 09:22:34   作者:鸽鸽程序猿  
MyBatis是一个持久层框架,简化JDBC操作,SpringBoot集成MyBatis,通过创建项目、准备数据、配置文件、实体类和接口,可以实现数据库操作,使用@Mapper和@Select注解简化接口实现,测试类使用@SpringBootTest和@Test注解启动,本文介绍Mybatis启动过程,感兴趣的朋友一起看看吧

一、Mybatis简介

Mybatis是一个操作数据库驱动的持久层框架,用来简化JDBC操作的,SpringBoot集成了这个框架。

MyBatis本是 Apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache迁移到了google code,并且改名为MyBatis。2013年11⽉迁移到Github.

二、MyBatis⼊⻔

2.1 创建项目

在前面跟我们前面创建的SpringBoot项目一样,只有在选择依赖的时候要多选择SQL下的Mybatis Framework和MySQL Driver

2.2 准备数据

直接使用下面准备的数据库数据即可:

  • 创建一个mybatis_test的数据库
  • 该库中含有user_info和article_info两张表
  • user_info表中有主键id,username等等信息
  • article_info表中有主键id,title等等信息
-- 创建数据库
DROP DATABASE IF EXISTS mybatis_test;
CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;
-- 使用数据数据
USE mybatis_test;
-- 创建表[用户表]
DROP TABLE IF EXISTS user_info;
CREATE TABLE `user_info` (
        `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() ON UPDATE now(),
        PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4; 
-- 添加用户信息
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone )
VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );
-- 创建文章表
DROP TABLE IF EXISTS article_info;
CREATE TABLE article_info (
        id INT PRIMARY KEY auto_increment,
        title VARCHAR ( 100 ) NOT NULL,
        content TEXT NOT NULL,
        uid INT NOT NULL,
        delete_flag TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',
        create_time DATETIME DEFAULT now(),
        update_time DATETIME DEFAULT now() 
) DEFAULT charset 'utf8mb4';
-- 插入测试数据
INSERT INTO article_info ( title, content, uid ) VALUES ( 'Java', 'Java正文', 1 );

2.3 配置文件

直接复制下面的代码即可,注意要将password改写成你电脑上的MySQL数据库登录密码。

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

2.4 实体类

在idea中创建一个类来接收数据库中user-info表的数据,类中的成员与user-info表中的字段一一对应:

package com.example.springmybatisdemo.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;
}

创建接口来操作数据库,使用@Mapper注解来将该接口交给Spring管理,@Select(" ")来实现查询语句,括号中的参数写SQL的查询语句。

  • @Mapper注解是Mybatis提供的控制反转注解。
  • @Select注解直接将这个接口的方法给实现了。所以我们在后面可以直接注入这个接口。我们前面学习的SpringBoot的IoC注解是没有这个功能的,如果是接口需要自己实现。
  • 当我们的接口是使用@Mapper注解管理,其中有些方法有没有使用Mybatis可以实现的注解,那么就会在使用时抛出异常。
package com.example.springmybatisdemo.mapper;
import com.example.springmybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
    @Select("select * from user_info")
    List<UserInfo> selectAll() ;
}

测试类,使用@SpringBootTest注解来启动测试类,@Test启动测试方法。

  • @SpringBootTest这个注解就是在运行这个测试类的时候加载Spring环境
  • @Test注解可以让被修饰的方法启动起来,就不需要使用main方法。
package com.example.springmybatisdemo;
import com.example.springmybatisdemo.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class UserInfoMapperTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    void selectAll() {
        System.out.println(userMapper.selectAll());
    }
}

2.5 执行结果

执行结果如下图,确实将我们插入到user-info表中的数据拿到了:

到此这篇关于Mybatis 简单启动的文章就介绍到这了,更多相关Mybatis 启动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现简单堆栈代码

    Java实现简单堆栈代码

    这篇文章主要为大家详细介绍了Java实现简单堆栈代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock详解

    Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock详解

    这篇文章主要介绍了Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock详解,读写锁:一个资源能够被多个读线程访问,或者被一个写线程访问但是不能同时存在读写线程,需要的朋友可以参考下
    2024-01-01
  • 微服务Redis-Session共享登录状态的过程详解

    微服务Redis-Session共享登录状态的过程详解

    这篇文章主要介绍了微服务Redis-Session共享登录状态,本文采取Spring security做登录校验,用redis做session共享,实现单服务登录可靠性,微服务之间调用的可靠性与通用性,需要的朋友可以参考下
    2023-12-12
  • 一篇文章带你了解JVM垃圾回收

    一篇文章带你了解JVM垃圾回收

    这篇文章主要介绍了JVM的种垃圾回收,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • 如何在IDE部署springboot项目(有swagger和无swagger都是一样的)到服务器或者虚拟机上的docker

    如何在IDE部署springboot项目(有swagger和无swagger都是一样的)到服务器或者虚拟机上的docke

    这篇文章主要介绍了如何在IDE部署springboot项目(有swagger和无swagger都是一样的)到服务器或者虚拟机上的docker,本文给大家分享我的安装历程,需要的朋友可以参考下
    2023-01-01
  • Spring Boot2.3 新特性分层JAR的使用

    Spring Boot2.3 新特性分层JAR的使用

    这篇文章主要介绍了Spring Boot2.3 新特性分层JAR的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 如何将java或javaweb项目打包为jar包或war包

    如何将java或javaweb项目打包为jar包或war包

    本文主要介绍了如何将java或javaweb项目打包为jar包或war包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • SpringBoot结合mockito测试实战

    SpringBoot结合mockito测试实战

    与集成测试将系统作为一个整体测试不同,单元测试更应该专注于某个类。所以当被测试类与外部类有依赖的时候,尤其是与数据库相关的这种费时且有状态的类,很难做单元测试。但好在可以通过“Mockito”这种仿真框架来模拟这些比较费时的类,从而专注于测试某个类内部的逻辑
    2022-11-11
  • SpringBoot创建RSocket服务器的全过程记录

    SpringBoot创建RSocket服务器的全过程记录

    RSocket应用层协议支持 Reactive Streams语义, 例如:用RSocket作为HTTP的一种替代方案。这篇文章主要给大家介绍了关于SpringBoot创建RSocket服务器的相关资料,需要的朋友可以参考下
    2021-05-05
  • java使用Nagao算法实现新词发现、热门词的挖掘

    java使用Nagao算法实现新词发现、热门词的挖掘

    这篇文章主要介绍了java使用Nagao算法实现新词发现、热门词的挖掘的思路和详细代码,需要的朋友可以参考下
    2015-07-07

最新评论