1. 程式人生 > 實用技巧 >MyBatis 總結&模板

MyBatis 總結&模板

簡述

  從8月2日到昨天9月10日,歷時一個多月,共計30篇部落格,把MyBatis的基礎學完了,肥腸蘇福~

  本篇部落格會對mybatis的知識做一個自我總結,並附上各個配置檔案的程式碼,方便以後專案的構建。

知識總結

  首先,MyBatis是一個持久層框架,直接和資料庫互動,通過註解或者xml配置的方法,可以大大減少開發者的工作量,mybatis使用了orm的思想——object relational mapping的思想,使資料庫中和表和java裡的實體類相對應,通過操作實體類實現互動資料庫,使開發者只需關注於sql語句,不用關心jdbc的連線與執行。

  MyBatis的核心類是sqlsession類,該類通過getMapper方法生成資料庫表的代理物件,通過代理物件的方法實現CRUD。

  MyBatis的一級快取是sqlsession裡的資料區域,查詢的結果會存放在該快取中,注意一級快取的區域是一個sqlsession。

  MyBatis的二級快取是sqlsessionfactory裡的資料區域,相對與一級快取來說,實現了不同的sqlsession之間快取的共享。

模板

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation
="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>day02_eesy_01mybatisCRUD</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</
packaging> <!-- 配置jdk --> <properties> <maven.compiler.source>1.11</maven.compiler.source> <maven.compiler.target>1.11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> </project>
pom.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">

<!-- mybatis的主配置檔案 -->
<configuration>

    <!-- 使用typeAliases配置別名,它只能配置domain中的類名 -->
    <typeAliases>
        <!-- typeAlias用於配置別名 type屬性指定的是實體類全限定類名,alias屬性指定別名,當指定了別名就不再區分大小寫-->
        <!--<typeAlias type="com.itheima.domain.User" alias="user"></typeAlias> -->
        <!-- 用於指定要配置別名的包,當指定後,該包下的實體類都會註冊別名,類名就是別名,不再區分大小寫 -->
        <package name="com.itheima.domain"/>
    </typeAliases>

    <!-- 配置環境 -->
    <environments default="mysql">
        <!-- 配置mysql的環境 -->
        <environment id="mysql">
            <!-- 配置事務型別 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置資料來源,也叫連線池,有三個取值 -->
            <dataSource type="POOLED">
                <!-- 配置連線資料庫的4個基本資訊 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 指定對映配置檔案的位置,指的是每個dao獨立的配置檔案 -->
    <mappers>
        <!-- <mapper resource="com/itheima/dao/IUserDao.xml"/> -->
        <!-- 用於指定dao介面所在的包,當指定完成之後,就不需要再寫mapper以及resource或者class -->
        <package name="com/itheima/dao"></package>
    </mappers>
</configuration>
SqlMapConfig.xml
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
log4j.properties(非xml檔案)