初學者Mybatis的初級使用

zhengzeyuan發表於2018-11-19

前言:本文章主要分三點內容對於Mybatis的初級使用進行教學,我們因為只是為了實現功能,而不是去了解底層封裝原理,因此,我們只需要瞭解,Mybatis只是用來後端管理sql 管理dao層的框架即可!
第一點:導框架包。
第二點:配置檔案
第三點:對於dao介面實現的xml檔案進行編寫(管理sql)

正文


第一點:
因為我使用的是Maven的工程模式來進行系統的開發,因此我在導jar包的過程不需要去直接下載jar放到工程,然後再add build…而我因為使用Maven只需要在jar網上覆制他的配置檔案,Maven就可以直接幫我導下來使用:
在工程名.web中找到pom.xml中,找到意思是所有,在這個的範圍內加入呼叫mybatis的架包:

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.1</version>
    </dependency>
    <!-- MyBatis相關依賴 Ends -->

這樣就完成了第一步。
第二點:去需要使用這個框架的工程裡面寫配置檔案,然後就可以使用
配置檔案的書寫:
在resource目錄下建立mybatis-config.xml檔案(檔名隨意啦),這是個是mybatis的主配置檔案。裡面主要配置property,typeAlias,typeHandler,environment,mapper等。
我的配置檔案如下:
<?xml version=”1.0″ encoding=”UTF-8″?>

xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task.xsd
    http://www.springframework.org/schema/cache
    http://www.springframework.org/schema/cache/spring-cache.xsd">
    
<!-- 載入相關資原始檔 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:oracle.properties</value>
            <value>classpath:redis.properties</value>
        </list>
    </property>
    <property name="fileEncoding" value="UTF-8"></property>
</bean>

<!-- 開啟註解掃描 -->
<context:annotation-config/>

<!-- 自動掃描的包名 -->
<context:component-scan base-package="org.mvtts">
    <!-- 不控制 Controller註解,即與 Controller分離 -->
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!-- 配置資料來源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <property name="driverClassName"         value="${jdbc.oracle.driverClassName}"/>
    <property name="url"                     value="${jdbc.oracle.url}"/>
    <property name="username"                 value="${jdbc.oracle.username}"/>
    <property name="password"                 value="${jdbc.oracle.password}"/>
    <property name="maxActive"                 value="${jdbc.oracle.maxActive}"/>
    <property name="initialSize"             value="${jdbc.oracle.initialSize}"/>
    <property name="maxWait"                 value="60000"/>
    <property name="minIdle"                 value="5"/>
    <property name="removeAbandoned"         value="true"/>
    <property name="removeAbandonedTimeout" value="180"/>
    <property name="connectionProperties"     value="config.decrypt=true"/>
</bean>

<!-- SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 資料庫連線池 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 載入MyBatis的全域性配置檔案 -->
    <property name="mapperLocations">
        <list>
            <value>classpath:**/dao/**/*Mapper.xml</value>
        </list>
    </property>
</bean>

<!-- Mapper掃描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 掃描包路徑,如果需要掃描多個包,中間使用半形逗號隔開 -->
    <!-- 對**.dao包內進行掃描 -->
    <property name="basePackage" value="**.dao"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

<!-- 事務管理器,對MyBatis運算元據庫事務控制,Spring使用jdbc的事務控制類 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" scope="singleton">
    <!-- 資料來源dataSource在applicationContext-mybatis.xml中配置了 -->
    <property name="dataSource" ref="dataSource"/>
</bean>

<!-- 註解的事務管理@Transactional -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

最後就是寫dao裡面介面實現的xml
下面是我寫的xml
<?xml version=”1.0″ encoding=”UTF-8″ ?>

<id column="EVS_ID" property="evsId" jdbcType="DECIMAL" />
<result column="EVS_USE_ID" property="evsUseId" jdbcType="DECIMAL" />
<result column="EVS_ORTHER_ID" property="evsOrtherId" jdbcType="DECIMAL" />
<result column="EVS_CONTENT" property="evsContent" jdbcType="VARCHAR" />
<result column="EVS_STA_ID" property="evsStaId" jdbcType="DECIMAL" />
<result column="EVS_MEMO" property="evsMemo" jdbcType="VARCHAR" />
<result column="EVS_CREATE_TIME" property="evsCreateTime"/>
<result column="EVS_UPDATE_TIME" property="evsUpdateTime"  />
 <result column="EVS" property="evs"  />

<result column="EVS_ID" property="evsId" jdbcType="DECIMAL" />
<result column="EVS_USE_ID" property="evsUseId" jdbcType="DECIMAL" />
<result column="EVS_ORTHER_ID" property="evsOrtherId" jdbcType="DECIMAL" />
<result column="EVS_CONTENT" property="evsContent" jdbcType="VARCHAR" />
<result column="EVS_STA_ID" property="evsStaId" jdbcType="DECIMAL" />
<result column="EVS_MEMO" property="evsMemo" jdbcType="VARCHAR" />
<result column="EVS_CREATE_TIME" property="evsCreateTime"/>
<result column="EVS_UPDATE_TIME" property="evsUpdateTime"  />
<result column="EVS" property="evs"  />
 <result column="SAP_NAME" property="sapName"/>
<result column="SAP_ID" property="sapId"  />

        SELECT 
            SEQ_EVA_SCHOOL.NEXTVAL
        FROM
            dual
    </selectKey>
      INSERT INTO "EVALUATE_SCHOOL" (
            "EVS_ID",
            "EVS_USE_ID",
            "EVS_ORTHER_ID",
            "EVS_CONTENT",
            "EVS",
            "EVS_STA_ID",
            "EVS_MEMO",
            "EVS_CREATE_TIME",
            "EVS_UPDATE_TIME"
        )
        VALUES
            (
                #{evsId},
                #{evsUseId},
                #{evsOrtherId},
                #{evsContent},
                #{evs},
                1,
                ``,
                SYSDATE,
                SYSDATE
            )

    SELECT
        A.*, B.SAP_NAME,
        B.SAP_ID
    FROM
        EVALUATE_SCHOOL A
    INNER JOIN STUDENT_APPLY B ON B.SAP_STU_ID = A .EVS_USE_ID
    WHERE
        A .EVS_ORTHER_ID = #{driId}


相關文章