欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java的MyBatis快速入門和實戰(zhàn)詳解

 更新時間:2023年05月01日 09:54:43   作者:橙 子_  
這篇文章主要介紹了Java的MyBatis快速入門和實戰(zhàn)詳解,MyBatis是一款優(yōu)秀的持久層框架,用于簡化JDBC開發(fā),是一套可重用的,通用的,軟件基礎(chǔ)代碼模型,需要的朋友可以參考下

1.什么是MyBatis?

在這里插入圖片描述

簡單來說,MyBatis是一款優(yōu)秀的持久層框架,用于簡化JDBC開發(fā)。MyBatis本身是Apache的一個開源項目,期初叫做iBatis,2010年這個項目前移到google code,并改名為MyBatista。在2013年該項目遷移到GitHub。

概念中的持久層怎么理解?指將數(shù)據(jù)保存到數(shù)據(jù)庫的那一層代碼。在海量的代碼中,為了保證每一塊代碼的職責單一,把同數(shù)據(jù)庫操作的代碼叫做持久層。同時,JavaEE三層架構(gòu)中,表現(xiàn)層負責頁面的展示,業(yè)務(wù)層負責邏輯的處理,而持久層就是負責將數(shù)據(jù)存儲到數(shù)據(jù)庫中。

什么是框架?框架是指一個半成品的軟件,是一套可重用的,通用的,軟件基礎(chǔ)代碼模型,同時,在框架基礎(chǔ)之上進行開發(fā)大量的節(jié)省了成本,而且更加的規(guī)范,通用且擴展性較強。

2. JDBC存在的缺點

既然我們使用MyBatis來簡化JDBC開發(fā),那么JDBC究竟存在什么缺點呢?

硬編碼

首先在注冊驅(qū)動,獲取鏈接的時候,字符串信息如果發(fā)生變動,例如密碼,此時需要手動修改。其次,在定義sql語句時候,使用字符串同樣使得代碼的維護性變差。

操作繁瑣

當我們手動設(shè)置參數(shù)和手動設(shè)置結(jié)果集時,存在著操作繁瑣的問題。

下面JDBC使用的一段代碼做展示:

在這里插入圖片描述

3.Mybatis簡化JDBC開發(fā)

既然JDBC開發(fā)存在硬編碼,操作繁瑣的缺點,那么怎么解決這些問題呢?首先我們把字符串寫到單獨的配置文件中,解決JDBC硬編碼的問題,其次,可以采用一種方法來自動完成JDBC操作繁瑣的代碼。于是,我們使用MyBatis來簡化JDBC開發(fā)。MyBatis免除了幾乎所有的JDBC代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。

例如:在配置文件中寫入?yún)?shù)信息,將來使用時直接讀取,解決硬編碼的問題

<environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--數(shù)據(jù)庫連接信息-->
                <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>

市面上的持久層框架有很多的選擇,但是MyBatis在國內(nèi)市場有很大的使用占比。

4.MyBatis快速入門|實戰(zhàn)項目詳解

我們通過實踐操作快速查詢user表中所有的數(shù)據(jù)來入門MyBatis,即查詢user表中的數(shù)據(jù),放到user對象里,在分別把對方放入集合中完成操作。通過以下步驟來完成操作:

  1. 創(chuàng)建user表,添加數(shù)據(jù)
  2. 創(chuàng)建模塊,導入坐標
  3. 編寫MyBatis 核心配置文件,替換連接信息來解決硬編碼的問題
  4. 編寫SQL映射文件,統(tǒng)一管理sql語句,解決編碼問題
  5. 編寫代碼

在編寫代碼是使用以下步驟:

  1. 定義POJO類
  2. 加載核心配置文件,獲取sqlSessionFactory對象
  3. 獲取sqlSession對象,執(zhí)行sql語句
  4. 釋放資源

整體的項目結(jié)構(gòu)展示:

在這里插入圖片描述

下面演示通過詳細的演示,快速入門MyBatis: 

創(chuàng)建user表,添加數(shù)據(jù):

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),
	gender char(1),
	addr varchar(30)
);
INSERT INTO tb_user VALUES (1, '小張', 'abc', '男', '北京');
INSERT INTO tb_user VALUES (2, '小李', '123', '女', '天津');
INSERT INTO tb_user VALUES (3, '小美', '456', '女', '上海');

在這里插入圖片描述

這里使用的是MySQL數(shù)據(jù)庫,使用navicat作為數(shù)據(jù)庫的可視化工具。

在idea中創(chuàng)建模塊,導入坐標:

在idea中點擊新建項目,構(gòu)建系統(tǒng)選擇Maven,輸入項目名稱(這里使用MyBatis-demo),設(shè)置組ID和工件ID,點擊創(chuàng)建。接下來導入的依賴,將下面的依賴代碼置于 pom.xml 文件中:

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

