溫馨提示×

溫馨提示×

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

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

ssm框架中MyBatis怎么用

發(fā)布時間:2021-12-30 09:49:40 來源:億速云 閱讀:195 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)ssm框架中MyBatis怎么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

MyBatis介紹

      1, MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)集。     

       2,MyBatis 可以對配置和原生Map使用簡單的 XML 或注解,將接口和 Java 的實體類映射成數(shù)據(jù)庫中的記錄。

MyBatis優(yōu)點

       MyBatis是一個持久層的框架,它是對JDBC的封裝,要學(xué)好MyBatis,首要要對JDBC有一個較深的認(rèn)識,這里通過比對JDBC來對MyBatis有一個初步的認(rèn)識,即我們?yōu)槭裁匆褂肕yBatis。

       使用JDBC操作數(shù)據(jù)庫存在一些問題,例如代碼冗余,需要寫很多重復(fù)的代碼,不便于維護(hù)等,MyBatis正是為解決這些痛點而誕生的。

下面對比幾種典型的場景

JDBC(問題)

        1,數(shù)據(jù)庫連接,使用時就創(chuàng)建,不使用立即釋放,對數(shù)據(jù)庫進(jìn)行頻繁連接開啟和關(guān)閉,造成數(shù)據(jù)庫資源浪費,影響數(shù)據(jù)庫性能。

        2,將sql語句硬編碼到Java代碼中,如果sql語句修改,需要重新編譯java代碼,不利于系統(tǒng)維護(hù)。

        3,向preparedStatement中設(shè)置參數(shù),對占位符號位置和設(shè)置參數(shù)值,硬編碼在java代碼中,不利于系統(tǒng)維護(hù)。

        4,從resutSet中遍歷結(jié)果集數(shù)據(jù)時,存在硬編碼,將獲取表的字段進(jìn)行硬編碼,不利于系統(tǒng)維護(hù)。

MyBatis(對策)

        1,使用數(shù)據(jù)庫連接池管理數(shù)據(jù)庫連接。

        2,將sql語句配置在xml配置文件中,即使sql變化,不需要對java代碼進(jìn)行重新編譯。

        3,將sql語句及占位符號和參數(shù)全部配置在xml中。

        4,將查詢的結(jié)果集,自動映射成java對象。

        對比JDBC持久化的流程,MyBatis很多工作在配置文件中進(jìn)行設(shè)置,減少了很多代碼量,同時也使得代碼結(jié)構(gòu)更加清晰,維護(hù)起來也更加方便。

JDBC的工作流程

        1,加載數(shù)據(jù)庫驅(qū)動

        2,創(chuàng)建并獲取數(shù)據(jù)庫鏈接

        3,創(chuàng)建jdbc statement對象

        4,設(shè)置sql語句

        5,設(shè)置sql語句中的參數(shù)

        6,通過statement執(zhí)行sql并獲取結(jié)果

        7,對sql執(zhí)行結(jié)果進(jìn)行解析處理

        8,釋放資源

MyBatis的工作流程

        1,配置mybatis的配置文件,SqlMapConfig.xml
        2,通過配置文件,加載mybatis運行環(huán)境,創(chuàng)建SqlSessionFactory會話工廠。
        3,通過SqlSessionFactory創(chuàng)建SqlSession。SqlSession是一個面向用戶接口(提供操作數(shù)據(jù)庫方法),實現(xiàn)對象是線程不安全的,建議sqlSession應(yīng)用場合在方法體內(nèi)。
        4,調(diào)用sqlSession的方法去操作數(shù)據(jù)。如果需要提交事務(wù),需要執(zhí)行SqlSession的commit()方法。

        5,釋放資源,關(guān)閉SqlSession

MyBatis的使用(簡單介紹)

        編寫一個mapper接口和對應(yīng)的XML文件映射,將所有的SQL語句交給XML進(jìn)行管理。

        在編寫mapper.xml(映射文件)和mapper.java需要遵循以下規(guī)范:

        1,mapper.xml中namespace就是mapper.java的類全路徑。

        2,mapper.xml中statement的id和mapper.java中方法名一致。

        3,mapper.xml中statement的parameterType指定輸入?yún)?shù)的類型和mapper.java的方法輸入?yún)?shù)類型一致

        4,mapper.xml中statement的resultType指定輸出結(jié)果的類型和mapper.java的方法返回值類型一致。

如下,舉例一個簡單的mapper的用法

mapper.java

public interface CommitMapper {    
   /**     * 新增評論     */    public void addCommit(Commit commit) throws Exception;    
   /**     * 刪除評論     */    public List<Commit> findCommitList(Integer commit_id) throws Exception; }

mapper.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="com.amuxia.mapper.CommitMapper">
    <select id="addCommit" parameterType="com.amuxia.pojo.Commit">
        insert into
        tb_commit
       (
       commit_content,
       commit_user_id,
       commit_goods_id
       )
       value        (
       #{commit_content},
       #{commit_user_id},
       #{commit_goods_id}
       )    </select>    <select id="findCommitList" parameterType="integer"        resultType="com.amuxia.pojo.Commit">        select        c.commit_id,
       c.commit_content        from
       tb_commit c,
       tb_user u,
       tb_goods g
       where
       c.commit_user_id=u.user_id        and c.commit_id=g.id
       and c.commit_id=#{commit_id}    </select></mapper>

       名詞解釋

        1,parameterType:MyBatis中通過parameterType指定輸入的參數(shù)類型

        2,resultType:MyBatis中通過resultType指定輸出的結(jié)果。

        3,#{}:表示的是占位符,#{}接收的參數(shù)是輸入的參數(shù),類型可以是簡單類型、pojo、hashmap

        #{}如果接收的是簡單類型的話,里面的值可以value或者其他名稱

        #{}接收pojo對象,通過OGNL讀取對象中的屬性值,通過屬性.屬性的方式獲取。

        4,selectOne:表示查詢出一條記錄,如果是使用selectone是可以實現(xiàn)的結(jié)果,selectList也是可以實現(xiàn)了(list中只有一個對象)

        5,selectList:表示查詢出一個列表(多條記錄)進(jìn)行映射的。如果是使用selectOne是不可以實現(xiàn)的。

感謝各位的閱讀!關(guān)于“ssm框架中MyBatis怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

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

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

AI