Mybatis 從零到入門

前言

最近,再找工做,仍是一個菜鳥的我,感受找個工做仍是比較困難,一個契機,公司給發了一個面試題,以下
11587006865_.pic_hd.jpgjava

這也讓我對Mybatis有了一個入門的瞭解git

上述Demo地址github

Mybatis簡介

官網對Mybatis的介紹:面試

MyBatis 是支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架。MyBatis 避免了幾乎全部的 JDBC 代碼和手工設置參數以及抽取結果集。MyBatis 使用簡單的 XML 或註解來配置和映射基本體,將接口和 JavaPOJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。數據庫

官網地址mybatis

提到 Mybatis就會想到 Hibernate;
HibernateMybatis又有什麼區別呢!

HibernateMybatis區別

  • Mybatis:

    1. mybatis自己就很小且簡單,即學即用,比較靈活app

    2. 能夠進行更爲細緻的SQL優化,能夠減小查詢字段(不須要使用JsonView)。框架

    3. 編寫SQL語句時工做量很大,尤爲是字段多、關聯表多時,更是如此。
    4. 不太容易適應快速數據庫修改,對SQL語句編寫能力要求高學習

    5. SQL語句依賴於數據庫,致使數據庫移植性差,不能更換數據庫。優化

  • hibernate:

    1. 功能強大,數據庫無關性好,開發速度很快,效率高。
    2. Hibernate能夠自動生成SQL語句,自動執行,不須要編寫的SQL語句。
    3. 使用Hibernate,移植性好(只要使用Hibernate標準開發,更換數據庫時,只須要配置相應的配置文件就能夠了,不須要作其它任務的操做)
    4. 缺點就是學習門檻不低,比較複雜,要學到精通門檻更高。

hibernate是全自動,而mybatis是半自動

Mybatis配置

// 對應的xml配置文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
// 對應的實體包
mybatis.type-aliases-package=com.example.demo.entity
// 開啓debug模式,打印SQL語句
logging.level.com.example.demo.mapper=debug

Mybatis 映射關係

<resultMap id="goodResultMap" type="com.example.demo.entity.Good④">
    <id property="id③" column="p_id②"/>
    <result property="name③" column="name1②"/>
    <result property="description③" column="description②"/>
    <result property="stock③" column="stock②"/>
    <association property="unit" javaType="Unit">
        <id property="id" column="c_id②"/>
    </association>
</resultMap>

<select id="findById⑤" resultMap="goodResultMap">
    SELECT good.id① AS p_id,
    good.description①,
    good.`name`① AS name1,
    good.stock①,
    good.unit_id① AS c_id,
    FROM good LEFT OUTER JOIN unit ON good.unit_id = unit.id
    WHERE good.id = #{id⑥,jdbcType=INTEGER};
</select>

① 既查詢須要返回的字段名稱,對應數據表
image.png
② 對應AS後的名稱(至關於把name起了一個別名叫name1,既name1與②對應);若是沒有起別名既與原來數據表中名稱一致
③ 對應④實體裏邊的字段名稱
⑤ 對應倉庫層的方法名稱,如Good findById(@Param("id")⑥ Long id); ⑥ 對應傳入的參數id

Mybatis 註解

同時Mybatis 也提供了一些註解

  • 基礎CRUD註解,
    @Select
    @Insert
    @Update
    @Delete

在使用@Select 註解查詢時,只能對單表進行查詢,要想查詢關聯表須要映射註解

  • 映射註解:
    @Results 用於填寫結果集的多個字段的映射關係.
    @Result 用於填寫結果集的單個字段的映射關係.
    @ResultMap 根據ID關聯XML裏面<resultMap>.
對於註解還只是瞭解層面,沒有使用過註解進行關係映射,只是使用簡單的單表CRUD

總結

要一生跟本身的無知做鬥爭,活到老,學到老,學海無涯!!

相關文章
相關標籤/搜索