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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

MyBatis之快速入门

發布時間:2024/8/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis之快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MyBatis之快速入門

2017/9/30

首先我要明確告訴大家的是MyBatis是一個java持久層框架,以前我們都是用jdbc來將我們的java程序與數據庫相連接,而MyBatis是對jdbc的一個封裝。

1.MyBatis框架的引入

我們來看看傳統的編程方式中使用jdbc的問題:

  • 1.數據庫連接頻繁的創建和關閉,缺點:浪費數據庫的資源,影響操作效率。解決方法:使用數據庫連接池如c3p0.
  • 2.sql語句是硬編碼(不利用系統維護),如果需求變更需要修改sql,這時候就需要修改java代碼,然后需要重新編譯,系統不易維護。解決方法:將sql語句統一配置在文件中。這樣以后修改sql時就不需要修改java代碼了。
  • 3.我們通過preparedStatement對象向占位符設置參數,存在硬編碼(參數位置、參數)問題,系統不易維護。解決方法:將sql中的占位符及對應的參數類型配置在配置文件中,能夠自動輸入的映射。
  • 4.遍歷查詢結果集存在硬編碼(列名)。解決方法:自動進行sql查詢結果向java對象的映射(輸出映射)。

為了解決這些問題,所以出現了MyBatis框架。

2.MyBatis介紹

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis,實質上Mybatis對ibatis進行一些改進。 目前mybatis在github上托管。

MyBatis是一個優秀的持久層框架,它對jdbc的操作數據庫的過程進行封裝,使開發者只需要關注 SQL 本身,而不需要花費精力去處理例如注冊驅動、創建connection、創建statement、手動設置參數、結果集檢索等jdbc繁雜的過程代碼。

MyBatis通過xml或注解的方式將要執行的各種statement(statement、preparedStatemnt、CallableStatement)配置起來,并通過java對象和statement中的sql進行映射生成最終執行的sql語句,最后由mybatis框架執行sql并將結果映射成java對象并返回。

3.MyBatis架構

如下圖:


接下來我將通過對一張用戶表進行增、刪、改、查帶你快速入門MyBatis。

4.MyBatis快速入門

4.1準備開發環境

1.創建測試項目,普通java項目或是web項目都可。

2.導入jar包:mybatis-3.1.1.jar(低于這個版本的jar包需要導入很多依賴包)和mysql-connection-java

3.創建數據庫和相應的表,SQL腳本如下:


到此,環境配置就告一段落。

4.2使用MyBatis查詢表中數據(通過id查詢)

1.添加Mybatis的配置文件SqlMapConfig.xml

在src目錄下創建一個SqlMapConfig.xml文件(文件名稱隨便起),內容如下:


2.定義表所需要的實體類User.java

代碼如下:



3.定義操作user表的sql映射文件User.xml
這里我們沒將文件命名為userMapper.xml,后面我們會改。

User.xml文件內容如下:


在User.xml中寫SQL語句,在參數處使用占位符#{},應該注意的是大括號{}中傳入的數據應該與User.java中的屬性對應,文件中各個屬性的解釋見圖中注釋處。

4.在SqlMapConfig文件中注冊User.xml文件
在SqlMapConfig.xml中添加一個<mappers></mappers>字段,并在里面傳入User.xml文件路徑。


整體結構如下:


5.接下來我們便可以借助上面MyBatis架構圖來編寫測試類了


注意,我是借助junit.jar包來編寫的測試類。輸出結果如下:


上面我們是通過id來對表進行查詢,接下來我要講講如何通過姓名來模糊查詢表。

4.3使用MyBatis根據用戶名模糊查詢用戶信息

1.需要在User.xml文件中添加如下字段:


此時,我們在傳入參數的地方不再使用占位符#{}而是使用${},二者區別如下:

  • #{}:1.表示一個占位符,向占位符輸入參數,mybatis自動進行java類型和jdbc類型的轉換。2.程序員不需要考慮參數的類型,比如:傳入字符串,mybatis最終拼接好的sql就是參數兩邊加單引號。3.#{}接收pojo(Plain Old Java Object Java數據對象)數據,可以使用OGNL(就是el表達式)解析出pojo的屬性值。
  • ${}:1.表示sql的拼接,通過${}接收參數,將參數的內容不加任何修飾拼接在sql中。2.${}也可以接收pojo數據,可以使用OGNL解析出pojo的屬性值。3.缺點:不能防止sql注入。

2.測試類代碼如下:


注意,此時我們通過name查詢出來的語句為多條,故此時我們應該選擇調用sqlSession對象的selectList()方法返回多條記錄,輸出我們查詢到的第一條記錄即可。若使用selectOne()方法,當返回的記錄為多條時就會發生異常。

這樣我們便完成了查詢時將sql結果輸出映射到Java對象中。那如何將Java對象輸入映射到sql語句中,接下來我們就來講通過MyBatis實現增、刪、改數據庫。

4.4使用MyBatis向表中插入一條記錄

1.在User.xml中添加如下字段:


貌似關鍵字為value和values都可以…

2.編寫測試類:


此時查看數據庫:




發現數據已被插入。

擴展:主鍵返回:

