MyBatis 查询数据库入门

本文是 MyBatis 入门教程,介绍了 MyBatis 的概念、学习原因及如何配置和使用。包括创建项目、配置数据库连接、使用 MyBatis 操作模式、增删改查操作、参数占位符的区别、日志打印功能、以及单表查询和多表查询的基础知识。通过实例展示了 MyBatis 如何简化数据库操作,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MyBatis 是什么?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 去除了几乎 所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和 映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记 录。

简单来说 MyBatis 是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库工具。

针对 “MyBatis 是一款优秀的持久层框架” 进行分析和补充:

MyBatis也是一个 ORM (Object Relational Mapping,即对象关系映射)框架。

在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动的完成数据与对象的相互转换:

  1. 将输入数据(即传入对象)+ SQL 映射成原生 SQL。
  2. 将结果集映射为返回对象,即输出对象。\

ORM 把数据库映射为对象:

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

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

即,使用 MyBatis 可以像操作对象一样来操作数据库中的表,可以实现对象和数据库表之间的转换。


即:MyBatis 可以当作是一座 “桥梁”:

将数据库 和 程序,映射起来。

MySQL 和 MyBatis 是不一样的:

MySQL 提供了一个 数据存取(数据管理)的软件。

而 MyBatis 是一个 “中间桥梁”,用于连接程序和数据库,建立映射关系,进行 数据操作 的中间层(持久层)。

二、为什么要学习 MyBatis

对于后端开发来说,程序是由以下两个重要的部分组成的:

  1. 后端程序
  2. 数据库

而这两个重要的组成部分要通讯,就要依靠数据库连接工具,那数据库连接工具有哪些?比如之前我们 学习的 JDBC,还有今天我们将要介绍的 MyBatis,那已经有了 JDBC 了,为什么还要学习 MyBatis?

这是因为 JDBC 的操作太繁琐了,我们回顾一下 JDBC 的操作流程:

  1. 创建数据库连接池 DataSource
  2. 通过 DataSource获取数据库连接 Connection
  3. 编写要执行带 ? 占位符的 SQL 语句
  4. 通过 ConnectionSQL 创建操作命令对象 Statement  
  5. 替换占位符:指定要替换的数据库字段类型,占位符索引及要替换的值  
  6. 使用 Statement 执行 SQL 语句  
  7. 查询操作:返回结果集 ResultSet,更新操作:返回更新的数量
  8. 处理结果集
  9. 释放资源

JDBC 操作示例回顾

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        //让用户手动输入数据到数据库中
        Scanner scanner = new Scanner(System.in);

        //1. 创建数据源
        DataSource dataSource = new MysqlDataSource();

        //设置数据库所在的地址
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("1234");

        //2. 让代码和数据库服务器之间建立连接
        Connection connection = dataSource.getConnection();

        //3. 操作数据库,以插入数据为例
        //   关键所在:构造一个 SQL 语句
        //   在 JDBC 中构造 SQL 语句,不必带上 ;
        //   ; 只是在命令行中用来区分不同的语句,现在是直接在代码中操作
        String sql = "insert into JDBC values(1,'张三')";
        // 此处光是一个 String 类型的 sql 还不行,需要把这个 String 包装成一个 “语句对象”
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        //用户手动输入数据
        System.out.println("请输入 ID:");
        int id = scanner.nextInt();
        System.out.println("请输入 姓名:");
        String name = scanner.next();

        //? 相当于告诉 java程序,这两个字段的值 还不确定,此时就使用 ? 先占个位置
        // 再使用 PreparedStatement 的 setXXX 方法 进行替换,这里的setXXX方法很多,需要让这里的方法和数据库的列的类型匹配
        String sql2 = "insert into JDBC values(?,?)";
        PreparedStatement statement = connection.prepareStatement(sql2);
        //进行替换操作
        statement.setInt(1,id); //下标从 1 开始计算,把第一个 ? 替换成 id 这样的值
        statement.setString(2,name);
        System.out.println("statement: " + statement); //通过这个打印操作,可以看到拼装好之后的 SQL 长啥样

        //4. 执行 SQL
        //      SQL 里面如果是 insert, update, delete ,都使用 executeUpdate 方法,
        //      SQL 里面如果是 select,则使用 executeQuery 方法
        //      返回值就表示这个操作,影响到了几行,就相当于在控制台里输入 sql 之后,得到的数字
        int ret =  preparedStatement.executeUpdate();
        int ret2 = statement.executeUpdate();
        System.out.println(ret);
        System.out.println(ret2);

        //5. 此时 SQL 已经执行完毕,然后还需要释放资源
        preparedStatement.close();
        statement.close();
        connection.close();
    }
}

