在spring boot中如果配置传统spring-mybatis中的MapperScannerConfigurer里面的basePackage?

烛✟孩 发布于 2018/11/15 15:13
阅读 3K+
收藏 0

解读下一代网络:算力网络正从理想照进现实!>>>

传统spring-mybatis项目,部分Dao接口没有对应mapper.xml文件,里面接口全部用Provider实现,如下:

package com.base.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.SelectProvider;

import com.base.provider.BaseProvider;

public interface BaseDao {
	
	@SelectProvider(method = "isTableExist", type = BaseProvider.class)
	int isTableExist(String tableName);
	
	@SelectProvider(method = "listTableFields", type = BaseProvider.class)
	List<Map<String, String>> listTableFields(String tableName);
	
	@SelectProvider(method = "listTableFieldsName", type = BaseProvider.class)
	List<String> listTableFieldsName(String tableName);
}

接口类上无需声明任何注解,配置mybatis.xml时,只需要如下配置即可:

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath*:com/*/mapper/*.xml"></property>
    </bean>

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.*.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

项目启动时,就可以把com.*.dao下的Dao接口注入了。

现在换spring boot项目,能不用在application.properties/application.yml中配置扫描com.*.dao中的Dao呢?

加载中
0
Shawearn
Shawearn

可以的,

首先是 application.yml 文件的配置:

mybatis:
  mapper-locations: classpath:com/*/mapper/*.xml

其次在 Application 启动类上添加注解注明 Dao 接口路径:

@MapperScan("com.shawearn.www.mapper")

MapperScan 中天上你 Dao 接口所在包路径

返回顶部
顶部