一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Spring整合MyBatis(Maven+MySQL)圖文教程詳解(4)

Spring整合MyBatis(Maven+MySQL)圖文教程詳解(4)

2020-05-24 11:59張果 JAVA教程

創(chuàng)建類BookTypeDAOImpl實現(xiàn)接口BookTypeDAO,這里要通過MyBatis實現(xiàn)數(shù)據(jù)訪問功能,內(nèi)容如下: package com.zhangguo.Spring61.dao;import java.util.List;import org.apache.ibatis.sess

創(chuàng)建類BookTypeDAOImpl實現(xiàn)接口BookTypeDAO,這里要通過MyBatis實現(xiàn)數(shù)據(jù)訪問功能,內(nèi)容如下: 

 
package com.zhangguo.Spring61.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.zhangguo.Spring61.entities.BookType;
import com.zhangguo.Spring61.mapping.BookTypeDAO;

/**
 * 實現(xiàn)圖書類型數(shù)據(jù)訪問
 *
 */
public class BookTypeDAOImpl implements BookTypeDAO {

    @Override
    public List<BookType> getAllBookTypes() {
        //獲得會話對象
        SqlSession session=MyBatisUtil.getSession();
        try {
            //通過MyBatis實現(xiàn)接口BookTypeDAO,返回實例
            BookTypeDAO bookTypeDAO=session.getMapper(BookTypeDAO.class);
            return bookTypeDAO.getAllBookTypes();
        } finally {
            session.close();
        }
    }

}
 
 

2.7、測試運行

新建一個JUnit Test Case測試用例,如下所示:

Spring整合MyBatis(Maven+MySQL)圖文教程詳解

 測試用例TestBookTypeDAOImpl.java文件如下:

 
package com.zhangguo.Spring61.test;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.BeforeClass;
import org.junit.Test;

import com.zhangguo.Spring61.dao.BookTypeDAOImpl;
import com.zhangguo.Spring61.entities.BookType;
import com.zhangguo.Spring61.mapping.BookTypeDAO;

public class TestBookTypeDAOImpl {

    static BookTypeDAO bookTypeDao;
    @BeforeClass
    public static void beforeClass()
    {
        bookTypeDao=new BookTypeDAOImpl();
    }
    
    @Test
    public void testGetAllBookTypes() {
        List<BookType> booktypes=bookTypeDao.getAllBookTypes();
        for (BookType bookType : booktypes) {
            System.out.println(bookType);
        }
        assertNotNull(booktypes);
    }

}
 

測試結(jié)果:

Spring整合MyBatis(Maven+MySQL)圖文教程詳解

 

2.8、整合log4j2

上面的測試雖然通過,但是有一個錯誤提示“ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.”,大意是:日志記錄器沒有找到log4j2的配置文件。在源碼的根目錄下創(chuàng)建一個log4j2.xml配置文件,文件內(nèi)容如下所示:

 
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off" monitorInterval="1800">    
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>        
    </Appenders>

    <Loggers>            
        <Root level="debug">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
 

再運行就會發(fā)現(xiàn)log4j2已經(jīng)在運行了,從控制臺可以看到MyBatis的運行狀態(tài)信息:

Spring整合MyBatis(Maven+MySQL)圖文教程詳解

程序向數(shù)據(jù)庫發(fā)送的SQL請求,及數(shù)據(jù)庫向程序響應(yīng)的結(jié)果就清楚了。

 

三、使用Spring4.X整合MyBatis3.X初級版

