MyBatis

官網(wǎng):https://mybatis.org/mybatis-3/zh/index.html
MyBatis應(yīng)用在Dao層阳液,封裝了很多JDBC的操作局蚀。
DAO(Data Access Object):數(shù)據(jù)訪問對(duì)象
DTO(Data Transfer Object):數(shù)據(jù)傳輸對(duì)象羡鸥,就是JavaBeans數(shù)據(jù)模型
entity實(shí)體類:entity表示對(duì)數(shù)據(jù)庫(kù)中所有表的映射抄沮,是根據(jù)數(shù)據(jù)庫(kù)表字段設(shè)計(jì)出來(lái)的實(shí)體(要求表名與類名相同佩抹,字段名與成員變量名相同)
vo包:表示前端頁(yè)面?zhèn)鬟^來(lái)的如表單等數(shù)據(jù)的字段避归,比如當(dāng)前端填寫了一個(gè)表單麸塞,當(dāng)前端傳過來(lái)的數(shù)據(jù)較多時(shí),我們可以創(chuàng)建一個(gè)vo實(shí)體類假夺,將前端傳來(lái)的數(shù)據(jù)字段名作為成員變量名淮蜈,這樣我們就可以使用@RequestBody注解快速獲取參數(shù)內(nèi)容,而不需要使用Request對(duì)象來(lái)一個(gè)個(gè)獲取侄泽,方便開發(fā)礁芦。
而dto包:表示的是 vo和entity的一個(gè)中間轉(zhuǎn)換對(duì)象,是vo或entity對(duì)象中屬性的一個(gè)子對(duì)象悼尾。當(dāng)前端傳來(lái)vo數(shù)據(jù)柿扣,我們提取vo中的數(shù)據(jù)到dto中,再將dto的數(shù)據(jù)處理后全部移動(dòng)到entity中進(jìn)行數(shù)據(jù)的保存闺魏。反之亦然未状。

Impl : DAO接口的真實(shí)實(shí)現(xiàn)類,完成具體的數(shù)據(jù)庫(kù)操作

數(shù)據(jù)庫(kù)事務(wù)(Database Transaction)

如果將N個(gè)數(shù)據(jù)庫(kù)操作放到同一個(gè)事務(wù)中析桥,那么這N個(gè)操作最終要么都生效司草,要么都不生效。(原子性)

START TRANSACTION;  //開啟事務(wù)
執(zhí)行語(yǔ)句
COMMIT; //提交事務(wù)(讓事務(wù)生效)
ROLLBACK; //回滾事務(wù)(回滾到開啟事務(wù)前的狀態(tài))

在Java中:
JDBC的寫法:
connection.setAutoCommit(false); //開啟事務(wù)(告訴程序不要自動(dòng)提交事務(wù)泡仗,手動(dòng)提交)
connection.commit();  //提交事務(wù)
connection.rollback(); //回滾  (可以用try埋虹、catch,回滾放在catch里)

事務(wù)的四大特性(ACID):原子性娩怎、一致性搔课、隔離性、持久性截亦。

導(dǎo)入依賴

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

準(zhǔn)備核心配置文件

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development"> //開發(fā)環(huán)境
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/dev"/> //dev為開發(fā)環(huán)境的數(shù)據(jù)庫(kù)爬泥、其他環(huán)境可以對(duì)應(yīng)創(chuàng)建
        <property name="username" value="root"/>
        <property name="password" value="123"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mappers/skill.xml"/> //映射文件(多個(gè))
  </mappers>
  <settings>
    <setting name="mapUnderscoreToCamelCase" value="true"> //開啟駝峰命名自動(dòng)映射,即數(shù)據(jù)庫(kù)列名 a_column 映射到Java屬性名 aColumn
    //其他各種設(shè)置項(xiàng)參照:https://mybatis.org/mybatis-3/zh/configuration.html#settings
  </settings>
</configuration>

