mybatis逆向生成实体类xml模板等

1 新建springboot项目(准备工作)

准备工作,适合没有项目但是想练手的小伙伴,如果有项目直接使用可以直接跳到下一部分

要是没有resources目录请查阅【报错】新建springboot项目时缺少resource-CSDN博客我的这篇文章讲解了缺少resources的解决方案

2 mybatis逆向工程生成entity和mapper

2.1在pom.xml加入如下依赖

2.2 application

这边主要就把下面的内容全部复制到application之间,注意改一下端口号和数据库名字,其他就可以了

server:
  port: 8080
spring:
  main:
    allow-circular-references: true
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/wx_shop?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
    username: root
    password: 123456
    hikari:
      max-lifetime: 1000000
  thymeleaf:
    cache: false #关闭缓存
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.entity

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

authority:
  info: '[]'

logging:
  file:
    path: log
    name: log/my.log
  level:
    com:
      example:
        dao: debug

2.3 generator文档如下

位置如下

具体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>
    <!-- context元素用于指定生成一组对象的环境。targetRuntime:此属性用于指定生成的代码的运行时环境。MyBatis3:*这是默认值*-->
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="false" />
            <!-- 阻止注释中包含时间戳 true:是 : false:否 -->
            <property name="suppressDate" value="true" />
            <!--  注释是否包含数据库表的注释信息  true:是 : false:否 -->
            <property name="addRemarkComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/wx_shop?useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=GMT%2b8"
                        userId="root"
                        password="123456">
            <property name="useInformationSchema" value="true"/>
        </jdbcConnection>
        <!-- 如使用oracle请参考如下 -->
        <!-- <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
            userId="test"
            password="test">
        </jdbcConnection> -->

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- targetProject:生成PO类的位置 -->
        <javaModelGenerator targetPackage="com.example.entity"
                            targetProject=".\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="mappers"
                         targetProject=".\src\main\resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.mapper"
                             targetProject=".\src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- 指定数据库表 -->
        <table tableName="user_info" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>
        <table tableName="nx_system_file_info" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>
        <table tableName="goods_info" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>
        <table tableName="type_info" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>
        <table tableName="cat_info" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>
        <table tableName="order_info" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>
        <table tableName="order_goods_rel" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>

        <table tableName="comment_info" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>

        <table tableName="advertiser_info" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
               enableSelectByPrimaryKey="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true"></table>
        <!-- 有些表的字段需要指定java类型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>

需要改动的内容:数据库的名字(第19行),域名(第38和53行),指定数据表是有几个表就几个(我这边是一共九个)

用户信息表:user_info

文件信息表:nx_system_file_info

商品详情表:goods_info

商品类别表:type_info

购物车信息表:cat_info

订单详情表:order_info

订单商品关系映射表:order_goods_rel

商品评价表:comment_info

公告:advertiser_info

2.4 测试类

具体内容如下

package com.example.wxshop;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

@SpringBootTest(classes = GenerateApplicationTests.class)
class GenerateApplicationTests {
    @Test
    void contextLoads() throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //下一行中的是存放generator配置的路径,切记不要写错
        File configFile = new File("src/main/resources/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

如果出现

那就补上这句话

相关推荐
熬夜加班写代码5 小时前
SpringBoot【十】mybatis之xml映射文件>、<=等特殊符号写法!
java·spring boot·后端·spring·程序员·mybatis
mischen5205 小时前
通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, 请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法, 参数不同时,方法能重载吗?
xml·mybatis
pp不会算法^v^5 小时前
Could not transfer artifact javax.xml.bind:jaxb-api:pom:2.3.1
xml·java·开发语言·maven
mischen5208 小时前
Mybatis相关面试题
java·tomcat·mybatis
小马爱打代码8 小时前
SpringBoot + MyBatis 实现号段模式的分布式ID
spring boot·分布式·mybatis
康提扭狗兔10 小时前
mapper.xml传入参数为Map的正确做法
xml
chushiyunen10 小时前
oracle操作xml笔记
xml·笔记·oracle
Tiandaren10 小时前
Python 参数配置使用 XML 文件的教程:轻松管理你的项目配置
xml·开发语言·图像处理·人工智能·python·深度学习
梦幻加菲猫1 天前
XML 在线格式化 - 加菲工具
xml·前端·格式化