mybatis複習

一. MyBatis

 

1. MyBatis簡介

·MyBatis前身是iBatis,本是Apache的一個開源的項目mysql

·ORM框架git

·實體類和SQL語句之間創建映射關係github

2. MyBatis特色

·基於SQL語法,簡單易學sql

·能瞭解底層封裝過程數據庫

·SQL語句封裝在配置文件中,便於統一管理與維護,下降程序的耦合度編程

·方便程序代碼調試緩存

3. 搭建MyBatis開發環境

 

1.下載mybatis-3.2.2.jar包並導入工程session

2.編寫MyBatis核心配置文件(configuration.xml)mybatis

3.建立實體類-POJOapp

4.DAO-SQL映射文件(mapper.xml)

5.建立測試類

讀取核心配置文件mybatis-config.xml

建立SqlSessionFactory對象,讀取配置文件

建立SqlSession對象

調用mapper文件進行數據操做

 

4. MyBatis框架優缺點

4.1優勢

·JDBC相比,減小了50%以上的代碼量

·最簡單的持久化框架,小巧並簡單易學

·SQL代碼從程序代碼中完全分離,可重用

·提供XML標籤,支持編寫動態SQL

·提供映射標籤,支持對象與數據庫的ORM字段映射

4.2缺點

·SQL語句編寫工做量大,對開發人員有必定要求

·數據庫移植性差

5. MyBatis基本要素

·MyBatis的核心對象

SqlSessionFactoryBuilder

SqlSessionFactory

SqlSession

·mybatis-config.xml  系統核心配置文件

·mapper.xml  SQL映射文件

 

6. 核心對象

6.1SqlSessionFactoryBuilder

·用過即丟,其生命週期只存在於方法體內

·可重用其來建立多個 SqlSessionFactory 實例

·負責構建SqlSessionFactory,並提供多個build方法的重載

·讀取XML文件構造方式:

String resource = "mybatis-config.xml";   

InputStream is = Resources.getResourceAsStream(resource);   

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

 

6.2SqlSessionFactory

·SqlSessionFactory是每一個MyBatis應用的核心

·做用:建立SqlSession實例

     SqlSession session = sqlSessionFactory.openSession(boolean autoCommit);

·做用域:Application

·生命週期與應用的生命週期相同

·單例

存在於整個應用運行時,而且同時只存在一個對象實例

6.3SqlSession

·包含了執行SQL所需的全部方法

·對應一次數據庫會話,會話結束必須關閉

·線程級別,不能共享

 

SqlSession session = sqlSessionFactory.openSession();

try {

      // do work

} finally {

     session.close();

}

注意  SqlSession裏能夠執行屢次SQL語句,但一旦關閉了SqlSession就須要從新建立

 

 

 

6.4SqlSession的獲取方式

 

String resource = "mybatis-config.xml";   

InputStream  is = Resources.getResourceAsStream(resource);   

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is) ;

SqlSession sqlSession = factory.openSession();

6.5SqlSession的兩種使用方式

·經過SqlSession實例直接運行映射的SQL語句

·基於Mapper接口方式操做數據

 

7.系統核心配置文件

7.1  mybatis-config.xml 系統核心配置文件

·configuration 配置

·properties    能夠配置在Java 屬性配置文件中

·settings    修改 MyBatis 在運行時的行爲方式

·typeAliases   Java 類型命名一個別名(簡稱)

·typeHandlers   類型處理器

·objectFactory   對象工廠

·plugins   插件

·environments   環境

·environment   環境變量

·transactionManager  事務管理器

·dataSource   數據源

·mappers    映射器

注意元素節點的順序!

 

<?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">
<!--根節點,XMl只能有一個-->
<configuration>
    <settings>
        <!--二級緩存-->
        <setting name="cacheEnabled" value="true"/>

    </settings>
    <!--一個environments有N個environment-->
    <typeAliases>
        <package name="cn.bdqn.entity"></package>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <!--
           transactionManager:JDBC保證事務的
           update
           delete
           事務分類:JDBC:編程式事務
                       xxx.beginTransaction()
                       tx.commit()
                       tx.rollback()
                     配置式事務
                     JDBC|MANAGED
                     區別
           -->
            <transactionManager type="JDBC"></transactionManager>
            <!--
               POOLED:MyBatis內置的鏈接池
               c3p0鏈接池
                       POOLED 、UNPOOLED  、JNDI
           -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///blog"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
        <mappers>
           <!-- <package name="cn.bdqn.dao"></package>-->
            <mapper resource="cn/bdqn/dao/DeptMappr.xml"></mapper>
            <mapper resource="cn/bdqn/dao/Ibndao.xml"></mapper>
            <mapper resource="cn/bdqn/dao/IEmpDAO.xml"></mapper>
            <mapper resource="cn/bdqn/dao/ICategoryDAO.xml"></mapper>
            <mapper resource="cn/bdqn/dao/ITeacher.xml"></mapper>
        </mappers>
        </configuration>

 

7.2  小配置

<?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">
<!--namespace:
     命名空間:區分不一樣空間下的同名SQLID
     A: findlAll
     B:  findAll
    -->

<mapper namespace="cn.bdqn.dao.IDeptDao">
    <cache/>
    <!--SQL標籤
      id:惟一鎖定到SQL標識
      paramenterType:SQL語句的入參  能夠省略
      resultType:
      增刪除操做:不能
      查詢:單個實體的類型
    -->
<sql id="aa">
    blogId,blogAuthor,blogAddress,blogDel
</sql>
    <resultMap id="DeptMap" type="Dept">
        <!--<result column="BlogAuthorr" property="blogAuthor"/>-->
    </resultMap>
    <!--查詢全部-->
    <select id="getAll"  resultMap="DeptMap">
  /*SQL文:SQL語句*/
        SELECT <include refid="aa"></include>FROM  bloginfo
    </select>

</mapper>

 

8.總結

 

 

9.git完整事例代碼一份

https://github.com/qjtlovezch/Y2165/tree/master/_02MyBatis

相關文章
相關標籤/搜索