快速搭建第一个Mybatis程序

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速搭建第一个Mybatis程序

@TOC

一、简介

以Mybatis3.5.7为例
环境:

  • jdk8.0
  • Mysql8.0
  • maven3.8.4
  • IDEA

回顾:

  • JDBC
  • Mysql
  • Java基础
  • Maven
  • Junit

1.初识Mybatis

在这里插入图片描述

  • MyBatis 是一款优秀的持久层框架
  • 它支持自定义 SQL、存储过程以及高级映射。
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作
  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
  • MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。
  • 2013年11月迁移到Github。所以要找Mybatis得去Github

怎么获得Mybatis?

  • maven仓库
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

2.持久化

数据持久化

  • 持久化就是把程序的数据在持久状态和瞬时状态转化的过程
  • 内存:断电后数据就消失了
  • 数据库(jdbc),IO文件持久化

为什么需要持久化

  • 内存断电后数据就丢失了,有一些对象我们不能让他丢掉
  • 内存太贵了

3.持久层

Dao层,Service层,Controller层

4.为什么需要Mybatis

  • 帮助程序员把数据存入到数据库中
  • 方便
  • 传统的JDBC代码太复杂了,框架可以简化操作,自动化。
  • 不使用Mybatis也可以,更容易上手。
  • 优点:

    • sql和代码分类,提高可维护性
    • 提供映射标签,支持对象与数据库的orm字段关系映射
    • ORM是对象关系映射的意思

O ------ object就是 java对象
R -------relational 关系型数据
M -------mappering 映射

  • 提供哦那个对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql

二、第一个Mybatis程序

思路:搭建环境-->导入Mybatis-->编写代码-->测试

1.搭建环境

先提供一个数据库和用来操作的表
新建项目
1.File->new Project 新建maven项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
下面这一堆代码是构建maven项目以后,自带的

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kuang</groupId>
    <artifactId>Mybatis-study</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

在这里插入图片描述

2.删除src,这样就可以当成父工程了
3.导入maven依赖
第一次加入依赖的时候,项目会爆红,记得重新加载项目,这样就不会爆红了

<!--导入依赖-->
    <dependencies>
<!--         mysql驱动-->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <!--        mybatis驱动-->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>

        <!--        junit驱动-->
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.8.2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

2.创建一个新模块

在这里插入图片描述
在这里插入图片描述
父项目的pox.xml就会多出来这样的代码

 <modules>
        <module>mybatis-01</module>
        <module>mybatis-01</module>
        <module>mybatis-01</module>
    </modules>
  • 编写mybatis核心配置文件

在这里插入图片描述
把下面的代码拷贝到刚刚新建的xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration代表核心配置文件-->
<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="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

上面那一个从官网复制过来的,相当于是一个模板,但是里面具体的信息需要我们自己去设置,比如说我们要连接的数据库的用户名,密码等信息需要手动配置
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration代表核心配置文件-->
<configuration>
<!--    环境可以有多个,我们用默认的环境-->
<!--    配置连接数据库的环境-->
    <environments default="development">
        <environment id="development">
<!--            事务管理器,类型是JDBC-->
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai&amp;useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="a87684009."/>
<!--                数据源就是连接是连接数据库的信息-->
            </dataSource>
        </environment>
        <environment id="test">
            <transactionManager type="JDBC"/>
<!--            type=POOLED表示使用数据库连接池-->
            <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>
<!--    引入映射文件-->
<!--    每一个Mapper.xml都需要在Mybatis的核心配置文件中注册-->
    <mappers>
        <mapper resource="com/kuang/dao/UserMapper.xml"/>
    </mappers>
</configuration>

3.编写代码

  • 编写mybatis工具类
//工厂模式
//sqlSessionFactory---->sqlSession
public class MybatisUtils {
    public static SqlSessionFactory sqlSessionFactory;

