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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...