SpringBoot 集成 Mybatis 8.x 配置Generator.xml

SpringBoot 集成 Mybatis 8.x 配置Generator.xml

照着这个配置,不成功拿板砖拍我!!!

注意 我用的是 mysql 8.0 ,是和mysql5.x 不一样的配置,而且版本注意版本要统一
比如我之前用了generator的1.4.0 结果就报错,换成1.3.7才可以

1.创建SpringBoo项目,编写pom文件

项目结构如下
在这里插入图片描述

勾选mybatis、web、lombok、mysql等等插件
项目pom如下

<?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 https://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.5.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jzj.thymeleaf</groupId>
    <artifactId>firstweb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>firstweb</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-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!--        Mysql 配置-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--Mybatis 配置-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!-- tk-mybatis 及分页插件-->
        <!--mybatis tk框架-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>1.2.4</version>
        </dependency>
        <!---分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!--        lombok 配置-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <!--Mybatis generator 映射文件自动生成-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <!--版本号一定要写,否则嘿嘿,之前1.4.0也会报错-->
                <version>1.3.7</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                    <!--Mybatis generator 配置文件 generatorCongig.xml 的路径-->
                    <configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>3.5.3</version>
                    </dependency>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.25</version>
                    </dependency>
                </dependencies>


            </plugin>


            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2.创建generator

我的配置文件用的yml
所以我单独创建了一个db.properties来导入 db的基本配置如url、name、password等

在resources下新建 generotor文件夹
generotor文件夹中新建db.properties

spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver

generotor文件夹中新建 generatorConfig.xml

<?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="generator/db.properties"/>

    <context defaultModelType="flat" id="mysql" targetRuntime="MyBatis3Simple">
        <!-- 生成的Java文件的编码 -->
        <property name="javaFileEncoding" value="UTF-8"/>


        <!-- 生成根Mapper 所有的Mappwe都 继承这个 根   -->
        <!-- 这个地方 注意一下 , 和你配置的 Application上面 MapperScan 的 mapper包扫描 不要再一个文件夹下,
        比如我的 我的包扫描是 @MapperScan("com.jzj.tkdemo.dao") 这个地方是 其他的包
        总而言之就是  BaseMapper 不要放在Mapper的 包扫描中, 具体原因看 下面介绍
        -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="com.jzj.thymeleaf.firstweb.repository.base.BaseMapper"/>
        </plugin>


        <jdbcConnection
                driverClass="${spring.datasource.driver-class-name}"
                connectionURL="${spring.datasource.url}"
                userId="${spring.datasource.username}"
                password="${spring.datasource.password}">
        </jdbcConnection>

        <!-- 生成的数据库实体 PO 所在位置 -->
        <javaModelGenerator targetPackage="com.jzj.thymeleaf.firstweb.bean.po"
                            targetProject="src/main/java">
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- MAPPER XML java 文件所在位置-->
        <sqlMapGenerator targetPackage="mapping"
                         targetProject="src/main/resources">
        </sqlMapGenerator>

        <!-- Mapper.java 所在的文件夹,也就是mapper接口 文件夹
            1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
            2,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
            3.这个包是 com.jzj.tkdemo.dao  不要把上面的BaseMapper 放在下面 切记切记
        -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.jzj.thymeleaf.firstweb.repository.mapper"
                             targetProject="src/main/java">
        </javaClientGenerator>


        <!-- user 是数据库表, UserPO 是你根据报表 要生成的 实体类-->
        <table schema="" tableName="order" domainObjectName="OrderPO">
            <generatedKey column="ID" sqlStatement="MySql" identity="true"/>
        </table>

    </context>
</generatorConfiguration>

3.修改application.yml配置文件

修改 application.yml

server:
  port: 8088
spring:
  application:
    name: firstweb

  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
#mybatis存放位置
mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: com.jzj.thymeleaf.firstweb.bean.po
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    com:
      jzj:
      firstweb:
        repository:
          mapper: debug

4.新建BaseMapper 父类

所有的Mapper都集成BaseMapper.java

package com.jzj.thymeleaf.firstweb.repository.base;


import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 * <tk通用mapper>.
 *
 * @author jiazijie
 * @date 2020/02/04
 * @since
 */
public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

5.新建测试Controller
package com.jzj.thymeleaf.firstweb.controller;

import com.jzj.thymeleaf.firstweb.bean.po.OrderPO;
import com.jzj.thymeleaf.firstweb.repository.mapper.OrderPOMapper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.expression.Lists;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class DbTestController {

    @Resource
    private OrderPOMapper orderMapper;

    @GetMapping(value = "order")
    public List<OrderPO> queryOrder(){
         return orderMapper.selectAll();
    }

}

6.用Maven plugin 生成generator

在数据库中新建表结构 order

CREATE TABLE `order`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `order_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `order_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `pay` int NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

注意我要生成的是order表,生成的实体是OrderPO结构,运行Maven的generator插件
在这里插入图片描述
自动生成OrderPOMapper.xml 、OrderPOMapper、OrderPO 等结构
在这里插入图片描述

7.启动Springboot

启动Springboot项目
在这里插入图片描述

访问 controller中的接口,成功查询出数据

E:\myworkspace\distribute\firstweb>curl 127.0.0.1:8088/order
[{"id":1,"orderName":"111","orderType":"food","pay":100},{"id":2,"orderName":"111","orderType":"food","pay":100},{"id":3,"orderName":"111","orderType":"food","pay":100},{"id":4,"orderName":"aaa","orderType":"food","pay":100},{"id":5,"orderName":"
bbb","orderType":"food","pay":100}]

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值