在測試類中,我們沒有給User對象的id屬性設置值,所以我們在測試類中嘗試輸出User對象的id時會輸出id=0,但是該對象通過輸入映射在數據庫中是有對應的id值的(因為我們為該字段設置了自增長屬性)。那么我們想輸出該對象在記錄中的id時,又該怎么做呢?只需在User.xml文件中的<insert></insert>標簽中添加<selectKey>標簽即可,屬性解釋見圖:


此時我們在測試類中便可輸出該User對象插入在表中的記錄id值了。

這里我們由于在建表時設置了id字段為自增長,采用自增長的形式生成主鍵,所以我們在傳入User對象的id屬性時可以將該屬性設置為null。那么當我們使用uuid生成主鍵時又該怎么做呢?

只需在User.xml中添加如下字段:


屬性值”before”的意思表示在執行插入操作時,會先調用uuid()函數生成uuid得到主鍵,然后將主鍵設置到User對象中,再將User對象插入到數據庫。所以此時我們在測試類中也可以不對User的id屬性進行設置值。

4.5使用MyBatis實現刪除表中數據

接下來的操作就很輕松了,因為跟上述操作差不多。

1.在User.xml文件中添加如下字段:



2.編寫測試類:


運行程序后便可發現數據庫中的該數據已被刪除。

4.6使用MyBatis實現更新表中數據

1.在User.xml文件中添加如下字段:


2.編寫測試類:


運行程序后便可發現數據庫中的該數據已被更新。

5.MyBatis開發流程小結

寫過上述代碼,我們便可以對MyBatis的開發流程進行一下總結了,流程如下:

  • 1.編寫SqlMapConfig.xml
  • 2.編寫mapper.xml(每個字段定義一個statement)
  • 3.編程通過配置文件創建SqlSessionFactory
  • 4.通過SqlSessionFactory獲取SqlSession對象。
  • 5.通過SqlSession操作數據庫。(如果執行添加、更新、刪除需要調用SqlSession.commit())
  • 6.SqlSesion使用完成要關閉。

關于MyBatis配置的一些優化及高級知識請見我后面的文章。


總結

以上是生活随笔為你收集整理的MyBatis之快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 免费在线观看av片 | 打开免费观看视频在线播放 | 欧美精品一区三区 | 免费黄色小说视频 | 91在线视频免费 | 国产最新视频在线 | 人人妻人人藻人人爽欧美一区 | 黄色网址哪里有 | 美女爱爱视频 | 高清视频一区二区三区 | 五月婷婷激情在线 | 日日艹 | 一道本在线观看 | 黄色香港三级三级三级 | 神马午夜场 | 亚洲女同一区二区 | 国产无码精品一区二区 | 非洲黄色片 | 欧美视频xxxx | 国产97免费视频 | 黄瓜视频色版 | 夜夜爽夜夜 | 欧美播放| 182tv午夜| 成人免费毛片日本片视频 | 亚洲一区二区视频在线观看 | 亚洲视频在线观看一区二区 | 欧美日韩一区二区三区在线电影 | 欧美不卡一区二区 | 日韩福利电影在线观看 | 亚洲毛片大全 | 白嫩日本少妇做爰 | 国语对白91 | 亚洲精品免费网站 | 色老大网站 | 高跟鞋丝袜猛烈xxxx | 午夜激情一区二区 | 中文字幕综合 | 一本一道无码中文字幕精品热 | 久久久久99 | 精彩视频一区二区 | 99资源站| 欧洲精品一区 | 国产v综合v亚洲欧美久久 | 久久久久久久综合色一本 | 国产成人欧美 | 大陆极品少妇内射aaaaaa | 免费麻豆国产一区二区三区四区 | 国产亚洲精品自拍 | 亚洲精品视频久久 | 成人黄色小视频 | 国产日韩成人 | 国产精品jizz视频 | 日韩亚洲精品在线 | 干欧美| 国产麻豆精品在线观看 | www.爱爱| 亚洲v国产v欧美v久久久久久 | 性欧美巨大乳 | 大桥未久恸哭の女教师 | 激情小说亚洲色图 | 美女av网址 | 国产淫片 | 黄色短视频在线播放 | 狼人av在线| 一级特黄aa大片免费播放 | 一区二区的视频 | 亚洲久久一区 | 国内自拍小视频 | 欧美大奶在线 | 黄色性视频 | 日本zzjj | 91成人精品国产刺激国语对白 | 综合爱爱网 | 色综合免费| 亚洲成av人在线观看 | 欧美在线观看免费高清 | 韩国黄色精品 | 国产性猛交xx乱 | 欧美日韩在线视频一区二区三区 | 女人十八毛片嫩草av | 少妇高潮一区二区三区99刮毛 | 国产区视频 | 少妇与公做了夜伦理69 | 成人性生交大片免费看vrv66 | 久久国产精品99久久人人澡 | 成人黄色一级片 | 久久久久国 | 操操日日| 久草成人在线 | 亚洲一级一区 | 色网站在线看 | 天天射天天射 | 欧美日韩亚洲精品一区二区 | 在线观看亚洲一区 | 丰满人妻一区二区三区大胸 | 国产做爰xxxⅹ久久久精华液 | 成年人免费在线看 | 欧美一级久久 |