MyBatis

官網(wǎng):https://mybatis.org/mybatis-3/zh/index.html
MyBatis應用在Dao層,封裝了很多JDBC的操作。
DAO(Data Access Object):數(shù)據(jù)訪問對象
DTO(Data Transfer Object):數(shù)據(jù)傳輸對象,就是JavaBeans數(shù)據(jù)模型
entity實體類:entity表示對數(shù)據(jù)庫中所有表的映射,是根據(jù)數(shù)據(jù)庫表字段設計出來的實體(要求表名與類名相同,字段名與成員變量名相同)
vo包:表示前端頁面?zhèn)鬟^來的如表單等數(shù)據(jù)的字段,比如當前端填寫了一個表單,當前端傳過來的數(shù)據(jù)較多時,我們可以創(chuàng)建一個vo實體類,將前端傳來的數(shù)據(jù)字段名作為成員變量名,這樣我們就可以使用@RequestBody注解快速獲取參數(shù)內容,而不需要使用Request對象來一個個獲取,方便開發(fā)。
而dto包:表示的是 vo和entity的一個中間轉換對象,是vo或entity對象中屬性的一個子對象。當前端傳來vo數(shù)據(jù),我們提取vo中的數(shù)據(jù)到dto中,再將dto的數(shù)據(jù)處理后全部移動到entity中進行數(shù)據(jù)的保存。反之亦然。

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

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

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

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

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

事務的四大特性(ACID):原子性、一致性、隔離性、持久性。

導入依賴

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

準備核心配置文件

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ù)庫、其他環(huán)境可以對應創(chuàng)建
        <property name="username" value="root"/>
        <property name="password" value="123"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mappers/skill.xml"/> //映射文件(多個)
  </mappers>
  <settings>
    <setting name="mapUnderscoreToCamelCase" value="true"> //開啟駝峰命名自動映射,即數(shù)據(jù)庫列名 a_column 映射到Java屬性名 aColumn
    //其他各種設置項參照:https://mybatis.org/mybatis-3/zh/configuration.html#settings
  </settings>
</configuration>

創(chuà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找到這個select里對應的sql語句;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)建工廠構建器
  SqlSessionFactory factory = builder.build(reader); //創(chuàng)建工廠
  SqlSession session = factory.openSession(); //創(chuàng)建Session

  List<Skill> skills = session.selectList(statement: "skill.list") //selectList表示查出來是一個列表
  
  session.close(); //關閉session
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Mybatis-9.28 環(huán)境: JDK1.8 Mysql 5.7 maven 3.6.1 IDEA 回顧: JD...
    眼若繁星丶閱讀 292評論 0 1
  • Mybatis 1. JDBC操作分析 1、頻繁創(chuàng)建、釋放數(shù)據(jù)庫連接,影響系統(tǒng)性能。 2、SQL硬編碼、不易維護。...
    左師兄zuosx閱讀 518評論 0 0
  • Mybatis-9.28 環(huán)境: JDK1.8 Mysql 5.7 maven 3.6.1 IDEA 回顧: JD...
    友人Ay閱讀 420評論 0 1
  • 環(huán)境: JDK1.8,Mysql5.7,maven3.6.1,IDEA 回顧: JDBC,Mysql,java基礎...
    咕嚕咕嚕嗝閱讀 297評論 0 0
  • 1、MyBatis簡介 MyBatis 是一款優(yōu)秀的持久層框架 中文官網(wǎng):https://mybatis.org/...
    CHeng_c0e9閱讀 604評論 0 0

友情鏈接更多精彩內容