首页 > 其他分享 >MyBatis基本流程

MyBatis基本流程

时间:2024-08-13 17:49:05浏览次数:11  
标签:基本 empId 配置文件 流程 mybatis emp MyBatis import public

MyBatis基本流程

基本使用步骤

  1. 准备数据

    CREATE DATABASE `mybatis-example`;
    ​
    USE `mybatis-example`;
    ​
    CREATE TABLE `t_emp`(
      emp_id INT AUTO_INCREMENT,
      emp_name CHAR(100),
      emp_salary DOUBLE(10,5),
      PRIMARY KEY(emp_id)
    );
    ​
    INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("tom",200.33);
    INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("jerry",666.66);
    INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("andy",777.77);

     

  2. 导入依赖

    <dependencies>
      <!-- mybatis依赖 -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.11</version>
      </dependency>
    ​
      <!-- MySQL驱动 mybatis底层依赖jdbc驱动实现,本次不需要导入连接池,mybatis自带! -->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.25</version>
      </dependency>
    ​
      <!--junit5测试-->
      <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
          <version>5.3.1</version>
      </dependency>
    </dependencies>
  3. 准备实体类

    public class Employee {
        private Integer empId;
    ​
        private String empName;
    ​
        private Double empSalary;
    ​
        public Integer getEmpId() {
            return empId;
        }
    ​
        public void setEmpId(Integer empId) {
            this.empId = empId;
        }
    ​
        public String getEmpName() {
            return empName;
        }
    ​
        public void setEmpName(String empName) {
            this.empName = empName;
        }
    ​
        public Double getEmpSalary() {
            return empSalary;
        }
    ​
        public void setEmpSalary(Double empSalary) {
            this.empSalary = empSalary;
        }
    ​
        @Override
        public String toString() {
            return "Employee{" +
                    "empId=" + empId +
                    ", empName='" + empName + '\'' +
                    ", empSalary=" + empSalary +
                    '}';
        }
    }
  4. 准备mapper接口和 接口的xml配置文件

    package com.ztone.mapper;
    ​
    import com.ztone.pojo.Employee;
    ​
    public interface EmployeeMapper {
        Employee queryById();
    }

    在xml文件中,有mybatis固定的格式

    <?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">
    <!-- namespace等于mapper接口类的全限定名,这样实现对应 -->
    <mapper namespace="com.ztone.mapper.EmployeeMapper">
    ​
        <!-- 查询使用 select标签
                id = 方法名
                resultType = 返回值类型
                标签内编写SQL语句
         -->
        <select id="queryById" resultType="com.ztone.pojo.Employee">
            select emp_id empId,emp_name empName, emp_salary empSalary from
            t_emp where emp_id = #{empId}
        </select>
    </mapper>

    其中所有的sql语句都写在 mapper标签中,namespace 就是对应的接口的全限定符

    在<mapper 标签中就可以写查询修改删除插入标签,其中 id就是接口中的方法名,resultType是方法返回值类型

  5. 准备mybais配置文件

    该配置文件的作用是:数据库连接信息,性能配置,mapper.xml 配置等

    习惯命名为: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>
    ​
        <!-- environments表示配置Mybatis的开发环境,可以配置多个环境,在众多具体环境中,使用default属性指定实际运行时使用的环境。default属性的取值是environment标签的id属性的值。 -->
        <environments default="development">
            <!-- environment表示配置Mybatis的一个具体的环境 -->
            <environment id="development">
                <!-- Mybatis的内置的事务管理器 -->
                <transactionManager type="JDBC"/>
                <!-- 配置数据源 -->
                <dataSource type="POOLED">
                    <!-- 建立数据库连接的具体信息 -->
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis-example"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
    ​
        <mappers>
            <!-- Mapper注册:指定Mybatis映射文件的具体位置 -->
            <!-- mapper标签:配置一个具体的Mapper映射文件 -->
            <!-- resource属性:指定Mapper映射文件的实际存储位置,这里需要使用一个以类路径根目录为基准的相对路径 -->
            <!--    对Maven工程的目录结构来说,resources目录下的内容会直接放入类路径,所以这里我们可以以resources目录为基准 -->
            <mapper resource="mapper/EmployeeMapper.xml"/>
        </mappers>
    ​
    </configuration>

    在configration 标签中配置信息

    • environments 可以配置多套 environment

    • environment主要用来配置事务管理器和数据源等

    • mappers 用来配置 多个mapper

    • mapper 用来注册接口对应的xml配置文件

  6. 运行和测试

    在进行数据库操作之前还有几个步骤,这几个步骤是使用mybatis必须要做的,在使用了spring后就可以省略

    • 创建SqlSessionFactory对象

      • 声明mybatis配置文件的路径

      • 以输入流的方式加载配置文件

      • 基于配置文件,创建SqlSessionFactory对象

    • 使用SqlSessionFactory对象开启一个会话

    • 根据业务接口的Class对象获取mapper接口类型的对象

    • 调用代理类方法触发对应的sql语句

    • 提交事务

    • 关闭SqlSession

    import com.ztone.mapper.EmployeeMapper;
    import com.ztone.pojo.Employee;
    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 org.junit.jupiter.api.Test;
    ​
    import java.io.IOException;
    import java.io.InputStream;
    ​
    /**
     * projectName: com.atguigu.test
     *
     * description: 测试类
     */
    public class MyBatisTest {
    ​
        @Test
        public void testSelectEmployee() throws IOException {
    ​
            // 1.创建SqlSessionFactory对象
            // ①声明Mybatis全局配置文件的路径
            String mybatisConfigFilePath = "mybatis-config.xml";
    ​
            // ②以输入流的形式加载Mybatis配置文件
            InputStream inputStream = Resources.getResourceAsStream(mybatisConfigFilePath);
    ​
            // ③基于读取Mybatis配置文件的输入流创建SqlSessionFactory对象
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    ​
            // 2.使用SqlSessionFactory对象开启一个会话
            SqlSession session = sessionFactory.openSession();
    ​
            // 3.根据EmployeeMapper接口的Class对象获取Mapper接口类型的对象(动态代理技术)
            EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);
    ​
            // 4. 调用代理类方法既可以触发对应的SQL语句
            Employee employee = employeeMapper.queryById(1);
    ​
            System.out.println("employee = " + employee);
    ​
            // 4.关闭SqlSession
            session.commit(); //提交事务 [DQL不需要,其他需要]
            session.close(); //关闭会话
    ​
        }
    }

