Springboot整合之整合通用Mapper和使用MBG工具

通用mapper是在mybatis的基础上为继续简化工作量而作,使用通用mapper一定要使用MBG工具,通过逆向工程能生成表对应的Mapper接口、实体类和Mapper配置文件,实现基础的数据库操作。当然,也可以实现复杂的数据库操作。通用Mapper官方文档:https://github.com/abel533/Mapper/wiki,下面的配置步骤也是基本按照该文档进行的。

  • 新建module,勾选下列模块:web、jdbc、mysql、mybatis

  • 在pom.xml中添加依赖:

如果使用mapper会出错:java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.(),所以使用下面的依赖        



    tk.mybatis
    mapper-spring-boot-starter
    2.1.5
  • 继续配置pom文件,可参考:

https://github.com/abel533/Mapper/wiki/4.1.mappergenerator

        > 首先添加properties内容,这些properties需要在别处使用,所以可以在使用的地方直接写值,但推荐此种方式,将properties定义在pom文件中,以下是其内容及注释:
        以项目包名com.lf.mygenerator为例            


    1.8
    
    ${basedir}/src/main/java
    
    com.lf.mygenerator.mappers
    
    com.lf.mygenerator.entities
    
    
        ${basedir}/src/main/resources
    
    
    mybatis/mappers
    
    4.1.5
    
    8.0.15
               

        > 然后在标签里的标签内添加mybatis generator插件:

            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.6
                
                    
                        
                        ${basedir}/src/main/resources/generator/generatorConfig.xml
                    
                    true
                    true
                
                
                    
                        mysql
                        mysql-connector-java
                        
                        ${mysql.version}
                    
                    
                        tk.mybatis
                        mapper
                        ${mapper.version}
                    
                
            
  • 添加application.yml配置文件,内容参考整合mybatis;设置application.properties(也可以使用其他配置文件),该文件配置了数据库连接。

理论上application.yml和application.properties值是一样的,都可以使用${}引用,但尝试之后发现yml文件引用不了,这个问题有待解决。application.properties内容如下:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql:///test
spring.datasource.username=root
spring.datasource.password=root
  • 根据pom文件的plugin设置,需要在Resources下新建generator/generatorConfig.xml文件,内容参考通用Mapper官方文档

以下是其内容,其中用${}引用pom中设置的properties值




    
    
    
    
    
        
        

        
            
            
        
        
        
        
        
        
        
        
        
        

        
        
        

注意:不要使用

,这会导致所连接url的所有数据库的所有表都会生成对应的文件,而不只是test数据库

  • 在idea中打开Maven视图,选择Execute Maven Goal,在弹出的对话框中Working Directory找到对应的project或module,而Command line则输入以下内容:mybatis-generator:generate,然后execute即可生成。如果生成失败,可能是其中的配置出错。Springboot整合之整合通用Mapper和使用MBG工具_第1张图片

  • 此时配置基本完成,如果此时启动应用,还可能会有如下的异常:

nested exception is java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.lf.mygenerator.mappers.EmployeeMapper.selectByExample. please check file [D:\Idea Projects\springboot\ssmcrud\target\classes\mybatis\mappers\EmployeeMapper.xml] and com/lf/mygenerator/mappers/EmployeeMapper.java (best guess)
 

nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.lf.mygenerator.mappers.CustomerMapper' available: expected at least 1 bean which qualifies as autowire candidate.

异常的原因是不能检测生成的Mapper接口作为Bean,不能装配,所以要在application.yml中加上配置语句以指定Mapper接口的包位置

mybatis:

  base-packages: com.lf.mygenerator.mappers
  • 然后可以进行一些测试操作数据库,可参考整合mybatis。至于复杂的数据库操作,后续再更新。

  • 总结:整个步骤只要细心一点是没多大问题的,关键的几点就是数据库表设计、pom.xml和generatorConfig.xml的配置,至于各表对应的实体类、Mapper接口、Mapper配置文件全都是自动生成的。后续的关键点就是复杂的数据库操作(定制接口继承、对应复杂操作的配置文件书写和修改等,这些都要求能熟练使用MyBatis框架)

你可能感兴趣的:(Springboot整合之整合通用Mapper和使用MBG工具)