zoukankan      html  css  js  c++  java
  • 整合MyBatis到Spring中实现Dao层自动装配

    首先是需要引用的包

    <properties>
        <spring.version>4.2.6.RELEASE</spring.version>
    </properties>
    <dependencies>
           <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-oxm</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.0</version>
            </dependency>
            <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.13</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.0</version>
            </dependency>
    </dependencies>

    接下来是Spring的配置文件

     1 <beans xmlns="http://www.springframework.org/schema/beans"
     2        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3        xmlns:tx="http://www.springframework.org/schema/tx"
     4        xmlns:context="http://www.springframework.org/schema/context"
     5        xsi:schemaLocation="http://www.springframework.org/schema/beans
     6        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
     7        http://www.springframework.org/schema/tx
     8        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
     9        http://www.springframework.org/schema/context
    10        http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    11     <bean id="settings" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    12         <property name="location"><value>mybatis-database.properties</value></property>
    13     </bean>
    14     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    15         <property name="driverClassName" value="${driver}"/>
    16         <property name="url" value="${url}"/>
    17         <property name="username" value="${username}"/>
    18         <property name="password" value="${password}"/>
    19     </bean>
    20     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    21         <property name="dataSource" ref="dataSource"/>
    22     </bean>
    23     <tx:annotation-driven transaction-manager="txManager"/>
    24     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    25         <property name="dataSource" ref="dataSource" />
    26         <!-- 引用MyBatis配置文件中的配置 -->
    27         <property name="configLocation" value="classpath:mybatis-config.xml" />
    28         <!-- 配置SQL映射文件信息 -->
    29         <property name="mapperLocations">
    30             <list>
    31                 <value>classpath:com/test/dao/**/*.xml</value>
    32             </list>
    33         </property>
    34     </bean>
    35     <!-- 配置DAO -->
    36     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    37         <property name="basePackage" value="com.test.dao" />
    38     </bean>
    39     <!-- 配置业务Bean -->
    40     <context:component-scan base-package="com.test.server" />
    41 </beans>

    其中所需要的 mybatis-database.properties 文件中包含的是数据库连接相关的参数

    url=MySQLUrl
    driver=com.mysql.cj.jdbc.Driver
    username=root
    password=123456

    当然也可以将值直接写入到Spring配置文件中

    然后就是MyBatis的配置文件,内容保持默认既可,不需要再额外增加配置了

    <?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>
        <settings>
            <!-- Globally enables or disables any caches configured in any mapper under this configuration -->
            <setting name="cacheEnabled" value="false"/>
            <!-- Sets the number of seconds the driver will wait for a response from the database -->
            <setting name="defaultStatementTimeout" value="5"/>
            <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn -->
            <setting name="mapUnderscoreToCamelCase" value="true"/>
            <!-- Allows JDBC support for generated keys. A compatible driver is required.
            This setting forces generated keys to be used if set to true,
             as some drivers deny compatibility but still work -->
            <setting name="useGeneratedKeys" value="true"/>
        </settings>
    </configuration>

    然后定义MyBatis的Mapper接口和xml数据库脚本配置文件,这里和标准的MyBatis的方式一样,就不赘述了。

    接下来是定义Service接口与其实现类,如testService与testServiceImpl

    public interface TestServer {
        List<Man> selectList();
    }
    @Transactional
    @Service("TestServer")
    public class TestServerImpl implements com.test.server.TestServer {
        @Autowired
        private ManMapper manMapper;
    
        @Transactional(propagation = Propagation.SUPPORTS)
        @Override
        public List<Man> selectList() {
            return manMapper.selectList();
        }
    }

    这里需要注意的是首先必要的两个属性,@Service是用来注册Spring Bean的,@Autowried是用来做Mapper的自动映射与装配的

    接下来就可以实际调用Service了

    ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-mybatis.xml");
    TestServer server = (TestServer)ctx.getBean("TestServer");
    List<Man> result = server.selectList();
  • 相关阅读:
    shell——变量
    xxx is not in the sudoers file.This incident will be reported.的解决方法
    百度面试回忆
    iOS网络协议 HTTP/TCP/IP浅析
    使用xib封装一个自定义view的步骤
    修改了系统自带头文件后,Xcode会报错
    字典转模型规范化
    文本属性Attributes
    苹果API常用英语名词
    命令行 -- 命令"%cd%"
  • 原文地址:https://www.cnblogs.com/masahiro/p/10342071.html
Copyright © 2011-2022 走看看