02. Mybatis 框架簡介和安裝配置

02. Mybatis 框架簡介和安裝配置

1、什么是框架处硬?

它是我們軟件開發(fā)的一套解決方案专执,不同的框架解決不同的問題。

使用框架的好處:

框架封裝了很多細(xì)節(jié)郁油,使開發(fā)者可以使用幾件極簡的方式實(shí)現(xiàn)功能,大大提高了開發(fā)效率攀痊。

框架階段:

ssm框架:

  • mybatis 對(duì)jdbc進(jìn)行封裝(DAO 輸出訪問層 數(shù)據(jù)持久層)
  • spring 全局項(xiàng)目管理
  • springMVC 對(duì)servlet進(jìn)行封裝(業(yè)務(wù)層)

前端框架:

  • layUI
  • Bootstrap

快速搭建項(xiàng)目

  • springBoot
  • 前后端分離開發(fā)模式

相關(guān)工具

  • maven項(xiàng)目管理工具
  • svn/git 項(xiàng)目版本控制器 團(tuán)隊(duì)開發(fā)項(xiàng)目使用

2桐腌、三層架構(gòu)

  • 表現(xiàn)層:是用來展示數(shù)據(jù)的
  • 業(yè)務(wù)層:是用來處理業(yè)務(wù)需求
  • 持久層:是和數(shù)據(jù)庫交互的

3、持久層技術(shù)解決方案

  • JDBC技術(shù):
    • Connection
    • PreparedStatement
    • ResultSet
  • Spring的JdbcTemplate:
    • Spring中對(duì)jdbc的簡單封裝
  • Apache的DBUtils:
    • 它和Spring 的JdbcTemplate很像苟径,也是對(duì)Jdbc的簡單封裝

以上都不是框架案站,

  • JDBC是規(guī)范
  • Spring的JdbcTemplate和Apache的DBUtils都只是工具類

4、MyBatis 框架概述

MyBatis 是支持定制化SQL棘街、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的持久層框架蟆盐。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以對(duì)配置和原生Map使用簡單的 XML 或注解遭殉,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對(duì)象)映射成數(shù)據(jù)庫中的記錄石挂。

  • MyBatis 是一個(gè)持久性框架,用java編寫的
  • 它封裝了jdbc的細(xì)節(jié)险污,是開發(fā)者只用關(guān)注sql語句本身痹愚,而無需關(guān)注驅(qū)動(dòng)富岳,創(chuàng)建鏈接等繁雜的過程
  • 它使用了ORM思想實(shí)現(xiàn)了結(jié)果集的封裝

ORM思想:

  • Object Relational Mapping 對(duì)象關(guān)系映射

  • 就是把數(shù)據(jù)庫和實(shí)體類及實(shí)體類的屬性對(duì)應(yīng)起來

  • 讓我們可以操作實(shí)體類就實(shí)現(xiàn)操作數(shù)據(jù)庫表

    user -----> User

    id -----> userId

    name -----> userName

5、Mybatis 下載和安裝

下載地址:https://github.com/mybatis/mybatis-3/releases

中文官方網(wǎng)址:https://mybatis.org/mybatis-3/zh/index.html

將下載的mybatis-3.5.5.zip進(jìn)行解壓拯腮,

其中里面的

  • mybatis-3.5.5.jar就是mybatis的核心包窖式,
  • mybatis-3.5.5.pdf 是官方文檔
  • LICENSE是執(zhí)照
  • NOTICE是注意事項(xiàng),公告
  • lib文件夾里面是一些附加包动壤,用來附加一些功能

將mybatis-3.5.5.jar萝喘,lib 路徑下的所有jar包,還有jdbc所需要的 導(dǎo)入項(xiàng)目琼懊,其中 log4j-1.2.17.jar 是用來輸出日志的包阁簸,并且需要把數(shù)據(jù)庫對(duì)應(yīng)jdbc驅(qū)動(dòng)包導(dǎo)入到項(xiàng)目。

導(dǎo)入包完成后肩碟,我們需要對(duì)項(xiàng)目進(jìn)行一定的配置:

我們?cè)趈ava源碼文件夾下創(chuàng)建文件夾conf强窖,用來存放我們的配置文件。

(1)配置log4j削祈,創(chuàng)建log4j.properties

代碼:

# Rules reminder:
# DEBUG < INFO < WARN < ERROR < FATAL

# Global logging configuration
log4j.rootLogger=DEBUG, stdout

# My logging configuration...
log4j.logger.org.mybatis.jpetstore=DEBUG

## Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

(2)配置數(shù)據(jù)庫鏈接翅溺,可以把數(shù)據(jù)鏈接用到的驅(qū)動(dòng)、url髓抑、用戶名咙崎、密碼寫到一個(gè)配置文件中,以后要改直接在配置文件中修改吨拍。

