Spring整合MyBatis(Maven+spring+MyBatis+mysql实践附demo)

来源:互联网 发布:泰国数据漫游资费 编辑:程序博客网 时间:2024/06/01 10:23

Spring整合MyBatis(Maven+spring+MyBatis+mysql)

前言:
接下来我们的项目在我上一篇 Maven+mybatis+mysql项目实践 的基础上进行修改,利用Spring对MyBatis进行整合。
( 文章末尾附上此次实践的demo )


一、回顾 Maven+mybatis+mysql 项目

1、新建maven项目,进行相应配置

参考:http://blog.csdn.net/kevinbetterq/article/details/77967856

2、mybatis访问mysql

  • 数据库准备
  • 修改pom.xml
  • 创建实体类
  • 创建访问接口
  • 添加映射文件
  • 添加MyBatisCfg.xml配置文件
  • 添加MyBatisUtil工具类
  • 创建Impl类继承接口
    (参考:http://blog.csdn.net/kevinbetterq/article/details/77969009)

3、分析

在上面的项目中,我们对数据库的一些配置和启动是在 MyBatisCfg.xml 中指明的。这样对有些映射的注册较为麻烦,接下来我们进行spring的整合

二、Spring与MyBatis整合

1、首先,修改pom.xml

添加以下spring的依赖:

        <!-- 添加Spring-core包 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-core</artifactId>            <version>4.1.4.RELEASE</version>        </dependency>        <!-- 添加spring-context包 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>4.1.4.RELEASE</version>        </dependency>        <!-- 添加spring-tx包 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-tx</artifactId>            <version>4.1.4.RELEASE</version>        </dependency>        <!-- 添加spring-jdbc包 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>4.1.4.RELEASE</version>        </dependency>        <!-- 为了方便进行单元测试,添加spring-test包 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>4.1.4.RELEASE</version>        </dependency>        <!--添加spring-web包 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-web</artifactId>            <version>4.1.4.RELEASE</version>        </dependency>        <!-- 添加spring-webmvc -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>4.1.4.RELEASE</version>        </dependency>        <!--添加aspectjweaver包 -->        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjweaver</artifactId>            <version>1.8.5</version>        </dependency>        <!-- 添加mybatis与Spring整合的核心包 -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis-spring</artifactId>            <version>1.3.0</version>        </dependency>

2、弃用MyBatisCfg.xml,新增 ApplicationContext.xml

作为Spring与MyBatis的配置:
这里写图片描述
ApplicationContext.xml

<?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">    <!-- 引入db.properties属性文件 -->    <context:property-placeholder location="classpath:db.properties" />    <!--定义一个jdbc数据源,创建一个驱动管理数据源的bean -->    <bean id="jdbcDataSource"            class="org.springframework.jdbc.datasource.DriverManagerDataSource">        <property name="driverClassName" value="${jdbc.driver}" />        <property name="url" value="${jdbc.url}" />        <property name="username" value="${jdbc.username}" />        <property name="password" value="${jdbc.password}" />    </bean>    <!--创建一个sql会话工厂bean,指定数据源 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!-- 指定数据源 -->        <property name="dataSource" ref="jdbcDataSource" />        <!--类型别名包,默认引入com.lmei.entity下的所有类 -->        <property name="typeAliasesPackage" value="com.qwk.entity"></property>        <!--指定sql映射xml文件的路径 -->        <property name="mapperLocations"            value="classpath:com/qwk/mapper/*Mapper.xml"></property>    </bean>    <!--自动扫描映射接口-->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <!-- 指定sql会话工厂,在上面配置过的 -->        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>        <!-- 指定基础包,即自动扫描com.lmei.dao这个包下的所有接口类 -->        <property name="basePackage" value="com.qwk.dao"></property>    </bean>    <!--自动扫描组件 -->    <context:component-scan base-package="com.qwk">        <context:exclude-filter type="aspectj" expression="com.qwk.dao.*"/>    </context:component-scan>    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy></beans>

注意,因为db.properties中的 username 可能会冲突,所以进行一下修改,也可以看到上面的name=”username” value=”${jdbc.username}”,我们也是换成了jdbc.username。

db.properties:

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNulljdbc.username=rootjdbc.password=123456

3、添加测试类 TestMyBasticSpring.java

package com.qwk.test;import static org.junit.Assert.*;import java.util.List;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.qwk.dao.BookDaoI;import com.qwk.entity.Book;public class TestMyBatisSpring {    @Test    public void test(){         //初始化容器        ApplicationContext ctx=new ClassPathXmlApplicationContext("ApplicationContext.xml");        //获得bean       /* BookDaoI bookDao = ctx.getBean("bookDao",BookDaoI.class);*/        BookDaoI bookDao = ctx.getBean(BookDaoI.class);        //访问数据库        List<Book> books = bookDao.getAllBook();        for (Book book : books) {            System.out.println(book.getBookName());        }        assertNotNull(books);    }}

项目右键->Run As->Junit Test
这里写图片描述


这样,Maven+spring+MyBatis+mysql的项目整合就完成了。
Spring的添加其实较为简单,这里给出一个demo,大家可以拿来参考参考:
https://github.com/KevinBetterQ/SpringMVC_Mybatis/tree/0a59f22d4bb43e1554b93ad7cfd54cf3795c962d

阅读全文
0 0