mybatis框架入門

来源:http://www.cnblogs.com/luogg/archive/2017/02/17/6410125.html
-Advertisement-
Play Games

本文為作者原創,轉載請註明出處,謝謝. 本文適用於mybatis框架初學者,可以通過這個小例子,初識mybatis的簡單易用. 1.創建工程,導入jar包 創建一個java工程或者web工程都可以,然後導入mybatis的jar包和依賴包還有資料庫的jar包,本人使用Oracle10g資料庫 myb ...


本文為作者原創,轉載請註明出處,謝謝.
本文適用於mybatis框架初學者,可以通過這個小例子,初識mybatis的簡單易用.

1.創建工程,導入jar包

這裡寫圖片描述

   創建一個java工程或者web工程都可以,然後導入mybatis的jar包和依賴包還有資料庫的jar包,本人使用Oracle10g資料庫
   mybatis-3.2.2.jar 核心驅動
   asm-3.3.1.jar
   cglib-2.2.2.jar
   commons-logging-1.1.1.jar
   javassist-3.17.1-GA.jar
   log4j-1.2.17.jar
   slf4j-api-1.7.5.jar
   slf4j-log4j12-1.7.5.jar
   classes12.jar Oracle10g的jar包

2.創建連接資料庫的核心配置文件sqlMapConfig.xml

    在src目錄底下,創建sqlMapConfig.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>
    <!--配置數據源,環境-->
    <!--可以配置多個環境,一個測試時候用的,一個上線時候用的-->
    <environments default="test">
        <!--測試環境-->
        <environment id="test">
            <!--配置事務 : JDBC事務/MANAGED交給容器的事務-->
            <transactionManager type="JDBC"></transactionManager>
            <!--數據源 : POOLED池化/UNPOOLED非池化/JNDI密碼加密,安全性高-->
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
                <property name="username" value="scott"/>
                <property name="password" value="luogg"/>
            </dataSource>
        </environment>
        <!--伺服器環境-->
        <environment id="deploy">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
                <property name="username" value="scott"/>
                <property name="password" value="luogg"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/luogg/mapper/PersonMapper.xml"/>
    </mappers>
</configuration>

3.在src底下創建test文件夾,在test文件夾下創建TestMybatis.java文件

package test;

import com.luogg.domain.Person;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * Created by luogg on 2017/2/17.
 */
public class TestMybatis {
    @Test
    public void init() throws IOException {
        /**
         * 測試資料庫的連接
         * 1.定義一個String類型的變數resource,指向剛纔配置的連接資料庫的xml文件
         * 2.創建一個輸入流,來讀取我們的資料庫配置文件
         * 3.輸入流創建工廠.
         * 4.有了工廠之後open工廠
         */
        String resource = "sqlMapConfig.xml";
        InputStream is = Resources.getResourceAsStream(resource);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        SqlSession session = factory.openSession();
}

此時,我們可以進行單元測試了,看看session有沒有被創建,綠色表示創建成功,那麼我們接下來創建資料庫表,並且寫sql語句

這裡寫圖片描述

4.創建資料庫,並寫入數據

CREATE TABLE person(
      ID NUMBER(2),
      NAME  VARCHAR2(20),
      sex NUMBER(2),
      age NUMBER(3)
)

-- 寫入數據,點擊下方鎖子按鈕,然後點擊+
SELECT * FROM person FOR UPDATE

這裡寫圖片描述

5.在src底下創建com.luogg.domain包,在包下創建Person.java的實體bean

package com.luogg.domain;

/**
 * Created by luogg on 2017/2/17.
 */
public class Person {
    private String name;
    private int sex;
    private int age;
    private int id;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                ", id=" + id +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

6.創建與資料庫對應的映射文件,在src下創建com.luogg.mapper包下創建PersonMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--配置命名空間,命名空間+ .id 是唯一的sql語句標示符-->
<mapper namespace="com.luogg.mapper.PersonMapper">
    <!--查詢所有數據,參數有id,resultType結果集,parameterType參數-->
    <!--註意 : sql語句中如果有要填寫集合的,比如查詢所有數據,返回一個Person的結果集,那麼resultType參數直接寫 路徑+集合的類型
        比如: 返回一個Person集合,那麼就填寫Person Bean所在的路徑+Person-->
    <select id="find" resultType="com.luogg.domain.Person">
        SELECT * from person
    </select>
</mapper>

7.在核心配置文件sqlMapConfig.xml中做一個映射,讓其識別我們的寫了sql語句的配置文件

<?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>
    <!--配置數據源,環境-->
    <!--可以配置多個環境,一個測試時候用的,一個上線時候用的-->
    <environments default="test">
        <!--測試環境-->
        <environment id="test">
            <!--配置事務 : JDBC事務/MANAGED交給容器的事務-->
            <transactionManager type="JDBC"></transactionManager>
            <!--數據源 : POOLED池化/UNPOOLED非池化/JNDI密碼加密,安全性高-->
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
                <property name="username" value="scott"/>
                <property name="password" value="luogg"/>
            </dataSource>
        </environment>
        <!--伺服器環境-->
        <environment id="deploy">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
                <property name="username" value="scott"/>
                <property name="password" value="luogg"/>
            </dataSource>
        </environment>
    </environments>
    