标签:基本,empId,配置文件,流程,mybatis,emp,MyBatis,import,public
From: https://www.cnblogs.com/wztblogs/p/18357444

相关文章

  • Mybatis基本使用
    Mybatis基本使用1.日志输出在mybatis-config.xml中的settings标签配置mybatis的设置项<settings>  <settingname="logImpl"value="STDOUT_LOGGING"/></settings>设置日志的属性是logImpl,其候选值有SLF4J、LOG4J、LOG4J2、STDOUT_LOGGING、NOLOGGING等 2.......
  • 【暂估业务】用友U8暂估业务与流程
    暂估业务:指在采购过程中,遇到采购货物已到,但采购发票还未到的情况 1.月初回冲(本月暂估完成后,下月会自动生成一张红字回冲单)流程:1.到货入库单(只有数量暂无金额)2.存货核算系统进行暂估成本录入3.正常单据记账生单(借:库存商品,贷:应付暂估款)4.月末结账(结账顺序:先采购,再销售,再......
  • 25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.1 树的基本概念
     一、单项选择题————————————————————————————————————————解析:树是一种分层结构,它特别适合组织那些具有分支层次关系的数据。正确答案:D————————————————————————————————————————解......
  • Chapter 34 PyMySQL 基本操作指南
    欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!文章目录前言一、基本操作步骤二、综合案例分析前言在现代应用开发中,与数据库的高效交互是关键的一环。对于使用Python语言的开发者来说,PyMySQL是一个非常实用的工具,它提供了一个简洁且功能强......
  • 【图像去噪】论文复现:新手入门必看!DnCNN的Pytorch源码训练测试全流程解析!为源码做详细
    第一次来请先看【专栏介绍文章】:源码只提供了noiselevel为25的DnCNN-S模型文件。本文末尾有完整代码和训练好的σ=15,25,50的DnCNN-S、σ∈[0,55]的DnCNN-B和CDnCNN-B、DnCNN-3共6个模型文件!读者可以自行下载!本文亮点:以官方Pytorch源代码为基础,在DnCNN-S的基础上,增添Dn......
  • Linux 命令行基本语法和获取帮助
    今天给伙伴们分享一下Linux命令行基本语法和获取帮助,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家关注我的......
  • 用了MyBatis-PLUS的项目 如何优雅的打印SQL
    说明在使用MyBatis-Plus作为ORM框架的时候,会发现默认的日志输出是下面这样的:在参数少并且SQL简单的情况下,这样的SQL我们能通过手动去替换占位符,来获取到真正执行的SQL。但是如果是比较复杂的SQL,或者查询参数比较多的话,一个个替换就比较费时费力了。我们可以通过实现com.baomid......
  • 11、java程序流程控制之三:循环结构(while循环)、循环结构(do-while循环)、break 与 co
    java程序流程控制之三:Ⅰ、循环结构:while循环1、while循环结构:其一、描述:其二、代码为:其三、截图为:Ⅱ、循环结构:do-while循环1、do-while循环结构:其一、描述:其二、代码为:其三、截图为:2、do-while循环结构的案例1:输出正数或负数的个数其一、描述:其二、代码为:其三、......
  • 树-BST基本实现
    之前的数组,栈,链表,队列等都是顺序数据结构,这里来介绍一个非顺序数据结构,树.树在处理有层级相关的数据时非常有用,还有在存储数据如数据库查询实现等场景也是高频使用.作为一种分层数据的抽象模型,在现实中最常见的例子是族谱,公司组织架构图等.我个人觉得树,图等......
  • python-xlsxwriter的基本使用
    安装xlsxwriter:pipinstallXlsxWriter简单实例:#coding:utf-8importxlsxwriterworkbook=xlsxwriter.Workbook('demo1.xlsx')#创建一个Excel文件worksheet=workbook.add_worksheet()#创建一个工作表对象worksheet.set_column('A:A',20)#设定第一列(A)宽度为20像素bold=......