您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關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怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。