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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java元婴期(22)----java进阶(mybatis(1)---mybatis框架概述入门程序)

發布時間:2025/3/21 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java元婴期(22)----java进阶(mybatis(1)---mybatis框架概述入门程序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.對原生態jdbc程序中問題總結(為啥要用mybatis)

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

設想:使用數據庫連接池管理數據庫連接。

?

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

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

?

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

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

?

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

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

2.mybatis框架

1.mybatis是什么?

1.mybatis是一個持久層的框架,是apache下的頂級項目。

2.mybatis托管到goolecode下,再后來托管到github下(https://github.com/mybatis/mybatis-3/releases)。

3.mybatis讓程序將主要精力放在sql上,通過mybatis提供的映射方式,自由靈活生成(半自動化,大部分需要程序員編寫sql)滿足需要sql語句。

4.mybatis可以將向 preparedStatement中的輸入參數自動進行輸入映射,將查詢結果集靈活映射成java對象。(輸出映射

2.mybatis框架

?

?

3.入門程序

1.需求

  • 根據用戶id(主鍵)查詢用戶信息
  • 根據用戶名稱模糊查詢用戶信息
  • 添加用戶
  • 刪除 用戶
  • 更新用戶

2.環境

  • java環境:jdk1.7.0_72
  • eclipse:indigo
  • mysql:5.1

mybatis運行環境(jar包):

mybatis-3.2.7.jar:核心包

?

3.log4j.properties

4.SqlMapConfig.xml

配置mybatis的運行環境,數據源、事務等。

5.根據用戶id(主鍵)查詢用戶信息

1.創建po類

2.映射文件

映射文件命名:

User.xml(原始ibatis命名),mapper代理開發映射文件名稱叫XXXMapper.xml,比如:UserMapper.xml、ItemsMapper.xml

在映射文件中配置sql語句。

3.在SqlMapConfig.xml加載映射文件

在sqlMapConfig.xml中加載User.xml:???????

4.程序編寫

6.根據用戶名稱模糊查詢用戶信息

1.映射文件

使用User.xml,添加根據用戶名稱模糊查詢用戶信息的sql語句。

2.程序代碼

3.自增主鍵返回

mysql自增主鍵,執行insert提交之前自動生成一個自增主鍵

通過mysql函數獲取到剛插入記錄的自增主鍵:

LAST_INSERT_ID()

是insert之后調用此函數。

修改insertUser定義:

4.非自增主鍵返回(使用uuid())

使用mysql的uuid()函數生成主鍵,需要修改表中id字段類型為string,長度設置成35位。

執行思路:

  • 先通過uuid()查詢到主鍵,將主鍵輸入 到sql語句中。
  • 執行uuid()語句順序相對于insert語句之前執行。

通過oracle的序列生成主鍵:

<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">SELECT 序列名.nextval()</selectKey>insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address})

?

7.刪除用戶

1.映射文件

2.代碼

8.更新用戶

1.映射文件

2.代碼

9.總結

1.parameterType

在映射文件中通過parameterType指定輸入 參數的類型

2.resultType

在映射文件中通過resultType指定輸出結果的類型。???????

3.#{}和${}

#{}表示一個占位符號,#{}接收輸入參數,類型可以是簡單類型,pojo、hashmap。

如果接收簡單類型,#{}中可以寫成value或其它名稱。

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

${}表示一個拼接符號,會引用sql注入,所以不建議使用${}

${}接收輸入參數,類型可以是簡單類型,pojo、hashmap

如果接收簡單類型,${}中只能寫成value。

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

4.selectOne和selectList

selectOne表示查詢出一條記錄進行映射。如果使用selectOne可以實現使用selectList也可以實現(list中只有一個對象)。

selectList表示查詢出一個列表(多條記錄)進行映射。如果使用selectList查詢多條記錄,不能使用selectOne。

如果使用selectOne報錯:

org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 4

5.mybatis和hibernate本質區別和應用場景

hibernate:是一個標準ORM框架(對象關系映射)。入門門檻較高的,不需要程序寫sql,sql語句自動生成了。

對sql語句進行優化、修改比較困難的。

應用場景:

???????? 適用與需求變化不多的中小型項目,比如:后臺管理系統,erp、orm、oa。

mybatis:專注是sql本身,需要程序員自己編寫sql語句,sql修改、優化比較方便。mybatis是一個不完全 的ORM框架,雖然程序員自己寫sql,mybatis 也可以實現映射(輸入映射、輸出映射)。

應用場景:

???????? 適用與需求變化較多的項目,比如:互聯網項目。

企業進行技術選型,以低成本 高回報作為技術選型的原則,根據項目組的技術力量進行選擇。

?

總結

以上是生活随笔為你收集整理的java元婴期(22)----java进阶(mybatis(1)---mybatis框架概述入门程序)的全部內容,希望文章能夠幫你解決所遇到的問題。

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