Mybatis与SpringBoot整合

  • A+

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

1.SpringBoot中引入Mybatis

  • mybatis官方提供了MyBatis-Spring-Boot-Starter用于和SpringBook整合,并提供了相关版本支持概览,如下:

    Mybatis与SpringBoot整合

  • 在SpringBoot项目的maven配置文件pom.xml中配置如下依赖:

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

2.SpringBoot中有关Mybatis的重要配置

@MapperScan注解

  • 在项目中需要将Mapper接口注入到springBean管理中的上下文中,便于在service中引用,此时就需要@MapperScan来扫描映射类
  • 配置@MapperScan
    @Configuration
    @MapperScan("com.mybaits.springboot.springbootmybatisbase.mapper")
    public class MybatisMapperScanConfig {}
    

    此注解扫描com.mybaits.springboot.springbootmybatisbase.mapper下所有的mapper接口

mapper-locations配置

  • 在项目中使用xml书写sql的方式更为灵活多变,在配置了@MapperScan后,还需要告诉Mybatis框架相对应的xml文件在哪里
  • application.yml中添加如下配置

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

    除了此配置在application.yml中还可以进行很多mybatis配置,其中为确保自动驼峰映射例如'user_name'映射为'userName',写入如下配置

    mybatis:
        configuration:
            map-underscore-to-camel-case: true
    

3.验证

  • 在启动类中实现CommandLineRunner的run方法,当程序启动完成之后就会执行主键的查询语句,输出数据库的Hi Mybatis!字样
    @SpringBootApplication
    public class SpringbootMybatisBaseApplication  implements CommandLineRunner {
            public static void main(String[] args) {
                SpringApplication.run(SpringbootMybatisBaseApplication.class, args);
            }
            @Autowired
            private MybatisSayMapper mybatisSayMapper;
             @Override
            public void run(String... args) {
                 MybatisSay mybatisSay = mybatisSayMapper.selectByPrimaryKey(1);
                 System.out.println(mybatisSay.getSay());
             }
    }
    

4.总结

zhangfeng

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: