SpringBoot整合mybatis

SpringBoot整合mybatis

1. 创建springboot项目,在pom.xml文件中添加依赖


        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
            <version>2.0.0version>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>

标签中加入mybatis整合springboot框架的起步依赖,并添加需要的数据库驱动。

此处的mysql驱动没有填写版本号,是因为springboot帮助我们整合了父pom中有mysql的驱动。

SpringBoot整合mybatis_第1张图片

可以看到,maven工程中mysql驱动是有版本号的,而我们并没有填写版本号

若是需要修改版本号,直接在mysql依赖下添加标签添加你想要的版本号即可。

2. mybatis操作数据库中的表通常有很多,为了方便,可以使用mybatis提供的逆向工程来自动生成Dao类和mapper.xml映射文件
1. 在项目路径下添加GeneratorMapper.xml文件


DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    
    <classPathEntry location="C:\Users\ASUS\.m2\repository\mysql\mysql-connector-java\8.0.25\mysql-connector-java-8.0.25.jar"/>
    
    <context id="tables" targetRuntime="MyBatis3">
        
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        commentGenerator>

        
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/springdb?userSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"
                        userId="databasename"
                        password="******">
        jdbcConnection>

        
        <javaModelGenerator targetPackage="com.cowstone.domain"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="false"/>
        javaModelGenerator>
        
        <sqlMapGenerator targetPackage="com.cowstone.mapper"
                         targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
        sqlMapGenerator>
        
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.cowstone.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
        javaClientGenerator>

        
        <table tableName="tb_user" domainObjectName="User"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false"/>
    context>
generatorConfiguration>

  1. 在maven的标签中添加plugin插件

            <plugin>
                <groupId>org.mybatis.generatorgroupId>
                <artifactId>mybatis-generator-maven-	pluginartifactId>
                <version>1.3.6version>
                <configuration>
                    
                    <configurationFile>GeneratorMapper.xmlconfigurationFile>
                    <verbose>trueverbose>
                    <overwrite>trueoverwrite>
                configuration>
            plugin>

  1. 刷新pom.xml后,在plugins选项中将会出现mybatis-generator插件
    SpringBoot整合mybatis_第2张图片

  1. 双击高亮的选项,将会生成对应的包和Dao类,XXXmapper.xml映射文件
  2. 生成的mapper.xml文件和dao类的接口在同一个包下,这时候我们会发现编译后的target文件夹没有mapper.xml映射文件,这是因为src/main/java目录下只有.java文件会被编译,我们需要在pom.xml配置文件下的标签下的里面手动指定这个包下的mapper.xml映射文件是资源文件

        <resources>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.xmlinclude>
                includes>
            resource>
        resources>

3. 生成了必要的文件后,我们还不能操作数据库。我们之前使用springmvc整合mybatis时,写了很多的xml配置文件,而springboot摒弃了这一点,只需要在application.yml或者application.yaml或是application.properties中添加一些必要的配置

# 设置链接数据库的配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/databasename?userSSL=false&serverTimezone=GMT&useUnicode=true&characterEncoding=UTF-8
    username: 数据库用户名
    password: ******

遇到过的问题:

  1. 我在UserServiceImpl中使用UserMapper对象的时候,自动注入会爆红,提示无法自动注入,无法找到beanUserMapper,这是因为springboot项目无法找到我们编写的UserMapper接口。
    SpringBoot整合mybatis_第3张图片
    解决办法:只需要在UserMapper接口上写上@Mapper注解,此时springboot项目就会自动扫描Dao包下的bean到spring容器中

    可以看到,此时UserServiceImpl类中的自动注入不再爆红SpringBoot整合mybatis_第4张图片

你可能感兴趣的:(mybatis,spring)