springboot集成mybatis(使用mapper.xml)

mybatis最关键的原理就是 Mapper.java–> Mapper.xml,明白这个就好理解了。

pom.xml添加依赖

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

脉络关系

MapperScannerConfigurer: # mybatis配置类,如果他的属性存在,该类自动装配
	basePackage: # Mapper接口路径,对应@MapperScan(basePackages="")
	sqlSessionFactory: # 
		mapperLocations: # Mapper.xml的路径
		typeAliasesPackage: # 实体类路径
		dataSource: # 不用专门配置,一般项目早都配好数据源了

可见,实际要配置的只有3个:
basePackage,mapperLocations,typeAliasesPackage。

主要元素

Mapper接口

MapperScannerConfigurer.basePackage 属性。指定要扫描的Mapper接口的路径。
实际中多用 @MapperScan(basePackages="***") 来配置,更简单方便。
必须配置。

Mapper.xml

SqlSessionFactoryBean.mapperLocations 属性,指定Mapper接口对应的xml路径。
必须配置。

typealias

SqlSessionFactoryBean.typeAliasesPackage 属性。
配置上这个之后,Mapper.xml中实体的类名不用写全路径。但是实际中一般还是写全路径。
非必须配置。

配置方式

下面举例说明2种配置方式

类配置方式

@Configuration
@MapperScan(basePackages = "com.example.accessingdatamysql.dao")
public class MybatisConfiguration {
    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception
    {
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
        // mapper.xml 配置
        String path = "classpath:mappers/*.xml";
        PathMatchingResourcePatternResolver resource = new PathMatchingResourcePatternResolver();
        sqlSessionFactory.setMapperLocations(resource.getResources(path));
        // typealias 配置
        sqlSessionFactory.setTypeAliasesPackage("com.example.accessingdatamysql.entity");
        return sqlSessionFactory.getObject();
    }
}

配置文件方式

@MapperScan(basePackages = "com.example.accessingdatamysql.dao")
public class MybatisConfiguration {
}

application.yml

mybatis:
  type-aliases-package: com.example.accessingdatamysql.entity
  mapperLocations: classpath:mappers/*.xml

复古流,纯java类配置

有些人喜欢纯java类配置,也是可以的,就是去掉MapperScan,替换为用
MapperScannerConfigurer.setBasePackage()即可。

@Configuration
public class MybatisConfiguration {
    @Bean
    public MapperScannerConfigurer MapperScannerConfigurer() throws Exception{
        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
        configurer.setBasePackage("com.example.accessingdatamysql.dao");
        configurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
        return configurer;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception
    {
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
        // 不要忘了配置数据源,如果用配置文件的方式,不用手动配置
        //sqlSessionFactory.setDataSource();
        // mapper.xml 配置
        String path = "classpath:mappers/*.xml";
        PathMatchingResourcePatternResolver resource = new PathMatchingResourcePatternResolver();
        sqlSessionFactory.setMapperLocations(resource.getResources(path));
        // typealias 配置
        sqlSessionFactory.setTypeAliasesPackage("com.example.accessingdatamysql.entity");
        return sqlSessionFactory.getObject();
    }
}

mybatis配置打印完整的sql语句

mybatis-config.xml配置文件里面添加一行即可:

<setting name="logImpl" value="STDOUT_LOGGING" />

其他

SqlSessionFactoryBean.setDataSource() 设置数据源的操作。
如果是配置文件配置,不用手动的set。
如果是configuration配置,需要手动的set。

github地址:
https://github.com/1054294965/boot-mybatis-mapper

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值