    <!--映射文件mapper-->
    <mappers>
        <mapper resource="com/luogg/mapper/PersonMapper.xml"/>
    </mappers>
</configuration>

8.回到測試類TestMybatis.java,訪問配置文件中的sql語句並返回結果集

package test;

import com.luogg.domain.Person;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * Created by luogg on 2017/2/17.
 */
public class TestMybatis {
    @Test
    public void init() throws IOException {
        /**
         * 測試資料庫的連接
         * 1.定義一個String類型的變數resource,指向剛纔配置的連接資料庫的xml文件
         * 2.創建一個輸入流,來讀取我們的資料庫配置文件
         * 3.輸入流創建工廠.
         * 4.有了工廠之後open工廠
         * 5.通過session訪問配置文件中的sql語句
         */
        String resource = "sqlMapConfig.xml";
        InputStream is = Resources.getResourceAsStream(resource);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        SqlSession session = factory.openSession();

        //如何訪問PersonMapper.xml中的sql語句呢? 命名空間+ .id
        List<Person> list = session.selectList("com.luogg.mapper.PersonMapper.find");
        System.out.println(list.size());
        for(Person p : list){
            System.out.println(p);
        }
    }
}

運行結果 :

這裡寫圖片描述



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉載請標明出處: "http://www.cnblogs.com/why168888/p/6411664.html" 本文出自: "【Edwin博客園】" python進階介紹(進階1) 1. python基礎回顧 1. 安裝Python環境 2. 變數和數據類型:Python內置的基礎類型 3. ...
  • 內部類:在類中定義的類,外層的叫外部類、外圍類。 書中說P191,如果想在外部類的非靜態方法之外的任意位置創建某個內部類對象,那麼必須像在main方法(靜態方法)中那樣,具體地指明這個對象的類型:OuterClassName.InnerClassName。(在外部類非靜態方法中可以直接使用Inner ...
  • 分情況討論: 非const引用非const: 非同類型不能引用 非const引用const: 不能通過編譯。因為要引用,說明你要改值。。 const引用非const: 第一種情況:const引用與非const同類型。 很奇怪,這是可以通過編譯的!而且,const能變化值!(原因是引用並沒有綁定臨時值 ...
  • 本篇隨筆主要描述的是我閱讀 HashMap 源碼期間的對於 HashMap 的一些實現上的個人理解,用於個人備忘,有不對的地方,請指出~ 接下來會從以下幾個方面介紹 HashMap 源碼相關知識: 1、HashMap 存儲結構 2、HashMap 各常量、成員變數作用 3、HashMap 幾種構造方 ...
  • 需求按優先順序順序如下: 1)存放3TB以上中小型文件,圖片為主,平均在500~700k,一般在1M以內。 2)要集群化,支持負載均衡,高可用高性能。有大企業使用背書最好。 3)提供Java程式上傳文件的手段。Java代碼可以在Windows環境下調試。 4)必須開源,作者能保持更新。 5)有運維監控 ...
  • mybatis 一對一查詢的兩種方式的實現,較為詳細。歡迎新手學習及大神指導。 ...
  • 1.什麼是內部類? 定義在類內部的類,稱之為內部類 2.為什麼要使用內部類? 1),增強封裝,把內部類隱藏在外部類中,不允許其他類來訪問內部類 2),內部類能提高代碼的可讀性和可維護性 3.內部類的分類 對於內部類的分類,可以對比於成員變數的分類. 我們可以根據不同的修飾符或者定義的不同位置把成員變 ...
  • 近期做了一個關於百度營銷推廣的一個管理系統(SEM閃投),主要包括閃投欄位到資料庫欄位的關係映射,多庫多表數據的查詢封裝組合到最後生成XML文件,最終SFTP到另一個資源伺服器上,然後百度要能夠訪問這個XML並解析它,你在百度上搜索某個關鍵詞的時候,最上面的幾條帶廣告字樣的,那麼就達到效果了(關鍵是... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...