Mybatis学习

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Mybatis学习

Mybatis学习

1.1MyBatis概述

  • Mybati是一款优秀的==持久层==框架,用于简化JDBC开发

持久层

  • 负责将数据到保存到数据库的那一层代码,我们开发重会将操作数据库的Java代码作为持久层,而Mybatis就是队jdbc代码进行了封装
  • JavaEE三层架构:表现层、业务层、持久层

框架

  • 框架就是一个半成品软件,是一套可重用的、通用的软件基础代码模型
  • 在框架的基础之上构建软件编写更加高效、规范、通用、可扩展
我们可以将框架理解为汽车的骨架,在骨架上我们可以设计出不同的外观和样式

我们有这样一个问题:为什么要使用Mybatis代替JDBC,JDBC有啥缺点

1.1.2 JDBC缺点

在这里插入图片描述

  • 硬编码

    • 注册驱动、获取连接

      在两个操作中我们要定义连接数据库的四个基本信息,以后如果要将Mysql数据库更换为其他的关系型数据库的话,这四个地方都需要修改,如果放在此处就意味着要修改我们的源代码

    • SQL语句

      如果表的结构发生表换,那么SQL语句就要发生修改,不利于后期的维护

  • 操作繁琐

    • 手动设置参数
    • 手动封装结果集

      需要手动对查询到的数据进行封装,而这部分代码是没有什么技术含量,而且特别耗费时间的。

1.1.3 MyBatis优化

  • 硬编码可以配置到==配置文件==
  • 操作繁琐的地方mybatis都==自动完成==

在这里插入图片描述

1.2 Mybatis入门

查询user表中所有的数据

  1. 创建user表,添加数据

    create database mybatis;
    use mybatis;
    
    drop table if exists tb_user;
    
    create table tb_user(
        id int primary key auto_increment,
        username varchar(20),
        password varchar(20),
    );
    
    INSERT INTO tb_user VALUES (1, 'zhangsan', '123');
    INSERT INTO tb_user VALUES (2, 'lisi', '1234');
    INSERT INTO tb_user VALUES (3, 'wangwu', '1234');
  2. 创建模块,导入坐标

pom.xml配置文件中添加依赖

<dependencies>
    <!--mybatis 依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.5</version>
    </dependency>

    <!--mysql 驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.46</version>
    </dependency>

    <!--junit 单元测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>

    <!-- 添加slf4j日志api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.20</version>
    </dependency>
    <!-- 添加logback-classic依赖 -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    <!-- 添加logback-core依赖 -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>
  1. 编写 MyBatis 核心配置文件 -- > ==替换连接信息 解决硬编码问题==

    在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.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>

    <typeAliases>
        <package name="com.itheima.pojo"/>
    </typeAliases>
    
    <!--
    environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment
    -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>

        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
       <!--加载sql映射文件-->
       <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>
  1. 编写 SQL 映射文件 --> ==统一管理sql语句,解决硬编码问题==

    在模块的 resources 目录下创建映射配置文件 UserMapper.xml,内容如下

    <?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">
    <mapper namespace="test">
        <select id="selectAll" resultType="com.itheima.pojo.User">
            select * from tb_user;
        </select>
    </mapper>
  2. 编码

    1. com.itheima.pojo 包下创建 User类
public class User {
    private int id;
    private String username;
    private String password;
    //省略了 setter 和 getter
}

​ 2. 在 com.itheima 包下编写 MybatisDemo 测试类

public class MyBatisDemo {

    public static void main(String[] args) throws IOException {
        //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2. 获取SqlSession对象,用它来执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3. 执行sql
        List<User> users = sqlSession.selectList("test.selectAll"); //参数是一个字符串,该字符串必须是映射配置文件的namespace.id
        System.out.println(users);
        //4. 释放资源
        sqlSession.close();
    }
}
这样一个小demo就写完了,我Mybatis跟着b站上的黑马程序员学的,黑马yyds
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
29天前
|
SQL XML Java
学习Mybatis相关知识
一、什么是Mybatis? 1、Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。开发人员直接编写原生态sql,即可严格控制sql执行性能、且灵活度高。
12 0
|
1月前
|
XML Java 数据库连接
Mybatis-Plus学习小项目及详细教程
Mybatis-Plus学习小项目及详细教程
|
3月前
|
SQL 缓存 Java
Mybatis学习文章
Mybatis学习文章
|
3月前
|
SQL Java 数据库连接
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
|
4月前
|
XML SQL Java
今日记录:学习一个Mybatis的技能之choose 和 bind
今日记录:学习一个Mybatis的技能之choose 和 bind
26 1
|
4月前
|
算法 数据库
MYSQL-mybatisplus的主键自增问题与@Tableld@TableField@TableLogic的学习
关于org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.laoyang.Mapper.BookMapper.deleteById问题
|
5月前
|
SQL XML Java
Mybatis框架使用的学习
在沃尔玛项目中的Mybatis框架使用了两种实现CRUD的模式,为Dao文件编写相应的xml实现功能与直接在Dao的方法中直接使用注解开发
27 1
|
6月前
|
SQL Java 数据库连接
MyBatisPlus学习
MyBatisPlus学习
45 0
|
8月前
|
Java 数据库连接 数据库
SSM 最全学习内容总结(Spring+SpringMVC+MyBatis)
本文介绍SSM学习过程,同时附上相关技术文章
535 0
|
8月前
|
SQL 缓存 Java
Mybatis学习
Mybatis学习