日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2.平凡之路-初识MyBatis

發布時間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.平凡之路-初识MyBatis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以對配置和原生Map使用簡單的 XML 或注解,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。[來自官方文檔]

1.MyBatis的優點和缺點

  • 優點

  • 易于上手和掌握。

  • sql寫在xml里,便于統一管理和優化。

  • 解除sql與程序代碼的耦合。

  • 提供映射標簽,支持對象與數據庫的ORM字段關系映射

  • 提供對象關系映射標簽,支持對象關系組建維護

  • 提供xml標簽,支持編寫動態sql。

  • 缺點

  • sql工作量很大,尤其是字段多、關聯表多時,更是如此。

  • sql依賴于數據庫,導致數據庫移植性差。

  • 由于xml里標簽id必須唯一,導致DAO中方法不支持方法重載。[重點注意]

  • 字段映射標簽和對象關系映射標簽僅僅是對映射關系的描述,具體實現仍然依賴于sql。(比如配置了一對多Collection標簽,如果sql里沒有join子表或查詢子表的話,查詢后返回的對象是不具備對象關系的,即Collection的對象為null)

  • DAO層過于簡單,對象組裝的工作量較大。

  • 不支持級聯更新、級聯刪除。

  • 編寫動態sql時,不方便調試,尤其邏輯復雜時。

  • 提供的寫動態sql的xml標簽功能簡單(連struts都比不上),編寫動態sql仍然受限,且可讀性低。

  • 若不查詢主鍵字段,容易造成查詢出的對象有“覆蓋”現象。

  • 參數的數據類型支持不完善。(如參數為Date類型時,容易報沒有get、set方法,需在參數上加@param)

  • 多參數時,使用不方便,功能不夠強大。(目前支持的方法有map、對象、注解@param)

  • 緩存使用不當,容易產生臟數據。二級緩存機制不佳,需要使用第三方的緩存框架。

2.MyBatis安裝

首先我們需要聲明一下iBatis和MyBatis都是一個組織開發,只是版本不相同而已,就想我們學習的Java的版本命名規則類似,實際上MyBatis就是iBatis的一個大版本號的提升。
下載地址:https://github.com/mybatis/my...
官方文檔:http://www.mybatis.org/mybati...

3.MyBatis的環境搭建

(1) 新建Java項目

  • 新建lib文件夾,導入mybatis-3.4.2.jar的框架核心包和MySQL的數據庫驅動包

  • 選中兩個Jar包,右鍵選擇Bulid Path

(2) 新建MyBatis核心配置文件

個人建議將核心配置文件建立在mybatis-config.xml文件

  • 新建核心xml文件
    需要設置文檔類型

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration></configuration>
  • 配置數據源

<!-- 配置數據庫環境 --><environments default="development"><environment id="development"><!-- 事務管理器:保證數據的完整性和一致性 --><!-- 框架:默認情況下CUD操作需要手動提交事務 --><transactionManager type="JDBC" /><!-- 使用的是連接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://127.0.0.1:3306/cy42_mss" /><property name="username" value="root" /><property name="password" value="shxt" /></dataSource></environment></environments>

百度Java如何實行連接池的原理?

  • 配置加載映射文件

<mappers><mapper resource="com/shxt/model/ShxtMapper.xml"/></mappers>
  • 附錄

(3) 新建MyBatis映射文件

  • 位置建立: com/shxt/model/ShxtMapper.xml

  • 建立映射文件頭部信息和命名空間

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- <mapper namespace="命名空間,唯一的不能重復"> --> <mapper namespace="shxt.cy42.mss"></mapper>

目前我們使用的傳統模式,那么namespace一般建議使用持久化類的全路徑com.shxt.model.User這樣的字符串保持一致,方便后面代碼處理.
但是,我們現在沒有持久化類,所以就是設置了一個簡單的字符串

  • 定制SQL語句,簡單測試

<!-- 定制SQL語句 --><insert id="add01">INSERT INTO skill (skill_name,num) VALUES ('JS',75)</insert>
  • 附錄

(4) 測試代碼

public class API的調用過程演示 {public static void main( String[] args ) {//讀取核心配置文件的位置//InputStream is = Resources.getResourceAsStream("com/shxt/model/mybatis-config.xml");SqlSession sqlSession = null;try {//1.讀取核心配置文件InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//2.創建SqlSession工廠SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);//3.獲取SqlSession //****** SqlSession完成所有的持久化操作CRUDsqlSession = sqlSessionFactory.openSession();//4.關鍵步驟: 定位執行SQL語句 重點重點重點//****如何定位 (namespace+"."+id)int row = sqlSession.insert("shxt.cy42.mss.add01");//5.針對于CUD操作需要手動提交事務sqlSession.commit();System.out.println("影響的行數:"+row);} catch (IOException ex) {ex.printStackTrace();}finally {//6.關閉資源if(sqlSession!=null){sqlSession.close();}}}}

總結

以上是生活随笔為你收集整理的2.平凡之路-初识MyBatis的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。