創(chuàng)建對(duì)應(yīng)數(shù)據(jù)模型的映射文件

如skill模型:mappers/skill.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="skill">
  <select id="list" resultType="com.mj.bean.Skill"> //通過id找到這個(gè)select里對(duì)應(yīng)的sql語(yǔ)句;resultType為查出數(shù)據(jù)的類型
    SELECT * FROM skill
  </select>
</mapper>

裝載配置文件崩瓤,創(chuàng)建Session

#import java.io.Reader
#import org.apache.ibatis.io.Resources
try (Reader reader = Resources.getResourceAsReader("mybatis-config.xml")) { //讀取xml文件
  SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //創(chuàng)建工廠構(gòu)建器
  SqlSessionFactory factory = builder.build(reader); //創(chuàng)建工廠
  SqlSession session = factory.openSession(); //創(chuàng)建Session

  List<Skill> skills = session.selectList(statement: "skill.list") //selectList表示查出來(lái)是一個(gè)列表
  
  session.close(); //關(guān)閉session
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末袍啡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子却桶,更是在濱河造成了極大的恐慌境输,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肾扰,死亡現(xiàn)場(chǎng)離奇詭異畴嘶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)集晚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)区匣,“玉大人偷拔,你說我怎么就攤上這事蒋院。” “怎么了莲绰?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵欺旧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蛤签,道長(zhǎng)辞友,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任震肮,我火速辦了婚禮称龙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戳晌。我一直安慰自己鲫尊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布沦偎。 她就那樣靜靜地躺著疫向,像睡著了一般。 火紅的嫁衣襯著肌膚如雪豪嚎。 梳的紋絲不亂的頭發(fā)上搔驼,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音侈询,去河邊找鬼舌涨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妄荔,可吹牛的內(nèi)容都是我干的泼菌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼啦租,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哗伯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起篷角,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤焊刹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后恳蹲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虐块,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年嘉蕾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贺奠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡错忱,死狀恐怖儡率,靈堂內(nèi)的尸體忽然破棺而出挂据,到底是詐尸還是另有隱情,我是刑警寧澤儿普,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布崎逃,位于F島的核電站,受9級(jí)特大地震影響眉孩,放射性物質(zhì)發(fā)生泄漏个绍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一浪汪、第九天 我趴在偏房一處隱蔽的房頂上張望巴柿。 院中可真熱鬧,春花似錦吟宦、人聲如沸篮洁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)袁波。三九已至,卻和暖如春蜗侈,著一層夾襖步出監(jiān)牢的瞬間篷牌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工踏幻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留枷颊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓该面,卻偏偏與公主長(zhǎng)得像夭苗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子隔缀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Mybatis-9.28 環(huán)境: JDK1.8 Mysql 5.7 maven 3.6.1 IDEA 回顧: JD...
    眼若繁星丶閱讀 228評(píng)論 0 1
  • Mybatis 1. JDBC操作分析 1题造、頻繁創(chuàng)建、釋放數(shù)據(jù)庫(kù)連接猾瘸,影響系統(tǒng)性能界赔。 2、SQL硬編碼牵触、不易維護(hù)淮悼。...
    左師兄zuosx閱讀 431評(píng)論 0 0
  • Mybatis-9.28 環(huán)境: JDK1.8 Mysql 5.7 maven 3.6.1 IDEA 回顧: JD...
    友人Ay閱讀 345評(píng)論 0 1
  • 環(huán)境: JDK1.8,Mysql5.7揽思,maven3.6.1袜腥,IDEA 回顧: JDBC,Mysql钉汗,java基礎(chǔ)...
    咕嚕咕嚕嗝閱讀 196評(píng)論 0 0
  • 1瞧挤、MyBatis簡(jiǎn)介 MyBatis 是一款優(yōu)秀的持久層框架 中文官網(wǎng):https://mybatis.org/...
    CHeng_c0e9閱讀 408評(píng)論 0 0