从上述代码和操作流程可以看出,对于 JDBC 来说,整个操作非常的繁琐,我们不但要拼接每一个参 数,而且还要按照模板代码的方式,一步步的操作数据库,并且在每次操作完,还要手动关闭连接等, 而所有的这些操作步骤都需要在每个方法中重复书写。于是我们就想,那有没有一种方法,可以更简单、更方便的操作数据库呢?

答案是肯定的,这就是我们要学习 MyBatis 的真正原因,它可以帮助我们更方便、更快速的操作数据库。

三、怎么学 MyBatis

MyBatis 学习只分为两部分:

  • 配置 MyBatis 开发环境。
  • 使用 MyBatis 模式和语法操作数据库。

1. 创建 MyBatis 项目

准备工作:创建数据库 和 数据表

-- 创建数据库
drop database if exists Mybatis;
create database Mybatis DEFAULT CHARACTER SET utf8;
-- 使⽤数据数据
use Mybatis;
-- 创建表[⽤户表]
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
);
-- 创建⽂章表
drop table if exists articleinfo;
create table articleinfo(
id int primary key auto_increment,
title varchar(100) not null,
content text not null,
createtime datetime default now(),
updatetime datetime default now(),
uid int not null,
rcount int not null default 1,
`state` int default 1
);
-- 创建视频表
drop table if exists videoinfo;
create table videoinfo(
vid int primary key,
`title` varchar(250),
`url` varchar(1000),
createtime datetime default now(),
updatetime datetime default now(),
uid int
);
-- 添加⼀个⽤户信息
INSERT INTO `Mybatis`.`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);
-- ⽂章添加测试数据
insert into articleinfo(title,content,uid)
values('Java','Java正⽂',1);
-- 添加视频
insert into videoinfo(vid,title,url,uid) values(1,'java
title','http://www.baidu.com',1);

将上面的代码复制到本地的 MySQL。

1.1 添加 MyBatis 相关依赖

这里会涉及两个场景:

  1. 项目创建的时候,引入 MyBatis 相关依赖。
  2. 老项目添加 MyBatis。

1. 新建一个 MyBatis 项目

  1. 创建新项目:

\

  1. MyBatis 项目是建立在 Spring MVC 项目上的,因此,下面三个框架依赖必不可少:

\

  1. 添加 MyBatis 项目:

\

  1. 引入可驱动的数据库:

  1. 点击 finish即可完成。

2. 老项目中引入 MyBatis 相关依赖

使用 Edit Starter插件进行添加。

pom.xml文件中的 dependencies标签中,找到一个空行(人造一个也行),鼠标右击,选择 generate

下面为获取依赖的官方网址:

选择要添加的依赖:

\

\

1.2 配置数据库连接字符串

不要立即启动项目,否则就会报错:

\

  1. resources下创建三个.yml文件

(现在的学习还不会涉及到生产环境)

  1. 配置开发环境配置文件:

注意:关于 driver-class-name中所写的驱动名称

  • 驱动名称:我们使用的是 MySQL,因此我们填写的是 MySQL 的驱动名称。
  • 如果使用的 MySQL 是 5.x之前的版本,则用 com.mysql.jdbc.Driver
    如果版本大于 5.x,则用 com.mysql.cj.jdbc.Driver

\

  1. 在主配置文件中激活开发环境

\

此时启动项目后就不会报错了:

\

1.3 配置 MyBatis 保存的 xml 的目录

MyBatis 有两种操作方法:

  1. 使用 xml的形式。
  2. 注解。(MyBatis 3.1 版本之后提供)

但是,注解的方式并不好用,我们主要还是关注 xml形式的操作。

  1. 一般我们在 resources目录下,创建一个子目录,来存放 xml文件:

\

  1. 由于此配置是公共的,所以我们在主配置文件配置 MyBatis 的 xml 保存路径:

\

四、使用 MyBatis 的操作模式操作数据库

MyBatis 的操作模式

MyBatis 的操作模式,包含两个部分:

  1. Interface(接口,里面是方法的定义)
  2. xml 文件(对 方法 的实现,使用 SQL 语句)

在 Interface 接口中会加一个注解,这个注解是MyBatis里的注解 @Mapper,将普通的接口变为 MyBatis 里面的接口,将接口里面的方法映射进 xml文件。

\

MyBatis 查询:实现一个根据用户id来查询用户信息的操作

数据库中已经创建好的表:

\

1. 定义接口

现在根目录底下创建几个包:

  • model 与数据库交互
  • controller 与前端交互
  • server 决定调用哪些映射方法
  • mapper 操作数据,实现映射

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值