1. 程式人生 > 其它 >HBase運維篇 _ ZGC初體驗——HBase1.4.8安裝部署和測試

HBase運維篇 _ ZGC初體驗——HBase1.4.8安裝部署和測試

mybatis總結

1、流程

  1. 建立一個maven專案

  2. 匯入依賴

  3. 建立Mybatis核心配置檔案

    • properties屬性

      • 可以引入外部配置檔案

    • settings設定

      • 設定日誌

      • 設定全域性快取

      • 設定延遲載入

    • typeAliases類型別名

      • 通過指定包將包內類全部起別名

      • 直接指定javabean為其起別名

    • plugins外掛

    • environments(環境配置)

      • 可配置多套環境,用於連線不同的資料庫,SqlSessionFactory 例項只能選擇一種環境

      • environment(環境變數)

        • transactionManager(事務管理器)

        • dataSource(資料來源)

    • mappers對映器

      • 繫結Mapper.xml檔案

  4. 建立javaBean、介面、Mapper.xml檔案

  5. 繫結Mapper.xml或者繫結介面

    • 使用class繫結介面

    • 使用resource繫結Mapper

2、Mapper.xml檔案

  1. 修改基本配置,namespace中的包名要和介面中的包名相同

  2. 編寫CRUD語句

1、SQL對映檔案中的頂級元素:

  • cache – 該名稱空間的快取配置。

  • cache-ref – 引用其它名稱空間的快取配置。

  • resultMap – 描述如何從資料庫結果集中載入物件,是最複雜也是最強大的元素。

  • sql – 可被其它語句引用的可重用語句塊。

2、元素中的屬性:

  • id - 程式碼塊的名

  • parameterType - 傳入的引數型別

  • resultType - 語句返回結果的類名(返回型別,若是集合則返回集合包含的型別)

  • resultMap - 對外部 resultMap 的命名引用

  • flushCache - 設定為true且被呼叫後會導致本地快取和二級快取被清空,預設false

  • useCache - 設定為true後會導致語句的結果被二級快取起來,預設true

3、resultMap的使用

對於聯表查詢可以使用結果集對映的方式獲得返回結果

  • 在查詢語句塊中使用resultMap,引用外部的resultMap

  • 外部resultMap 使用某一個javabean當做返回型別

  • 在外部resultMap將資料庫查詢的欄位對映成javabaen的屬性中

  • 複雜的javabaen屬性可以繼續使用association或collection對其進行進一步的對映

  • association符合多對一的情況

    • <resultMap id="StudentsTeacher2" type="student">
      <result property="id" column="sid"/>
      <result property="name" column="sname"/>
      <association property="teacher" javaType="teacher">
      <result property="id" column="tid"/>
      <result property="name" column="tname"/>
      </association>
      </resultMap>
  • collection符合一對多的情況

    • <resultMap id="teacherStudent" type="teacher">
      <id property="id" column="tid"/>
      <result property="name" column="tname"/>
      <collection property="students" ofType="student">
      <id property="id" column="sid"/>
      <result property="name" column="sname"/>
      <result property="tid" column="tid"/>
      </collection>
      </resultMap>
  • javaType 用來指定實體類中的屬性型別

  • ofType 用來指定對映到List或集合中的pojo型別,泛型中約束的型別

3、動態SQL

  • IF 標籤 - 用於判斷,成立則執行標籤內內容

  • where標籤 - 用於where語句拼接的情況,可自動去掉首條件前面的and和or

  • choose標籤 - 用於多個條件滿足其一足以的情況

    • when標籤

    • otherwise標籤

  • set標籤 - 用於修改語句,可以自動去掉最後一個條件的逗號

  • trim標籤 - 格式化的標記,可完成set或where標記的功能

    • prefix:用來定義set元素或where元素的功能

    • prefixoverride:去掉子句第一個and或者or

    • suffixOverrides:去掉最後一個多餘的逗號

    • suffix:字尾,可以這樣使用suffix=" where id = #{id} "

  • forEach

    • collection="ids" :集合的引用

    • item="id" :遍歷得到的元素引用

    • open="(" :在前面加入元素

    • separator="," :每次遍歷後元素之間的分隔符

    • close=")" :在後面加入元素

4、日誌

  1. 匯入依賴

  2. 設定日誌配置檔案

  3. 在mybatis核心配置檔案中設定日誌

  4. 使用日誌

需掌握的日誌:

  • LOG4J

    • <settings>
      <setting name="logImpl" value="LOG4J"/>
      </settings>
  • COMMONS_LOGGING

    • STDOUT_LOGGING 標準日誌輸出

5、註解

簡單的CRUD可以使用註解實現,在介面的抽象類上使用

// 使用註解查詢
@Select("select * from user")
List<User> getUsers();

注意:使用註解需要在核心配置檔案中繫結介面。在複雜的功能面前註解並不適用

6、mybatis中的模糊查詢

使用mysql的函式實現:

<select id="fuzzyQuery" resultType="com.bin.pojo.Book">
select * from mybatis.book where bookName like
concat('%',#{info},'%');
</select>

7、錯誤整理:

1、找不到mapper中的map

Could not find parameter map com.bin.dao.user.UserMapper.map

到mapper配置檔案中將parameterMap改成parameterType

2、主鍵重複

Duplicate entry '17' for key 'PRIMARY'

3、未寫結果集對映

A query was run and no Result Maps were found for the Mapped Statement 'com.bin.dao.user.UserMapper.getUserCount'. It's likely that neither a Result Type nor a Result Map was specified

4、mapper註冊失敗

org.apache.ibatis.binding.BindingException: Type interface com.bin.dao.UserDao is not known to the MapperRegistry.

5、可能遇到的錯誤:

  1. 配置檔案沒有註冊

  2. 繫結介面錯誤

  3. 方法名不對

  4. 返回型別不對

  5. resource繫結mapper,需要使用路徑

  6. 程式配置檔案必須符合規範

  7. NullPointerException沒有註冊到資源

  8. 輸出的xml檔案中存在中文亂碼問題

  9. maven資源沒有匯出