mybatis-spring

时间:2017-11-07 04:55:49

标签: java spring mybatis spring-mybatis

我们的项目结构如下:

- basePkg
 |- pkg1
  |- dao1
   |- mybatis-mappers...
  |- classes...
 |- pkg2
  |- dao2
   |- mybatis-mappers...
  |- classes...

现在,每当我们将mybatis映射器添加到任何dao包时,我们都必须添加一个新的条目,如下所示:spring context.xml

<bean id="testDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
  <property name="mapperInterface" value="basePkg.pkg1.dao1.testDao" />
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

为每个新映射器添加新条目变得很麻烦。我找到的另一种方法是使用<mybatis:scan \>。我对这种方法面临两个问题:

  • 我不想直接提供basePkg,因为它需要Spring扫描映射器的整个项目结构,这会影响性能。这意味着我必须为每个basPkg.dao*包提供单独的扫描元素。相反,有没有办法使用单个扫描元素并使用正则表达式指定所有dao子包?
  • 我们使用两个DataSources(MySQL和RedShift)。在解决上面列出的第一个问题时,我如何解释这一点?

1 个答案:

答案 0 :(得分:0)

我不必这样说:

<bean id="testDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
  <property name="mapperInterface" value="basePkg.pkg1.dao1.testDao" />
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

使用的库:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependency>

<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis-spring</artifactId>
   <version>1.3.1</version>
</dependency>

<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.4.4</version>
</dependency>

确保

  1. TestMapper.java接口将具有TestMapper.xml
  2. 或只是带注释的TestMapper.java
  3. 如果XML文件位于src \ main \ java中,则需要以下内容:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>add-resource</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>add-resource</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <directory>src/main/java</directory>
                                <includes>
                                    <include>**/*.xml</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    

    希望以上有所帮助。