在MyBatis的github官網(wǎng)(https://github.com/mybatis/spring)中有一個叫MyBatis Spring Adapter(MyBatis-Spring)的庫,暫且翻譯成:MyBatis Spring適配器,它的作用是:原話:“MyBatis-Spring adapter is an easy-to-use Spring3 bridge for MyBatis sql mapping framework.”,就是了為更容易的將MyBatis與Spring整合,充分發(fā)揮二兩結(jié)合的優(yōu)勢,它相當于一個橋。

什么是:MyBatis-Spring?
MyBatis-Spring會幫助你將MyBatis代碼無縫地整合到Spring中。使用這個類庫中的類,Spring將會加載必要的MyBatis工廠類和session類。這個類庫也提供一個簡單的方式來注入MyBatis數(shù)據(jù)映射器和SqlSession到業(yè)務(wù)層的bean中。而且它也會處理事務(wù),翻譯MyBatis的異常到Spring的DataAccessException異常(數(shù)據(jù)訪問異常,譯者注)中。最終,它并不會依賴于MyBatis,Spring或MyBatis-Spring來構(gòu)建應(yīng)用程序代碼。

 

3.1、修改pom.xml添加依賴

為了將Spring與MyBatis整合完成,需要依賴MyBatis,因為在上面的示例中已依賴完成,這里就不再需要,主要需依賴的是Spring核心,AOP,JDBC,MyBatis-Spring等jar包。具體的依賴結(jié)果pom.xml文件如下所示:

 
<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.zhangguo</groupId>
    <artifactId>Spring061</artifactId>
    <version>0.0.1</version>
    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>4.3.0.RELEASE</spring.version>
    </properties>

    <dependencies>
        <!--mysql數(shù)據(jù)庫驅(qū)動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <!--log4j日志包 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.6.1</version>
        </dependency>
        <!-- mybatis ORM框架 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!-- JUnit單元測試工具 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
        <!--mybatis-spring適配器 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!--Spring框架核心庫 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- aspectJ AOP 織入器 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.9</version>
        </dependency>
        <!--Spring java數(shù)據(jù)庫訪問包,在本例中主要用于提供數(shù)據(jù)源 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</project>
 
 

 3.2、創(chuàng)建Spring上下文初始化配置文件

該文件取名為ApplicationContext.xml主要原因是“約束優(yōu)于配置”的理由,使用Web監(jiān)聽器加載Spring時會默認找該名稱的文件。在文件中我們可像以前學(xué)習(xí)Spring一樣配置IOC與AOP,只不過這里整合了一些MyBatis內(nèi)容。文件內(nèi)容如下:

 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">

    <!--1定義一個jdbc數(shù)據(jù)源,創(chuàng)建一個驅(qū)動管理數(shù)據(jù)源的bean -->
    <bean id="jdbcDataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/db2" />
        <property name="username" value="root" />
        <property name="password" value="root" />
    </bean>

    <!--2創(chuàng)建一個sql會話工廠bean,指定數(shù)據(jù)源-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="jdbcDataSource" /><!-- 指定數(shù)據(jù)源 -->
        <property name="configLocation" value="classpath:MyBatisCfg.xml"></property> <!-- 指定配置文件 -->
    </bean>

    <!--3創(chuàng)建一個booTypeDAO-->
    <bean id="bookTypeDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <!--指定映射文件 -->
        <property name="mapperInterface" value="com.zhangguo.Spring61.mapping.BookTypeDAO"></property>
        <!-- 指定sql會話工廠-->
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>
    <!--下面的配置暫時未使用 -->
    <context:component-scan base-package="com.zhangguo">
    </context:component-scan>
    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
</beans>
 

從上面的代碼可以看到分別創(chuàng)建了一個驅(qū)動管理數(shù)據(jù)源的對象,會話工廠與實現(xiàn)數(shù)據(jù)訪問的對象通過Spring IOC完成,而不再是硬編碼。第2段配置與下面的代碼功能基本類似:

 
    
private static SqlSessionFactory factory=null;
    public static SqlSessionFactory getSqlSessionFactory(){
        if(factory==null){
        // 獲得環(huán)境配置文件流
        InputStream config = MyBatisUtil.class.getClassLoader().getResourceAsStream("MyBatisCfg.xml");
        // 創(chuàng)建sql會話工廠
        factory = new SqlSessionFactoryBuilder().build(config);
        }
        return factory;
    }
 

第3段配置與下面的java代碼基本類似:

 
        SqlSession session = MyBatisUtil.getSession();
        try {
            BookTypeDAO bookTypeDAO = session.getMapper(BookTypeDAO.class);
            return bookTypeDAO.getAllBookTypes();
        } finally {
            session.close();
        }
 
 

 3.3、測試運行

 
package com.zhangguo.Spring61.test;

import static org.junit.Assert.assertNotNull;

import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.zhangguo.Spring61.entities.BookType;
import com.zhangguo.Spring61.mapping.BookTypeDAO;

public class TestMyBatisSpring01 {
    @Test
    public void test01() {
        //初始化容器
        ApplicationContext ctx=new ClassPathXmlApplicationContext("ApplicationContext.xml");
        //獲得bean
        BookTypeDAO bookTypeDao=ctx.getBean("bookTypeDao",BookTypeDAO.class);
        //訪問數(shù)據(jù)庫
        List<BookType> booktypes=bookTypeDao.getAllBookTypes();
        for (BookType bookType : booktypes) {
            System.out.println(bookType);
        }
        assertNotNull(booktypes);
    }
}
 

 運行結(jié)果:

Spring整合MyBatis(Maven+MySQL)圖文教程詳解

小結(jié):此處的整合還是相對基礎(chǔ),更完善的整合內(nèi)容將在后面的章節(jié)實現(xiàn)。另外在MyBatisCfg.xml文件中可以刪除運行環(huán)境中數(shù)據(jù)源配置部分的內(nèi)容,如下圖所示。我們當前的示例使用的是Spring提供的數(shù)據(jù)源,其實也可以使用一第三方的數(shù)據(jù)源管理,如C3P0,Druid(德魯伊,阿里巴巴開發(fā))等。

以上所述是小編給大家介紹的Spring整合MyBatis(Maven+MySQL)圖文教程詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://www.cnblogs.com/best/archive/2016/07/04/5638827.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲乱码一区二区三区国产精品 | 亚洲精品日韩专区在线观看 | 精品亚洲欧美中文字幕在线看 | 潘金莲西门庆一级淫片aaaaaa | 万域之王在线观看 | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | 日本 片 成人 在线 日b视频免费 | 亚洲 制服 欧美 中文字幕 | youzljzljzljzlj96 | 紧身短裙女教师波多野 | 亚洲国产精品综合久久一线 | 国内精品在线观看视频 | 亚洲国产天堂综合一区 | 免费视频精品一区二区 | 亚洲香蕉综合在人在线视看 | 2018天天拍拍拍免费视频 | 国产精品不卡高清在线观看 | 天天色国产 | 色老板免费在线观看 | 国产精品久热 | 日韩大片在线播放 | 大香焦在线观看 | 97自拍视频在线观看 | 双性小说肉 | 男男playh片在线观看 | 免费看男人使劲躁女人小说 | 国产亚洲人成网站在线观看不卡 | 亚洲精彩视频在线观看 | 国产色视频网站 | 鞋奴的视频VK | 色老板在线视频观看 | 高h折磨调教古代 | 色噜噜亚洲男人的天堂www | 二次元美女扒开内裤露尿口 | a男人的天堂久久a毛片 | 国产精品最新资源网 | 无遮无挡免费视频 | 国产一区二区视频在线播放 | 亚洲欧美日韩中文字幕久久 | 天堂一区二区在线观看 | 99re7在线精品免费视频 |