整合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();

猜你喜欢

转载自www.cnblogs.com/masahiro/p/10342071.html