1. 程式人生 > 其它 >C++基礎12---基類指標、虛擬函式、多型性、純虛擬函式、虛析構

C++基礎12---基類指標、虛擬函式、多型性、純虛擬函式、虛析構

技術標籤:mybatis

前言:
MyBatis框架
1-1 框架在開發中的作用及其常見的框架
1-2 什麼是MyBatis
1-3 MyBatis的應用
1-4 MyBatis的簡單入門
2-1 在Mapper.xml檔案中寫sql語句需要注意的事項
2-2 MyBatis解決JDBC存在的問題
2-3 MyBatis結合到層的開發(重點、難點)
2-4 MyBatis的主配置檔案
MyBatis框架

1-1 框架在開發中的作用及其常見的框架

### 前端框架
    a.前端開發用的框架
        Angular.js
        React.js
        Vue.
js b.前端UI框架 Extjs jquery ui -->簡化 easy ui Bootstrap Layui 中國出來的自己UI 按年收費 ### 後端框架 a.變現層框架(Controller):servlet struts,xwork,struts2,springMVC b.持久層框架(Dao):JDBC HiBernate(全自動),ibatis(半自動),MyBatis c.整合框架 EJB spring ### 後話 (
)SSH:struts/struts2 spring hibernate ()SSM:springMVC spring mybatis

1-2 什麼是MyBatis

```java
a.MyBatis是對JDBC的封裝
b.將SQL語句放在對映檔案中(XML)
c.自動將輸入引數對映到SQL語句的動態引數中
d.自動將SQL語句執行的結果對映成Java物件``

1-3 MyBatis的應用

(0)準備工作,建立學生表,新增資料
    
    CREATE TABLE tbl_student(id VARCHAR(32),NAME VARCHAR(32),age INT);

    INSERT INTO tbl_student VALUE
("A0001","wyf",23); INSERT INTO tbl_student VALUE("A0002","lh",24); INSERT INTO tbl_student VALUE("A0003","hzt",25); INSERT INTO tbl_student VALUE("A0004","zyx",26); INSERT INTO tbl_student VALUE("A0005","lif",27); (1)建立專案,搭建包結構 (2)匯入jar包 a.匯入MyBatis相關的jar包 b.匯入MySQL的驅動包 c.匯入log4j相關的jar包 (3)在src的根目錄下建立MyBatis主配置檔案mybatis-config.xml,搭建配置檔案結構 (4)建立mapper包結構,建立SQL對映檔案XxxMapper.xml (5)在src根目錄下引入log4j檔案 (6)搭建測試環境,測試根據ID查詢資料庫中所有記錄

1-4 MyBatis的簡單入門

public static void main(String[] args) {

    String resource = "mybatis-config.xml";
    //輸出流
    InputStream inputStream = null;
    try {
        //通過載入MyBatis的主配置檔案mybatis-config.xml,建立輸入流物件
        inputStream = Resources.getResourceAsStream(resource);
    } catch (IOException e) {
        e.printStackTrace();
    }
    /*
        SqlSessionFactoryBuilder:SqlSessionFactory的建造者
            通過呼叫建造者物件建造方法,為我們建立一個SqlSession物件
     */
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    // 我們未來所有的操作,使用的都是SqlSession物件來完成
    // 列如增刪改查,處理事務等等,都是使用session物件來完成
    SqlSession session = sqlSessionFactory.openSession();

    /*
        需求:根據ID查單條

            如果取得的是單條記錄,我們呼叫selectOne方法
            引數1:根據名稱空間.sqlId的形式找到我們需要使用的sql語句
            引數2:我們要為sql語句中傳遞的引數
     */
    Student student = session.selectOne("test1.getById", "A0001");

    System.out.println("student = " + student);

    session.close();
}
``
2-1 在Mapper.xml檔案中寫sql語句需要注意的事項

```java
namespace:名稱空間
          不同的mapper對映檔案使用namespace來區分
          不同的mapper對映檔案使用的namespace的命名不允許出現重複
使用名稱空間,sqlId的形式來找到我們想要執行的sql語句


    sql語句必須要寫在相應的標籤中

    <insert>在標籤中寫insert開頭的sql語句 處理新增操作
    <update>在標籤中寫update開頭的sql語句 處理修改操作
    <delete>在標籤中寫delete開頭的sql語句 處理刪除操作
    <select>在標籤中寫select開頭的sql語句 處理查詢操作

    parameterType:為sql語句傳遞的引數的型別
    resultType:如果返回值是多條記錄,那麼resultType的返回值型別,應該寫為集合的泛型

    注意:
        在未來開發中
            a.所有的標籤都必須要寫ID屬性
            b.<select>標籤parameterType屬性可以省略
                        resultType必須寫
            c.對於<insert><update><delete>3個標籤,通常我們只寫ID屬性,其他的一概不寫

2-2 MyBatis解決JDBC存在的問題

(1)獲取連線,得到statement、處理rs、關閉資源非常繁瑣。
    解決:使用SqlSession搞定一切。
(2)將sql語句寫死在java程式碼中,如果修改sql語句,需要修改java程式碼,需要重新編譯。程式的維護性不高。
    解決:將sql語句寫在Mapper.xml檔案中與java程式碼分離。
(3)向PrepareStatement對佔位符的位置設定引數時,非常繁瑣。
    解決:MyBatis自動將java隊形對映至sql語句中,通過statement中的parameterType定義輸入引數的型別。
(4)解析結果集時需要把欄位的值設定到相應的實體類屬性名中。
    解決:MyBatis自動將sql執行結果對映到java物件,通過statement中的resultType定義輸出結果的型別。

2-3 MyBatis結合到層的開發(重點、難點)
2-4 MyBatis的主配置檔案

(1)直接引入mybatis-config.xml檔案,並且載入資料庫驅動的方式為
        <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db1"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
        </environment>
    
(2)直接引入mybatis-config.xml檔案,但是載入資料驅動的方式為引入properties檔案的形式
   
    db.propertise檔案放到src根目錄下,配置檔案裡的內容大概為
        jdbc.driver=com.mysql.jdbc.Driver
        jdbc.url=jdbc:mysql://localhost:3306/db1
        jdbc.username=root
        jdbc.password=root
        
    mybatis-config.xml配置檔案裡的內容變為
        <properties resource="db.properties"/>

        <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
        </environments>