欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring boot集成mybatis(3) – mybatis generator 配置 - qikegu.com

程序员文章站 2022-05-03 09:12:40
...

Spring Boot 集成教程

相关推荐

spring boot集成mybatis(3) – mybatis generator 配置


概述

MyBatis Generator是一个代码生成器,可以为mybatis自动生成对应数据库表结构的实体类、mapper接口以及对应mapper.xml,大大减少这些繁琐重复的劳动,很方便。

MyBatis Generator被设计为可以多次运行,生成代码时,java文件一般会被覆盖,xml文件新旧代码会合并。

MyBatis Generator有三种用法:命令行、eclipse插件、maven插件。我们这里介绍最方便的maven插件用法,其他方法大同小异,如需了解可参考相关资料。

准备工作

准备数据

数据会重用之前教程的数据,如无数据请参照教程创建。

Eclipse项目

不创建新项目,重用前2篇教程的项目,没有项目请按前2篇文章创建。

添加依赖

添加mybatis generator插件,在pom.xml的build > plugins下添加依赖

            <plugin>
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-maven-plugin</artifactId>
              <version>1.3.7</version>
              <configuration>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
              </configuration>
              <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.13</version>
                    <scope>runtime</scope>
                </dependency>
              </dependencies>
            </plugin>

复制

pom.xml的完整内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.qikegu</groupId>
    <artifactId>springboot-mybatis-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mybatis-demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.10</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-maven-plugin</artifactId>
              <version>1.3.7</version>
              <configuration>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
              </configuration>
              <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.13</version>
                    <scope>runtime</scope>
                </dependency>
              </dependencies>
            </plugin>

        </plugins>
    </build>

</project>

复制

添加配置

新增generatorConfig.xml文件,此文件是MyBatis Generator的配置文件

spring boot集成mybatis(3) – mybatis generator 配置 - qikegu.com

文件内容如下:

<?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>
    <!--导入配置文件-->
    <properties resource="application.properties"></properties>

    <!-- 一个数据库一个context --> 
    <context id="default">

        <!-- 注释生成设置 --> 
        <commentGenerator>
            <!-- 是否生成注释代时间戳-->  
            <property name="suppressDate" value="true" />
            <!-- 是否取消注释 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!--jdbc的数据库连接-->
        <jdbcConnection driverClass="{spring.datasource.driver-class-name}" connectionURL="{spring.datasource.url}" userId="{spring.datasource.username}" password="{spring.datasource.password}">
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>

        <!-- 类型转换 -->  
        <javaTypeResolver>
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->  
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetPackage:生成的实体类所在的包 -->
        <!-- targetProject:生成的实体类所在的硬盘位置 -->
        <javaModelGenerator targetPackage="com.qikegu.demo.model" targetProject="src/main/java">
            <!-- 是否允许子包 -->
            <property name="enableSubPackages" value="false" />
            <!-- 是否对modal添加构造函数 -->
            <property name="constructorBased" value="true" />
            <!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
            <property name="trimStrings" value="true" />
            <!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 -->
            <property name="immutable" value="false" />
        </javaModelGenerator>

        <!-- targetPackage 和 targetProject:生成的  mapper xml 文件的包和位置 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <!-- 是否在当前路径下新加一层schema,ex:false路径com.qikegu.demo.model, com.qikegu.demo.model.[schemaName] -->  
            <property name="enableSubPackages" value="false" />
            <!-- 是否针对string类型的字段在set的时候进行trim调用 -->  
            <property name="trimStrings" value="true"/> 
        </sqlMapGenerator>

        <!-- targetPackage 和  targetProject:生成的  java interface 文件的包和位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.qikegu.demo.repository" targetProject="src/main/java">
            <!-- 是否在当前路径下新加一层schema,ex:false路径com.qikegu.demo.model, com.qikegu.demo.model.[schemaName] --> 
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- 配置表信息 --> 
        <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample, 是否生成 example类   -->  
        <!-- 不同的表,修改tableName和domainObjectName就可以 -->
        <table tableName="user" domainObjectName="User" enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>

复制

解释:

请参考代码中的注释。

自动生成

删除旧文件

删除下图中的文件,这些文件将由mybatis generator自动生成

spring boot集成mybatis(3) – mybatis generator 配置 - qikegu.com

运行mybatis generator

Eclipse左侧,在项目根目录上点击鼠标右键弹出菜单,选择:run as -> 4.Maven build... ,弹出对话框如下图,注意红圈中的修改,点击run运行:

spring boot集成mybatis(3) – mybatis generator 配置 - qikegu.com

如果没有意外,build完成后,文件已经生成。

修改代码

如果运行一下程序,会报错,原因是userMapper.java中selectUser()接口不存在了。

==注释掉相关代码:==

UserService.java

//    public List<User> listUser(int page, int pageSize);

复制

UserserviceImpl.java

//  @Override
//  public List<User> listUser(int page, int pageSize) {
//        List<User> result = null;
//        try {
//            PageHelper.startPage(page, pageSize); //每页的大小为pageSize,查询第page页的结果
//            PageHelper.orderBy("id ASC "); //进行分页结果的排序
//          result = userMapper.selectUser();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//      return result;
//  }

复制

UserController.java

//    @RequestMapping(value="", method = RequestMethod.GET, produces="application/json")
//    public PageInfo<User> listUser(
//          @RequestParam(value="page", required=false, defaultValue="1") int page,
//          @RequestParam(value="page-size", required=false, defaultValue="5") int pageSize){
//      
//
//        List<User> result = userService.listUser(page, pageSize);
//        // PageInfo包装结果,返回更多分页相关信息
//        PageInfo<User> pi = new PageInfo<User>(result);
//        
//        return pi;
//    }

复制

运行

Eclipse左侧,在项目根目录上点击鼠标右键弹出菜单,选择:run as -> spring boot app运行程序。 打开Postman访问接口,运行结果如下:

spring boot集成mybatis(3) – mybatis generator 配置 - qikegu.com

总结

本文介绍了mybatis generator的使用方法,要点总结如下:

  1. 添加mybatis generator的maven插件依赖
  2. 添加mybatis generator的配置文件:generatorConfig.xml
  3. 运行maven build: mybatis-generator:generate,生成代码

实际开发中,mybatis generator很有用,用起来可以减少很多工作量。

完整代码


Doc navigation

← spring boot集成mybatis(2) - 使用pagehelper实现分页

spring boot 接口返回值封装 →