    static {

        try {
            //读取配置文件
            //下面三句话是固定的
            //使用Mybatis第一步:获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 既然有了SqlSessionFactory,顾名思义,我们就可以从中获取SqlSession的实例了
     * SqlSession完全包含了面向数据库执行sql命令所需要的所有方法
     */
    public static SqlSession getSqlSession() {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return  sqlSession;
    }


}
  • 实体类(domain,pojo,domain)每一个类都和数据库中的一张表相关联
package com.kuang.pojo;

/**实体类
 * @author zengyihong
 * @create 2022--03--28 17:14
 */
public class User {
 private int id;
 private String username;
 private String password;

 public User() {
 }

 public User(int id, String username, String password) {
  this.id = id;
  this.username = username;
  this.password = password;
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getUsername() {
  return username;
 }

 public void setUsername(String username) {
  this.username = username;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 @Override
 public String toString() {
  return "User{" +
          "id=" + id +
          ", username='" + username + '\'' +
          ", password='" + password + '\'' +
          '}';
 }
}
  • DAO接口(对数据库表的CRUD操作,对user表的操作就对应一个userDao)
package com.kuang.dao;

import com.kuang.pojo.User;

import java.util.List;

/**这个类用来操作数据库中对象的实体
 * @author zengyihong
 * @create 2022--03--28 17:16
 */
//dao等价于mapper
public interface UserDao {
    List<User> getUserList();
}
  • 接口实现类由原来的UserDaoImpl转换成为一个Mapper配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--命名空间要绑定一个对应的DAO/Mapper接口-->
<mapper namespace="com.kuang.dao.UserDao">
<!--     select查询语句 id对应原来的方法名字-->
    <select id="getUserList"  resultType="com.kuang.pojo.User">
        select  * from mybatis.user
    </select>

</mapper>

可能大家看到上面那些有点懵,那我们就来复习一下 ,具体的大家可以看我博客中JDBC的内容,里面有关于分层的讲解。

在这里插入图片描述
在这里插入图片描述

4.Junit测试

package com.kuang.dao;

import com.kuang.pojo.User;
import com.kuang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;

import java.util.List;

/**
 * @author zengyihong
 * @create 2022--03--29 9:55
 */
public class UserDaoTest {
    @Test
    public void test(){
//        SqlSession
//                第一步:获得SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //方式一:执行SQL getMapper
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserList();
        for (User user:userList){
            System.out.println(user);
        }
        //关闭SqlSession

        sqlSession.close();

    }

}

在这里插入图片描述

三、可能遇到的问题

1.配置文件没有注册
2.绑定接口错误
3.方法名错误
4.返回类型错误
5.maven导出资源错误
在pox.xml中,加入下面代码即可

 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
Java 数据库连接 数据库
Mybatis【第一个 Mybatis 程序】
Mybatis【第一个 Mybatis 程序】
|
SQL Java 关系型数据库
手把手搭建mybatis入门程序
手把手搭建mybatis入门程序
|
XML 存储 SQL
如何用IDEA创建第一个Mybatis程序
如何用IDEA创建第一个Mybatis程序
184 0
|
XML Java 关系型数据库
第一个Mybatis程序
第一个Mybatis程序
59 0
|
XML Java 测试技术
第一个MyBatis程序(下)
第一个MyBatis程序(下)
|
XML SQL Java
第一个MyBatis程序(上)
第一个MyBatis程序(上)
|
Java 关系型数据库 数据库连接
第一个Mybatis程序
思路:搭建环境--》导入Mybatis-->编写代码--》测试!
第一个Mybatis程序
|
SQL XML Java
第一个mybatis程序
第一个mybatis程序
288 0
|
XML Java 数据库连接
Mybatis学习笔记(1)——第一个程序
暑期之前就有打算学习SSM,但是我记得当时再配置一个框架疯狂报错,弄得我很难受,,再加上当时有点其他事情,所以就放了下来。现在很有需求要会ssm,所以就学了一下。感觉框架这东西配置就烦的要死。错一丁点就全错。。下面开始说配置详情。
116 0
Mybatis学习笔记(1)——第一个程序
|
SQL IDE Java
【SSM框架】搭建MyBatis
搭建MyBatis 1、开发环境 2、创建maven工程 3、创建MyBatis的核心配置文件 4、创建mapper接口 5、创建MyBatis的映射文件 6、通过junit测试功能 7、加入log4j日志功能
【SSM框架】搭建MyBatis