溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java的MyBatis快速入門(mén)實(shí)例分析

發(fā)布時(shí)間:2023-05-05 10:00:13 來(lái)源:億速云 閱讀:86 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“Java的MyBatis快速入門(mén)實(shí)例分析”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Java的MyBatis快速入門(mén)實(shí)例分析”文章能幫助大家解決問(wèn)題。

    1.什么是MyBatis

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

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

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

    2. JDBC存在的缺點(diǎn)

    既然我們使用MyBatis來(lái)簡(jiǎn)化JDBC開(kāi)發(fā),那么JDBC究竟存在什么缺點(diǎn)呢?

    硬編碼

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

    操作繁瑣

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

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

    Java的MyBatis快速入門(mén)實(shí)例分析

    3.Mybatis簡(jiǎn)化JDBC開(kāi)發(fā)

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

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

    <environment id="test">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <!--數(shù)據(jù)庫(kù)連接信息-->
                    <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在國(guó)內(nèi)市場(chǎng)有很大的使用占比。

    4.MyBatis快速入門(mén)|實(shí)戰(zhàn)項(xiàng)目詳解

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

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

    2. 創(chuàng)建模塊,導(dǎo)入坐標(biāo)

    3. 編寫(xiě)MyBatis 核心配置文件,替換連接信息來(lái)解決硬編碼的問(wèn)題

    4. 編寫(xiě)SQL映射文件,統(tǒng)一管理sql語(yǔ)句,解決編碼問(wèn)題

    5. 編寫(xiě)代碼

    在編寫(xiě)代碼是使用以下步驟:

    1. 定義POJO類(lèi)

    2. 加載核心配置文件,獲取sqlSessionFactory對(duì)象

    3. 獲取sqlSession對(duì)象,執(zhí)行sql語(yǔ)句

    4. 釋放資源

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

    Java的MyBatis快速入門(mén)實(shí)例分析

    下面演示通過(guò)詳細(xì)的演示,快速入門(mén)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', '女', '上海');

    Java的MyBatis快速入門(mén)實(shí)例分析

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

    在idea中創(chuàng)建模塊,導(dǎo)入坐標(biāo):

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

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

    接下來(lái)導(dǎo)入mysql依賴,junit坐標(biāo)和logback坐標(biāo),把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>

    編寫(xiě)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ù)庫(kù)連接信息-->
                    <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>

    編寫(xiě)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>

    完成以上操作就可以進(jìn)行編碼了,首先要定義POJO類(lèi):

    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對(duì)象:

    首先需要?jiǎng)?chuàng)建一個(gè)MyBatisDemo.java文件,添加一個(gè)主方法,編寫(xiě)代碼。

    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對(duì)象,執(zhí)行sql語(yǔ)句:

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

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

    Java的MyBatis快速入門(mén)實(shí)例分析

    關(guān)于“Java的MyBatis快速入門(mén)實(shí)例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI