zoukankan      html  css  js  c++  java
  • Spring和MyBatis整合

    前言:在前面一篇文章中,介绍了单独使用MyBatis连接orace的例子,在这里分享学习下Spring和MyBatis是如何整合的,以具体工程为例子

    阅读目录:

    • 1.环境准备
    • 2.搭建工程
      • 2.1.applicationContext.xml
      • 2.2.userMapper.xml
      • 2.3.测试类

    MyBatis和Spring整合的官方地址,http://www.mybatis.org/spring/zh/index.html

    1.环境准备

       所需环境  Eclipse+maven

       所需jar包    mybatis-3.4.5.jar

                          spring-context-4.3.1.RELEASE.jar spring相关jar包

                         mybatis-spring-1.3.1.jar

    2.搭建工程

    工程结构如下图所示

    2.1 spring框架的配置文件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: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.xsd">
    
        <!--1 引入属性文件,在配置中占位使用 -->
        <context:property-placeholder location="classpath:db.properties" />
    
        <bean id="dataSource"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${driver}" />
            <property name="url" value="${url}" />
            <property name="username" value="otatransuser" />
            <property name="password" value="${password}" />
        </bean>
    
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <!-- sql映射文件路径 -->
              <property name="mapperLocations" value="classpath:mapper/*.xml"></property>  
        </bean>
        
        <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
            <property name="mapperInterface" value="com.ota.mapper.UserMapper" />
            <property name="sqlSessionFactory" ref="sqlSessionFactory" />
        </bean>
        
        <!--5 声明式事务管理 -->
        <!--定义事物管理器,由spring管理事务 -->
        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    
    </beans>

    db.properties文件放在类路径下,内容为:

    driver=oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.221.129.208)(PORT=1523))(CONNECT_DATA=(SERVICE_NAME=otatransuser)))
    username=otatransuser
    password=otatransuser123

    要注意:(1)sqlSessionFactory的属性dataSource是必输项,用来指定数据源

                       sqlSessionFactory的属性configLocation,是用来指定 MyBatis 的 XML 配置文件路径的。这个属性是可选项

                      sqlSessionFactory的属性mapperLocations 属性使用一个资源位置的 list。 这个属性可以用来指定 MyBatis 的 XML 映射器文件的位置。比如:

    <property name="mapperLocations" value="classpath*:sample/config/mappers/**/*.xml" />表示这会从类路径下加载在 sample.config.mappers 包和它的子包中所有的 MyBatis 映射器 XML 文件。

                 (2)使用MapperFactoryBean把映射器接口userMapper加入到spring中,如果你有多个映射器接口,需要一一的注入到spring。

                          其实没有必要在spring的xml文件中注册所有的映射器,可以采用这样一种方法,

    你可以使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean。

    要创建 MapperScannerConfigurer,可以在 Spring 的配置中添加如下代码:

    <!-- 指定要自动扫描接口的基础包,实现接口 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.ota.mapper" />
        </bean>

    注 意 , 没 有 必 要 去 指 定 SqlSessionFactory 或 SqlSessionTemplate , 因 为 MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配

    2.2 userMapper.xml文件

    userMapper.xml映射器内容如下,user还有userMapper这里也不再一一详细介绍,在前面一篇mybatis入门中有提到

    <mapper namespace="com.ota.mapper.UserMapper">
      <select id="findUserByName" parameterType="java.lang.String" resultType="com.ota.pojo.User">
       select * from ota_user where username=#{username}
      </select>
    </mapper>

    2.3测试类

    public class MybatisTest {
    
        public static void main(String[] args) throws Exception {
            ApplicationContext ctx = null;
            ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            UserMapper userMapper = (UserMapper) ctx.getBean("userMapper");
            User user = userMapper.findUserByName("wanghaixia");
            System.out.println(user);
        }

    运行OK

               

  • 相关阅读:
    解决DataGridView中回车换行的问题
    几条经典的SQL语句
    SQL中把一个表中的数据导出到一个新表中
    [转载]TCP的网络编程中一些典型的问题,以及一些分析和解决方案
    Delphi调用C#web服务参数无法接收的问题
    IIS服务器不支持中文文件名的解决方法
    SQL SERVER2005导入导出工具
    为远程IP服务器取个本地认识的主机名
    Win Form中如何把ENter回车键转换成Tab键
    CheckedListBox 用法
  • 原文地址:https://www.cnblogs.com/whx7762/p/7699092.html
Copyright © 2011-2022 走看看