Springboot整合之整合MyBatis

为什么要整合mybatis?使用默认数据源或spring jdbc同样可以操作数据库,但使用mybatis框架能更好的对数据库进行操作,将功能集成后可以大大提高性能,能减少很多工作量,甚至使用MBG工具后可以自动生成表对应的entities类、mapper接口类和mapper.xml配置文件,对于简单的数据库操作,无需再写sql语句。

mybatis框架和数据源并无冲突,所以,这里只使用默认数据源,而不再配置druid等其他数据源了。

  • 新建module,勾选下列模块:web、jdbc、mysql、mybatis,pom.xml中部分依赖如下:

        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.0.0
        
        
            mysql
            mysql-connector-java
            runtime
        
  • 配置数据库连接信息:参考整合JDBC的配置数据库连接信息;如果要使用非默认的数据源,参考配置druid数据源

  • mybatis在springboot中有两种使用方式:即使用注解和使用配置文件的方式。

注解较为简单,只要在mapper接口添加@Mapper,然后在其他配置类中使用@MapperScan扫描即可,但接口的方法需要手写sql语句,简单的数据库操作可以使用,所以不推荐。
        另一种使用配置文件的方法如下:

①  首先在Resources下为mapper配置文件设置目录,推荐的方式是:
            Resources
                -mybatis(目录)
                    mybatis-config.xml(可缺省)
                    -mappers(目录)
                        XxxMapper.xml

②  然后在application.properties或application.yml中添加配置,mybatis是根属性,缩进是必须的。还要注意的是config-location:是属性,而classpath开头的是值。yml规定属性后面必须要有空格,而如果把classpath:后面加空格,classpath就变成了属性了,是不对的。            

mybatis:
  #随mybatis-config.xml的有无而定
  config-location: classpath:mybatis/mybatis-config.xml 
  #即mappers目录下所有的xml都作为mapper配置文件 ,
  #无需再一个一个的填写
  mapper-locations: classpath:mybatis/mappers/*.xml   

此时application.yml的内容如下:

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test
    driver-class-name: com.mysql.cj.jdbc.Driver

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

③  新建实体类:如Customer类(包目录自行设计),然后为Customer类新建对应的Mapper接口            

            @Mapper
            public interface CustomerMapper {
                Customer getCustomerById(Integer id);
            }

 接口必须要声明为Mapper类型的,即使用@Mapper注解(或extends Mapper,在通用mapper中可见),如果没有这个声明,接口对象是无法作为bean使用的。

④  然后在mappers资源目录下添加对应的配置文件:CustomerMapper.xml
            接下来是添加配置文件的内容,可参考官方文档http://www.mybatis.org/mybatis-3/zh/getting-started.html           
            CustomerMapper.xml的内容为:                        

            
            
            
                
            

            
            注意:    》namespace和resultType使用的是全类名,可在类文件右键Copy Reference获取;
                           》sql语句的填写参考mybatis相关文档和资料,不再详述,sql语句和Mapper接口的方法是一致的:id为方法名,resultType为方法返回值
                           》