Mybatis快速入门

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一个语句既可以通过 XML 定义,也可以通过注解定义。我们先看看 XML 定义语句的方式:注意:这里的mapper - namespace要写对应的UserDao接口类,select - id要写接口待实现的方法,resultType要写返回的结果类型🙌


1.Mybatis简介



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


2.第一个Mybatis项目


Maven导包


导入mysql连接包和mybatis包:


<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.31</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>


新建Mybatis配置文件


XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)

resources目录下新建mybatis-config.xml文件,初始配置内容如下:


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="top/imustctf/dao/UserMapper.xml"/>
    </mappers>
</configuration>


需要用户自己修改dataSource中的内容,例如:

注意:对于每一个Mapper.xml,都要Mybatis配置文件中注册对应的mapper - resource🧇


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="top/imustctf/dao/UserMapper.xml"/>
    </mappers>
</configuration>


编写Mybatis工具类


每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

说白了,就是构建一个生产SqlSession的工厂类,SqlSession用于执行具体的SQL业务:


private static SqlSessionFactory sqlSessionFactory;
// 初始化SqlSession工厂
static {
    String resource = "mybatis-config.xml";
    InputStream inputStream = null;
    try {
        inputStream = Resources.getResourceAsStream(resource);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}


既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句:


/**
 * 获取SqlSession实例,用于操作数据库
 * @return SqlSession实例
 */
public static SqlSession getSqlSession() {
    return sqlSessionFactory.openSession();
}


此时,基本的Mybatis架构已经完成!


3.探究已映射的 SQL 语句


现在你可能很想知道 SqlSession 和 Mapper 到底具体执行了些什么操作,但 SQL 语句映射是个相当广泛的话题

首先像以往的Javaweb项目一样,我们新建一个UserDao的接口:


public interface UserMapper {
    List<User> getUserList();
}


一个语句既可以通过 XML 定义,也可以通过注解定义。我们先看看 XML 定义语句的方式:

注意:这里的mapper - namespace要写对应的UserDao接口类,select - id要写接口待实现的方法,resultType要写返回的结果类型🙌


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="top.imustctf.dao.UserMapper">
    <select id="getUserList" resultType="top.imustctf.pojo.User">
        select * from mybatis.user
    </select>
</mapper>


万事俱备,只欠东风,现在让我们来测试一下吧:


public class UserMapperTest{
    @Test
    public void test() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = userMapper.getUserList();
            for (User user : userList) {
                System.out.println(user);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            sqlSession.close();
        }
    }
}
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11月前
|
SQL Java 数据库连接
MyBatis快速入门以及环境搭建和CRUD的实现
MyBatis快速入门以及环境搭建和CRUD的实现
49 0
|
11月前
|
SQL Java 关系型数据库
Mybatis知识【Mybatis快速入门】第二章
Mybatis知识【Mybatis快速入门】第二章
|
3月前
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
48 3
|
4月前
|
SQL Java 数据库连接
Mybatis快速入门,Mybatis的核心配置文件
Mybatis快速入门,Mybatis的核心配置文件
40 1
|
3月前
|
Java 数据库连接 Apache
JavaWeb基础第二章(Maven项目与MyBatis 的快速入门与配置)
JavaWeb基础第二章(Maven项目与MyBatis 的快速入门与配置)
|
Java 关系型数据库 MySQL
MyBatis(简化数据库操作的持久层框架)--快速入门[上]
MyBatis(简化数据库操作的持久层框架)--快速入门[上]
85 0
|
4月前
|
SQL Java 数据库连接
【MyBatisPlus】通俗易懂 快速入门 详细教程
【MyBatisPlus】通俗易懂 快速入门 详细教程
256 0
|
4月前
|
SQL Java 数据库连接
【MyBatis-Plus】快速精通Mybatis-plus框架—快速入门
【MyBatis-Plus】快速精通Mybatis-plus框架—快速入门
101 0
|
4月前
|
Java 关系型数据库 数据库连接
SpringBoot使用Mybatis 快速入门
SpringBoot使用Mybatis 快速入门
47 0
|
4月前
|
Java 关系型数据库 数据库连接