日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

MyBatis快速入門案例

作者:W-琑 更新時間: 2024-03-07 編程語言

目錄

1.準備數(shù)據(jù)庫

2.創(chuàng)建項目,導入依賴

3.創(chuàng)建實體類

4.創(chuàng)建Mapper接口和Mapper.xml文件

5.MyBatis配置文件-通常命名為mybatis-config.xml

6.測試


1.準備數(shù)據(jù)庫

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.創(chuàng)建項目,導入依賴

創(chuàng)建項目

導入依賴到pom.xml

<dependencies>
  <!-- mybatis依賴 -->
  <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.11</version>
  </dependency>

  <!-- MySQL驅(qū)動 mybatis底層依賴jdbc驅(qū)動實現(xiàn),本次不需要導入連接池,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.創(chuàng)建實體類

public class Employee {

    private Integer empId;

    private String empName;

    private Double empSalary;
    
    //getter | setter
}

4.創(chuàng)建Mapper接口和Mapper.xml文件

Mybatis 中的 Mapper 接口相當于以前的 Dao。但是區(qū)別在于,Mapper 僅僅只是建接口即可,我們不需要提供實現(xiàn)類,具體的SQL寫到對應(yīng)的Mapper文件,該用法的思路如下圖所示:

a.定義mapper接口

package com.atguigu.mapper;

import com.atguigu.pojo.Employee;

/**
 * t_emp表對應(yīng)數(shù)據(jù)庫SQL語句映射接口!
 *    接口只規(guī)定方法,參數(shù)和返回值!
 *    mapper.xml中編寫具體SQL語句!
 */
public interface EmployeeMapper {

    /**
     * 根據(jù)員工id查詢員工數(shù)據(jù)方法
     * @param empId  員工id
     * @return 員工實體對象
     */
    Employee selectEmployee(Integer empId);
    
}

b.定義mapper.xml文件

位置:resources/mappers/EmployeeMapper.xml

<?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接口類的全限定名,這樣實現(xiàn)對應(yīng) -->
<mapper namespace="com.atguigu.mapper.EmployeeMapper">
    
    <!-- 查詢使用 select標簽
            id = 方法名
            resultType = 返回值類型
            標簽內(nèi)編寫SQL語句
     -->
    <select id="selectEmployee" resultType="com.atguigu.pojo.Employee">
        <!-- #{empId}代表動態(tài)傳入的參數(shù),并且進行賦值!后面詳細講解 -->
        select emp_id empId,emp_name empName, emp_salary empSalary from 
           t_emp where emp_id = #{empId}
    </select>
</mapper>

注意:

  • 方法名和SQL的id一致
  • 方法返回值和resultType一致
  • 方法的參數(shù)和SQL的參數(shù)一致
  • 接口的全類名和映射配置文件的名稱空間一致

5.MyBatis配置文件-通常命名為mybatis-config.xml

mybatis框架配置文件: 數(shù)據(jù)庫連接信息,性能配置,mapper.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的開發(fā)環(huán)境,可以配置多個環(huán)境,在眾多具體環(huán)境中,使用default屬性指定實際運行時使用的環(huán)境。default屬性的取值是environment標簽的id屬性的值。 -->
  <environments default="development">
    <!-- environment表示配置Mybatis的一個具體的環(huán)境 -->
    <environment id="development">
      <!-- Mybatis的內(nèi)置的事務(wù)管理器 -->
      <transactionManager type="JDBC"/>
      <!-- 配置數(shù)據(jù)源 -->
      <dataSource type="POOLED">
        <!-- 建立數(shù)據(jù)庫連接的具體信息 -->
        <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="root"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
    <!-- Mapper注冊:指定Mybatis映射文件的具體位置 -->
    <!-- mapper標簽:配置一個具體的Mapper映射文件 -->
    <!-- resource屬性:指定Mapper映射文件的實際存儲位置,這里需要使用一個以類路徑根目錄為基準的相對路徑 -->
    <!--    對Maven工程的目錄結(jié)構(gòu)來說,resources目錄下的內(nèi)容會直接放入類路徑,所以這里我們可以以resources目錄為基準 -->
    <mapper resource="mappers/EmployeeMapper.xml"/>
  </mappers>

</configuration>

6.測試

/**
 * projectName: com.atguigu.test
 *
 * description: 測試類
 */
public class MyBatisTest {

    @Test
    public void testSelectEmployee() throws IOException {

        // 1.創(chuàng)建SqlSessionFactory對象
        // ①聲明Mybatis全局配置文件的路徑
        String mybatisConfigFilePath = "mybatis-config.xml";

        // ②以輸入流的形式加載Mybatis配置文件
        InputStream inputStream = Resources.getResourceAsStream(mybatisConfigFilePath);

        // ③基于讀取Mybatis配置文件的輸入流創(chuàng)建SqlSessionFactory對象
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 2.使用SqlSessionFactory對象開啟一個會話
        SqlSession session = sessionFactory.openSession();

        // 3.根據(jù)EmployeeMapper接口的Class對象獲取Mapper接口類型的對象(動態(tài)代理技術(shù))
        EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);

        // 4. 調(diào)用代理類方法既可以觸發(fā)對應(yīng)的SQL語句
        Employee employee = employeeMapper.selectEmployee(1);

        System.out.println("employee = " + employee);

        // 4.關(guān)閉SqlSession
        session.commit(); //提交事務(wù) [DQL不需要,其他需要]
        session.close(); //關(guān)閉會話

    }
}

原文鏈接:https://blog.csdn.net/weixin_69134926/article/details/136479170

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新