中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

ssm框架中MyBatis怎么用

發布時間:2021-12-30 09:49:40 來源:億速云 閱讀:204 作者:小新 欄目:大數據

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

MyBatis介紹

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

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

MyBatis優點

       MyBatis是一個持久層的框架,它是對JDBC的封裝,要學好MyBatis,首要要對JDBC有一個較深的認識,這里通過比對JDBC來對MyBatis有一個初步的認識,即我們為什么要使用MyBatis。

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

下面對比幾種典型的場景

JDBC(問題)

        1,數據庫連接,使用時就創建,不使用立即釋放,對數據庫進行頻繁連接開啟和關閉,造成數據庫資源浪費,影響數據庫性能。

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

        3,向preparedStatement中設置參數,對占位符號位置和設置參數值,硬編碼在java代碼中,不利于系統維護。

        4,從resutSet中遍歷結果集數據時,存在硬編碼,將獲取表的字段進行硬編碼,不利于系統維護。

MyBatis(對策)

        1,使用數據庫連接池管理數據庫連接。

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

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

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

        對比JDBC持久化的流程,MyBatis很多工作在配置文件中進行設置,減少了很多代碼量,同時也使得代碼結構更加清晰,維護起來也更加方便。

JDBC的工作流程

        1,加載數據庫驅動

        2,創建并獲取數據庫鏈接

        3,創建jdbc statement對象

        4,設置sql語句

        5,設置sql語句中的參數

        6,通過statement執行sql并獲取結果

        7,對sql執行結果進行解析處理

        8,釋放資源

MyBatis的工作流程

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

        5,釋放資源,關閉SqlSession

MyBatis的使用(簡單介紹)

        編寫一個mapper接口和對應的XML文件映射,將所有的SQL語句交給XML進行管理。

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

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

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

        3,mapper.xml中statement的parameterType指定輸入參數的類型和mapper.java的方法輸入參數類型一致

        4,mapper.xml中statement的resultType指定輸出結果的類型和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指定輸入的參數類型

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

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

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

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石棉县| 策勒县| 称多县| 双峰县| 彰武县| 崇仁县| 洪雅县| 湘潭市| 成都市| 清丰县| 文化| 自贡市| 神农架林区| 扶沟县| 南陵县| 锡林浩特市| 凉城县| 马关县| 大宁县| 禹城市| 静宁县| 盱眙县| 大姚县| 娄烦县| 淮滨县| 乌鲁木齐县| 梧州市| 油尖旺区| 阿巴嘎旗| 英山县| 西平县| 绥江县| 子洲县| 塔城市| 托克逊县| 读书| 页游| 瑞安市| 宿迁市| 乐陵市| 友谊县|