接下來導入mysql依賴,junit坐標和logback坐標,把logback.xml配置文件粘貼到resources中:

<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>

編寫MyBatis 核心配置文件:

在MyBatis-demo/src/main/resources中新建配置文件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 default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--數(shù)據(jù)庫連接信息-->
                <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="abc123"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加載sql的映射文件-->
        <mapper resource="UerMapper.xml"/>
    </mappers>
</configuration>

編寫SQL映射文件:

在MyBatis-demo/src/main/resources中添加sql的映射文件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.example.pojo.User">
        select * from tb_user;
    </select>
</mapper>

修改MyBatis的核心配置文件,用于加載sql的映射文件。

  <mappers>
        <!--加載sql的映射文件-->
        <mapper resource="UserMapper.xml"/>
  </mappers>

完成以上操作就可以進行編碼了,首先要定義POJO類:

package com.example.pojo;
public class User {
    private Integer id;
    private String username;
    private String password;
    private String gender;
    private String addr;
    public Integer getId() {
        return id;
    }
    public String getUsername() {
        return username;
    }
    public String getPassword() {
        return password;
    }
    public String getGender() {
        return gender;
    }
    public String getAddr() {
        return addr;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", gender='" + gender + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}

加載核心配置文件,獲取sqlSessionFactory對象:

首先需要創(chuàng)建一個MyBatisDemo.java文件,添加一個主方法,編寫代碼。

public class MyBatisDemo {
    public static void main(String[] args) throws IOException {
    	//加載MyBatis核心配置文件
        String resource = "mybatis.config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
}

獲取sqlSession對象,執(zhí)行sql語句:

//獲取SqlSession對象,用它來執(zhí)行sql
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //執(zhí)行sql
        List<User> users = sqlSession.selectList("test.selectALL");
        System.out.println(users);
		//釋放資源
        sqlSession.close();

到這里我們就完成了整個項目的構(gòu)建,接下來我們運行程序,可以看到,我們成功的查詢到tb_user中的數(shù)據(jù)!

在這里插入圖片描述

到此這篇關(guān)于Java的MyBatis快速入門和實戰(zhàn)詳解的文章就介紹到這了,更多相關(guān)MyBatis快速入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java依賴注入容器超詳細全面講解

    Java依賴注入容器超詳細全面講解

    依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個概念。具體含義是:當某個角色(可能是一個Java實例,調(diào)用者)需要另一個角色(另一個Java實例,被調(diào)用者)的協(xié)助時,在 傳統(tǒng)的程序設(shè)計過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例
    2023-01-01
  • JDK 1.8 安裝配置教程(win7 64bit )

    JDK 1.8 安裝配置教程(win7 64bit )

    這篇文章主要為大家詳細介紹了win7 64bit下JDK 1.8 安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java優(yōu)秀測試框架TestNG詳解

    Java優(yōu)秀測試框架TestNG詳解

    這篇文章主要為大家詳細介紹了Java優(yōu)秀測試框架TestNG,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java數(shù)組看這篇就夠了

    Java數(shù)組看這篇就夠了

    這篇文章主要介紹了Java數(shù)組的詳細解釋,是Java入門學習中的基礎(chǔ)知識,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • java實現(xiàn)置換密碼加密解密

    java實現(xiàn)置換密碼加密解密

    這篇文章主要為大家詳細介紹了java實現(xiàn)置換密碼加密解密,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • java實現(xiàn)dijkstra最短路徑尋路算法

    java實現(xiàn)dijkstra最短路徑尋路算法

    這篇文章主要為大家詳細介紹了java實現(xiàn)dijkstra最短路徑尋路算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 聊聊Object類中的wait()和notify()方法

    聊聊Object類中的wait()和notify()方法

    這篇文章主要介紹了Object類中的wait()和notify()方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Pulsar負載均衡原理及優(yōu)化方案詳解

    Pulsar負載均衡原理及優(yōu)化方案詳解

    這篇文章主要為大家介紹了Pulsar負載均衡原理及優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java中垃圾回收器GC對吞吐量的影響測試

    Java中垃圾回收器GC對吞吐量的影響測試

    這篇文章主要介紹了Java中垃圾回收器GC對吞吐量的影響測試,本文算是一個對垃圾回收器GC的優(yōu)化文章,需要的朋友可以參考下
    2014-09-09
  • JAVA OutputStreamWriter流的實現(xiàn)

    JAVA OutputStreamWriter流的實現(xiàn)

    OutputStreamWriter是從字符流到字節(jié)流的橋接,它使用的字符集可以通過名稱指定,也可以明確指定,或者可以接受平臺的默認字符集,本文詳細的介紹了JAVA OutputStreamWriter流的使用,感興趣的可以了解一下
    2021-06-06

最新評論