在conf文件下創(chuàng)建jdbc.properties 文件

url=jdbc:oracle:thin:@localhost:1521:XE
driver=oracle.jdbc.driver.OracleDriver
username=mybatis
password=123456

(3)配置mybatis褪猛,創(chuàng)建mybatis-config.xml文件

代碼:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 導(dǎo)入數(shù)據(jù)庫配置文件 -->
    <properties resource="jdbc.properties"></properties>
    
    <!-- 配置數(shù)據(jù)庫信息 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value= "${driver}" />
                <property name="url" value= "${url}"/>
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
    

    <!-- 將我們寫好的sql映射文件一定要注冊(cè)到全局配置文件中 -->
    
</configuration>

其中:

  • < property name="driver" value="oracle.jdbc.driver.OracleDriver" /> 中value配置的是數(shù)據(jù)庫驅(qū)動(dòng),根據(jù)自己的數(shù)據(jù)庫配置
  • < property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />中 value配置的是數(shù)據(jù)庫鏈接的url
  • < property name="username" value="mybatis" />中value配置的是需要鏈接的數(shù)據(jù)庫用戶名
  • < property name="password" value="123456" />中value配置連接數(shù)據(jù)庫的密碼
  • < mappers>< /mappers>中配置的是我們后面寫好的sql映射文件

6羹饰、連接數(shù)據(jù)庫

創(chuàng)建mybatis連接的工具類

MyBatisUtil.java

package com.company.project.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

public class MyBatisUtil {
    
    //主配文件路徑
    private static String resource = "mybatis-config.xml";
    //會(huì)話工廠
    private static SqlSessionFactory sqlSessionFactory;
    //會(huì)話
    private static SqlSession session;
    
    /**
     * 創(chuàng)建會(huì)話工廠
     * @return SqlSessionFactory 會(huì)話工廠
     */
    public static SqlSessionFactory createFactory(){
        if(sqlSessionFactory == null) {
            InputStream inputStream;
            try {
                inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        if(sqlSessionFactory != null) {
            System.out.println("工廠創(chuàng)建成功");
        }else {
            System.out.println("工廠創(chuàng)建失敗");
        }
        return sqlSessionFactory;
    }
    
    /**
     * 利用會(huì)話工廠創(chuàng)建會(huì)話對(duì)象
     * @return SqlSession 會(huì)話對(duì)象
     */
    public static SqlSession getSession() {
        //獲取SqlSession實(shí)例伊滋,能直接執(zhí)行已經(jīng)映射的sql語句
        SqlSession session = createFactory().openSession();
        
        if(session!=null) {
            System.out.println("會(huì)話創(chuàng)建成功");
            
        }else {
            System.out.println("會(huì)話創(chuàng)建失敗");
        }
        return session;
        
    }
}

7、測試數(shù)據(jù)庫的連接

package com.company.project.utiltest;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;
import org.junit.platform.commons.logging.LoggerFactory;
import com.company.project.util.MyBatisUtil;
import junit.framework.TestCase;

public class MyBatisUtilTest extends TestCase {
    public void testGetSqlSessionFactory() {
        SqlSessionFactory sessionFactory = MyBatisUtil.createFactory();
        if (sessionFactory != null) {           
            System.out.println("sessionFactory:" + sessionFactory);
            System.out.println("會(huì)話工廠創(chuàng)建成功6又取Pν!");
        } else {
            System.out.println("操作提示:sessionFactory創(chuàng)建失斺勺省筒主!");
        }
    }
    
    public void testGetSqlSession() {
        SqlSession session = MyBatisUtil.getSession();
        if (session != null) {          
            System.out.println("session:" + session);
            System.out.println("會(huì)話創(chuàng)建成功!D裥贰乌妙!");
        } else {
            System.out.println("操作提示:SqlSession創(chuàng)建失敗建钥!");
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藤韵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锦针,更是在濱河造成了極大的恐慌荠察,老刑警劉巖置蜀,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悉盆,居然都是意外死亡盯荤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門焕盟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秋秤,“玉大人,你說我怎么就攤上這事脚翘∽坡” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵来农,是天一觀的道長鞋真。 經(jī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
  • 文/蒼蘭香墨 我猛地睜開眼炫惩,長吁一口氣:“原來是場噩夢啊……” “哼僻弹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起他嚷,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤蹋绽,失蹤者是張志新(化名)和其女友劉穎芭毙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卸耘,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡退敦,尸身上長有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
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绿渣。三九已至,卻和暖如春燕耿,著一層夾襖步出監(jiān)牢的瞬間中符,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工誉帅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淀散,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓蚜锨,卻偏偏與公主長得像档插,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亚再,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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