• 【JavaWeb】 Mybatis-02-Mybatis的快速入门


    写在前言

    mybatis里面的配置文件是如何联系的

    这是我第二次学习mybatis的理解,我理解的和如下图,config包含了数据库的配置,以及mappers,通过mappers可以找到各类Mapper,这样就把配置文件,联系了起来。
    在这里插入图片描述

    Mybatis连接数据库与JDBC连接数据库

    JDBC的工作原理

    在这里插入图片描述

    • DriverManager 工具类,用于管理驱动,可以获取数据库的链接
    • Connection 表示Java与数据库建立的连接对象(接口)
    • PreparedStatement 发送SQL语句的工具
    • ResultSet 结果集,用于获取查询语句的结果

    Mybaties连接数据库的原理

    在这里插入图片描述

    1、新建一个Maven项目

    要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路(classpath)中即可。或者是利用Maven导入依赖(坐标),我们选择后者,所以要新建一个Maven项目。

    在这里插入图片描述

    2、配置pom.xml

    要使用Mybatis,需要导入Mybatis的依赖。

    <dependency>
      <groupId>org.mybatisgroupId>
      <artifactId>mybatisartifactId>
      <version>x.x.xversion>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    为了简便开发,我们还引入了Lombok,具体代码如下

    
    <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.0modelVersion>
    
        <groupId>com.yougroupId>
        <artifactId>Mybatis-demo-01artifactId>
        <version>1.0-SNAPSHOTversion>
        <dependencies>
            
            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatisartifactId>
                <version>3.5.7version>
            dependency>
            
            <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
                <version>1.18.24version>
            dependency>
            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>8.0.30version>
            dependency>
        dependencies>
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    如果左侧的Maven中没有显示依赖,就点击刷新按钮,刷新一下!
    在这里插入图片描述
    然后就可以看到依赖被导入进来
    在这里插入图片描述

    3、Xml配置文件

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

    1)写一个mybatis-config.xml文件

    
    DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://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/dp83?useSSL=false&serverTimezone=UTC"/>
                    <property name="username" value="root"/>
                    <property name="password" value="200201203332"/>
                dataSource>
            environment>
        environments>
        <mappers>
            <mapper resource="DeptMapper.xml"/>
        mappers>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述
    当然,还有很多可以在 XML 文件中配置的选项,上面的示例仅罗列了最关键的部分。 注意 XML 头部的声明,它用来验证 XML 文档的正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。

    2)编写一个Mapper.xml配置文件

    由上可知,Mapper.xml是用来映射sql语句的文件
    在这里插入图片描述

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="test">
        <select id="queryAll" resultType="com.you.pojo.Dept">
            select * from dept;
         select>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    命名空间

    在之前版本的 MyBatis 中,命名空间(Namespaces)的作用并不大,是可选的。 但现在,随着命名空间越发重要,你必须指定命名空间。

    命名空间的作用有两个:
    一个是利用更长的全限定名来将不同的语句隔离开来,同时也实现了你上面见到的接口绑定。就算你觉得暂时用不到接口绑定,你也应该遵循这里的规定,以防哪天你改变了主意。 长远来看,只要将命名空间置于合适的 Java 包命名空间之中,你的代码会变得更加整洁,也有利于你更方便地使用 MyBatis。

    命名空间也可以解决id重复的问题,比如UserMapper和DeptMapper都有一个查询全部语句的sql名叫queryAll,通过命名空间我就可以对相同的id进行区别。

    什么是全限定名

    • 全限定名(比如 “com.mypackage.MyMapper.selectAllThings)将被直接用于查找及使用。
    • 短名称(比如 “selectAllThings”)如果全局唯一也可以作为一个单独的引用。 如果不唯一,有两个或两个以上的相同名称(比如
      “com.foo.selectAllThings” 和
      “com.bar.selectAllThings”),那么使用时就会产生“短名称不唯一”的错误,这种情况下就必须使用全限定名。

    也就是说在接口绑定的时候,我既可以用全限定名,也可以使用短名称,但如果短名称不唯一的话,那么我只能使用全限定名,所以为了不出错,你也可以选择全部使用全限定名。

    3)编写实体类

    由于Mapper.xml的返回类型用到了实体类,所以需要写一个实体类Dept。新建一个实体类Dept
    在这里插入图片描述

    package com.you.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.ToString;
    
    @Data
    @ToString
    @NoArgsConstructor
    @AllArgsConstructor
    public class Dept {
        private Integer deptno;
        private  String deptname;
        private String dp_source;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4、编写启动类

    编写一个启动类MybatisRun
    在这里插入图片描述

    package com.you;
    
    import com.you.pojo.Dept;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    public class MybatisRun {
        public static void main(String[] args) {
            String resource = "mybatis-config.xml";
            InputStream inputStream = null;
            try {
                inputStream = Resources.getResourceAsStream(resource);
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            SqlSession sqlSession = sqlSessionFactory.openSession();
            /* 执行sql语句 */
            List<Dept> list = sqlSession.selectList("test.queryAll");
            for (Dept dept : list) {
                System.out.println(dept);
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    【广州华锐互动】屠宰场生猪检疫VR模拟演练系统
    国际结算业务
    攻防世界----ics-07
    【小程序源码】笑话段子手
    从程序员的角度看人类通信史
    Github 2024-05-30开源项目日报Top10
    【网络安全】2023年堡垒机品牌大全
    多肽计算符计算:modlamp 包
    正则表达式包含数字和字符匹配
    c语言——扫雷游戏(简易版)
  • 原文地址:https://blog.csdn.net/m0_59792745/article/details/126722992