首頁 > 軟體

Mybatis入門指南之實現對資料庫增刪改查

2022-10-30 14:00:26

前言

我們關於Spring和Spring MVC的學習也有一段時間了,都還沒有進行過資料庫的操作,而在實際專案中資料庫是必不可少的部分,所以我們接下來將來學習Mybatis框架來對資料庫進行一些操作。

MyBatis

簡介

Mybatis原本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation遷移到了google code,並且改名為MyBatis,2013年11月遷移到Github。Mybatis是一個實現了資料持久化的開源框架,簡單理解就是對JDBC進行封裝封裝再封裝。

所以當看到iBatis的時候我們就應該知道,iBatis就是Mybatis。現在還有很多我們引入的包名還是寫的是iBatis。

優點

  • 與JDBC相比,減少了50%以上的程式碼量。 
  • Mybatis是最簡單的持久化框架,小巧並且簡單易學。 
  • Mybatis靈活,不會對應用程式或者資料庫的現有設計強加任何影響,SQL寫在XML裡,從程式程式碼中徹底分離,降低耦合度,便於統一管理和優化,可重用。 
  • 提供XML標籤,支援編寫動態SQL語句(XML中使用if, else)。  
  • 提供對映標籤,支援物件與資料庫的ORM欄位關係對映(在XML中設定對映關係,也可以使用註解)。

缺點

  • SQL語句的編寫工作量較大。
  • SQL語句依賴於資料庫,導致資料庫移植性差,不能隨意更換資料庫。

搭建第一個Mybatis程式

新建專案。

自定義專案名,我這裡定義為myBatisDemo。

引入pom.xml依賴。

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
</dependency>

我們需要引入mybatis依賴、mysql依賴和lombok依賴。

lombok依賴我們前面就使用過,我們可以簡化實體類的開發。而mybatis依賴和mysql依賴是我們資料庫的依賴。

新建資料庫資料表。

我們對資料庫進行操作首先就要有資料庫。所以我們來新建一個資料庫。我們這裡使用工具建立,不需要手敲SQL命令。

新建一個資料庫名為test,庫中建一個名為Students的資料表。

現在我們的表中還沒有資料,等下我們使用程式碼來對資料庫進行增刪改查的操作。

新建Student實體類。

package com.xyj.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private long id;
    private String name;
    private int age;
}

我們實體類中的屬性要對應我們資料庫表中的欄位。

設定Mybatis的組態檔。

在resources資原始檔夾下面建立config.xml組態檔。

在comfig.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 default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?
                useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

driver、url、username、password分別對應資料庫驅動、路徑、使用者名稱和密碼。

建立StudentMapper.xml檔案。

我們在開發中需要為每個實體類建立mapper檔案,我們需要在其中寫我們對該該實體類進行操作的SQL語句。

<?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="com.xyj.mapper.StudentMapper">

    <!--    增   -->
    <insert id="add" parameterType="com.xyj.entity.Student">
        insert into students (id,name,age) values (#{id},#{name},#{age})
    </insert>

    <!--    刪   -->
    <delete id="delete" parameterType="int">
        delete from students where id = #{id};
    </delete>

    <!--    改   -->
    <update id="update" parameterType="com.xyj.entity.Student">
        update students set age = #{age} where id = #{id}
    </update>

    <!--    查   -->
    <select id="query" resultType="com.xyj.entity.Student">
        select * from students
    </select>
</mapper>

在mapper檔案中增刪改查對應的標籤為insertdeleteupdateselect。標籤中id是我們之後呼叫的名字,parameterType表示我們需要傳遞的值的型別。我們這裡傳值使用#{}的格式。

在config.xml中加入mapper。

<mappers>
    <mapper resource="com/xyj/mapper/StudentMapper.xml"></mapper>
</mappers>

呼叫Mybitis原生介面進行操作

public static void main(String[] args) {
    InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
}

我們首先使用輸入流對config.xml檔案進行讀取,然後使用sqlSessionFactoryBuilderbuild方法建立sqlSessionFactory,再用sqlSessionFactoryopenSession方法建立sqlSession

Student student1 = new Student(1L,"小明",16);
Student student2 = new Student(2L,"小紅",15);
sqlSession.insert("com.xyj.mapper.StudentMapper.add",student1);
sqlSession.insert("com.xyj.mapper.StudentMapper.add",student2);
sqlSession.commit();
sqlSession.close();

呼叫sqlSessioninsert方法,傳入第一個引數為我們實體類對應mapper檔案中對應的操作id,第二個引數為資料。

我們執行完sql之後還需要提交事務,最後釋放資源。

執行結果

成功在資料表中新增了兩條資料。

sqlSession.delete("com.xyj.mapper.StudentMapper.delete",2);

我們這裡呼叫delete方法,刪除id為2的學生資料。

執行結果

刪除成功!

Student student  = new Student(1L,"小剛",19);
sqlSession.update("com.xyj.mapper.StudentMapper.update",student);

呼叫update方法修改資料。

執行結果

修改資料成功!

我們再新增兩條資料。

List<Student> studentList = sqlSession.selectList("com.xyj.mapper.StudentMapper.query");
System.out.println(studentList);

我們用List接收查詢的資料再列印出來。

列印結果

[Student(id=1, name=小剛, age=19), Student(id=2, name=小明, age=15), Student(id=3, name=小紅, age=17)]

查詢成功!

總結

關於Mybatis入門設定以及使用原生介面進行增刪改查操作就是這樣,接下來的內容我將來講解Mapper代理的方式進行操作。喜歡的小夥伴們多多支援,你們的支援就是我更新的動力。

到此這篇關於Mybatis入門指南之實現對資料庫增刪改查的文章就介紹到這了,更多相關Mybatis對資料庫增刪改查內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com