zoukankan      html  css  js  c++  java
  • MyBatis数据持久化(十)与Spring4整合

    前面几节介绍了mybatis的基本使用方法,本节主要介绍如何使用mybatis与主流的IoC容器Spring进行整合。
    我们首先需要获取Spring框架的jar文件,在写本文时spring的最新Release版本为4.1.7,笔者采用的版本为4.0.0。
    下面是Spring各个版本的下载地址列表:
    http://repo.springsource.org/libs-release-local/org/springframework/spring/
    Spring4.0.0版本下载地址:
    http://repo.springsource.org/libs-release-local/org/springframework/spring/4.0.0.RELEASE/spring-framework-4.0.0.RELEASE-dist.zip

    下载后解压目录结构如下所示:
    这里写图片描述
    我们所需Jar包都存放在lib目录下,这里我们需要將以下几个必须的Jar包拷贝到工程中。
    这里写图片描述
    除此之外,我们还需要將下面几个Spring依赖的Jar包也添加到我们的项目中。
    这里写图片描述

    要将两者进行整合,我们还需要mybatis官方提供的支持spring的jar包mybatis-spring-1.2.3.jar。

    下载地址:http://search.maven.org/#artifactdetails%7Corg.mybatis%7Cmybatis-spring%7C1.2.3%7Cjar

    接下来我们將mybatis与Spring进行整合。

    1.新建数据库配置文件

    新建一个数据库配置属性文件,名称为mysql.properties,内容如下:

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF8
    username=root
    password=

    2.新建Spring配置文件

    我们需要新建一个xml文件用于配置bean,名称为beas.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:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        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.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop.xsd
               http://www.springframework.org/schema/tx 
               http://www.springframework.org/schema/tx/spring-tx.xsd">
        <!-- 加载数据库配置文件 -->
        <context:property-placeholder  location="classpath:mysql.properties"/>
    
        <!-- 配置数据源 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"       
            destroy-method="close">      
            <property name="driverClassName" value="${driver}" />      
            <property name="url" value="${url}" />      
            <property name="username" value="${username}" />      
            <property name="password" value="${password}" />      
        </bean>  
        <!-- 创建 SqlSessionFactory-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
          <property name="dataSource" ref="dataSource" /> 
          <property name="configLocation" value="SqlMapConfig.xml"/>
        </bean>
        <!-- 创建SqlSessionTemplate -->
        <bean id="sqlSessionTemplate"     class="org.mybatis.spring.SqlSessionTemplate"> 
          <constructor-arg index="0" ref="sqlSessionFactory" /> 
        </bean>
    
        <bean id="userDao" class="com.mybatis.dao.impl.UserDaoImpl">
            <property name="sqlSessionTemplate" ref="sqlSessionTemplate"/>
        </bean>
    
    </beans>

    3.新建mybaits配置文件

    3.1.新建mybaits配置文件SqlMapConfig.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">
    <configuration>
        <typeAliases>
            <typeAlias alias="user" type="com.mybatis.domain.User"/>
        </typeAliases>
        <mappers>
            <mapper resource="User.xml"/>
        </mappers>
    </configuration>

    由于我们使用Spring来管理数据源,因此前面教程中的mybatis配置文件可以大大简化。
    3.2.新建sql配置文件User.xml并增加一条sql配置。

    <?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">
    <mapper namespace="User">
        <insert id="saveUser" parameterType="user">
            insert into user(username,password,phone) values(#{username},#{password},#{phone});
        </insert>
    </mapper>

    4.创建DAO类

    接下来我们新建一个Dao类,UserDao来对User表进行相关操作。
    这里我们采用面向接口的编程方式,先新建一个UserDao接口,com.mybatis.dao.UserDao:

    package com.mybatis.dao;
    
    import com.mybatis.domain.User;
    
    public interface UserDao {
        void saveUser(User u);
    }
    

    然后新建实现类com.mybatis.dao.impl.UserDaoImpl:

    package com.mybatis.dao.impl;
    
    import org.mybatis.spring.SqlSessionTemplate;
    import com.mybatis.dao.UserDao;
    import com.mybatis.domain.User;
    
    public class UserDaoImpl implements UserDao{
        private SqlSessionTemplate sqlSessionTemplate;
    
        public SqlSessionTemplate getSqlSessionTemplate() {
            return sqlSessionTemplate;
        }
    
        public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
            this.sqlSessionTemplate = sqlSessionTemplate;
        }
    
        @Override
        public void saveUser(User u) {
            sqlSessionTemplate.insert("User.saveUser", u);
        }
    
    }
    

    这里我们通过spring注入了sqlSessionTemplate ,所有的数据操作都通过sqlSessionTemplate 来完成(参见spring配置文件beas.xml)。

    5.创建测试用例

    新建一个测试类SpringTest,内容如下:

    package com.mybatis.exam1;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.mybatis.dao.UserDao;
    import com.mybatis.domain.User;
    
    public class SpringTest {
    
        @Test
        public void testSpring()
        {
            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
            UserDao userDao = (UserDao)context.getBean("userDao");
            User u = new User();
            u.setPassword("aaaa");
            u.setPhone("8888888");
            u.setUsername("Smith");
            userDao.saveUser(u);
    
        }
    }

    打开Outline视图,在testSpring方法上点击右键=>Debug As=>Junit Test,运行成功。
    查看数据库,一条新的记录成功插入到数据库中:

    这里写图片描述

    博文源码:https://github.com/rongbo-j/mybatis-blog
    (请参考exam2工程)

  • 相关阅读:
    yii2 分页
    yii2 钩子函数
    linux 配置compoer
    Python随心记--迭代器协议和for循环机制
    Python随心记--文件操作处理 open()
    Python随心记--练习
    Python随心记--函数式编程及常用内置函数,及部分实例
    Python随心记--匿名函数
    Python随心记--函数作用域
    Python随心记--局部变量与全局变量
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468682.html
Copyright © 2011-2022 走看看