zoukankan      html  css  js  c++  java
  • 9、SpringBoot整合Mybatis

    步骤

    1. 搭建项目环境
    2. 创建项目
    3. 修改POM文件,添加相关依赖
    4. 配置数据源

    POM文件

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    
    <!--thymeleaf-->
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!--mybatis-->
    <!--由mybatis官方来定义的-->
    <dependency>
       <groupId>org.mybatis.spring.boot</groupId>
       <artifactId>mybatis-spring-boot-starter</artifactId>
       <version>2.1.1</version>
    </dependency>
    <!--数据库驱动-->
    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.38</version>
    </dependency>
    <!--druid数据源-->
    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid</artifactId>
       <version>1.1.12</version>
    </dependency>
    

    配置数据源

    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        username: root
        password: 12345
        url: jdbc:mysql://localhost:3306/test?userUnicode=true&characterEncoding=utf-8&userSSL=false
        type: com.alibaba.druid.pool.DruidDataSource
    

    配置Maven的generator插件

    • 添加generator插件坐标
    • 添加generator配置文件
    • 添加generator配置文件的DTD文件
    • 运行generator插件生成代码

    添加generator插件坐标

    <!--配置Generator插件-->
    <plugin>
       <groupId>org.mybatis.generator</groupId>
       <artifactId>mybatis-generator-maven-plugin</artifactId>
       <version>1.3.5</version>
       <!--给插件注入一个数据库驱动,用于生产数据库对应的资源,接口,映射文件,pojo-->
       <dependencies>
          <!--数据库驱动-->
          <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>5.1.38</version>
          </dependency>
       </dependencies>
       <!--指定配置文件的路径,这个配置文件配置了当前连接数据库的信息,还有把这些生成的内容放在哪个包下,对哪个表生成-->
       <configuration>
          <!--${project.basedir}代表项目的根路径及项目名-->
          <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
       </configuration>
    </plugin>
    

    添加generator配置文件的DTD文件

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE generatorConfiguration SYSTEM "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN">
    

    源码如下

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
            "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    <generatorConfiguration>
        <!--&lt;!&ndash;A.配置mysql驱动路径  &ndash;&gt;-->
        <!--<classPathEntry-->
                <!--location="E:Program Filesapache-maven-3.6.1propmysqlmysql-connector-java5.1.25mysql-connector-java-5.1.25.jar"/>-->
        <!-- B.配置信息 -->
        <context id="my" targetRuntime="MyBatis3">
            <!--1. value="true"去掉注释  ,如果不去掉注释的时候,
                    第二次生成的时候不会再后面追加内容,但是去掉注释的时候,
                    在第二次以后需要生成文件的时候先把它删掉,再生成,
                    否则就会在原来的文件后面追加内容-->
            <commentGenerator>
                <!--是否去除自动生成的注解 true:是 : false :否-->
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <!--2.加载连接数据库信息  -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/test"
                            userId="root"
                            password="12345" />
            <!--默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为Integer
            NUMERIC 类型解析为java.math.BigDecimal-->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
            <!--3.生成POJO模型的包名和位置 -->
            <javaModelGenerator targetPackage="com.example.demo.pojo"
                                targetProject=".srcmainjava">
                <!--targetProject=  指定包所在的位置,只需要到src/man/java  -->
                <!--enableSubPackages:是否让schema作为包的后缀-->
                <property name="enableSubPackages" value="true"/>
                <!--从数据库返回的值被清理前后的空格-->
                <property name="trimStrings" value="true"/>
                <!--如果包不存在,创建一个  -->
            </javaModelGenerator>
            <!--4.生成映射文件包名和位置 mapper接口生成的位置 -->
            <sqlMapGenerator targetPackage="com.example.demo.mapper"
                             targetProject=".srcmainjava"><!-- 指定包的位置 -->
                <property name="enableSubPackages" value="true"/><!--如果包不存在创建一个  -->
            </sqlMapGenerator>
            <!--5.生成dao层的包和位置  -->
            <javaClientGenerator targetPackage="com.example.demo.mapper" type="XMLMAPPER"
                                 targetProject=".srcmainjava">
                <!--enableSubPackages:是否让schema作为包的后缀-->
                <property name="enableSubPackages" value="false"/>
            </javaClientGenerator>
            <!--6. 我要生成的表  可以一次性生成多张表 tableName是表名   domainObjectName是实体名 -->
            <!--<table tableName="t_user" domainObjectName="User"-->
                   <!--enableCountByExample="false" enableUpdateByExample="false"-->
                   <!--enableDeleteByExample="false" enableSelectByExample="false"-->
                   <!--enableInsert="false"/>-->
            <!--指定数据库表-->
            <table schema="" tableName="users"></table>
        </context>
    </generatorConfiguration>
    

    修改方法如下参考

    修改好后点击Maven Project
    选择对应的项目然后点击Plugins→mybatis-generator→mybatis→双击generator:generate,就会生成对应的文件夹即文件

    图下标注红框的皆为自动生成

    配置资源拷贝插件

    1. 添加资源拷贝插件坐标
    2. 修改启动类添加@MapperScan注解

    在项目打包的过程中,maven只会将resources目录下的xml打包进目录里,而mybatis生成映射文件也是xml文件,但是却不在resources目录下,如果将项目打包是不会将该文件一同打包进去的。
    如图

    如果mybatis的映射配置文件没有放入打包的jar包当中,项目运行时是找不到这个文件,就无法跟接口进行绑定;
    接口指的是这个:

    所以需要配置一个资源拷贝插件
    配置如下:
    在POM文件中配置

    <!--配置资源拷贝插件-->
    <resources>
       <!--一个<resource>表示一个资源拷贝的位置-->
       <resource>
          <!--表示去src/main/java目录下拷贝所有子包(**)下的所有(*)xml后缀(.xml)的文件-->
          <directory>src/main/java</directory>
          <includes>
             <include>**/*.xml</include>
          </includes>
       </resource>
       <!--一旦自定义配置了resources标签进行资源拷贝,springboot的默认资源拷贝配置(resources)将会被覆盖,
       所有需要重复配置-->
       <resource>
          <directory>src/main/resources</directory>
          <includes>
             <include>**/*.yml</include>
             <include>**/*.properties</include>
             <include>**/*.xml</include>
          </includes>
       </resource>
    </resources>
    

    修改启动类添加@MapperScan注解

    @SpringBootApplication
    @MapperScan("com.example.demo.mapper")//指定扫描接口与映射配置文件的包名
    public class DemoApplication {
    
       public static void main(String[] args) {
          SpringApplication.run(DemoApplication.class, args);
       }
    }
    

    Mybatis的其他配置项

    映射配置文件是可以放到resources目录下的;当映射配置文件没有放到mapper中,而是放到resources时需要使用该配置,该配置就会去resources目录下找mapper目录下的所有xml文件做一个扫描

    #扫描classpath目录下的映射配置文件,针对于映射配置文件放到了resources目录下
    mybatis:
      mapper-locations: classpath:/mapper/*.xml
    

    实体类起别名配置,作用于resulttype

      type-aliases-package: com.example.demo.pojo
    
  • 相关阅读:
    poj2352树状数组解决偏序问题
    Python中的输入(input)和输出打印
    Python中的输入(input)和输出打印
    IP协议
    IP协议
    Python中的可迭代Iterable和迭代器Iterator
    Python中的可迭代Iterable和迭代器Iterator
    Python中的变量和数据类型
    Python中的变量和数据类型
    TCP的三次握手和四次挥手和UDP协议
  • 原文地址:https://www.cnblogs.com/Ryuichi/p/13451031.html
Copyright © 2011-2022 走看看