首页 > 其他分享 >轻松上手MyBatis反向工程:从零到一的自动化代码生成

轻松上手MyBatis反向工程:从零到一的自动化代码生成

时间:2024-09-28 16:54:16浏览次数:7  
标签:代码生成 generator mysql 零到 MyBatis 反向 import mybatis org

前言

反向工程概念:

  • 反向工程是从已有的具体实现(如数据库表结构)中推导出高层次的信息(如Java代码)的过程。在MyBatis中,它特指根据数据库表结构自动生成Java实体类、Mapper接口和XML映射文件。

原理:

  • MyBatis反向工程通过读取数据库表结构的元数据(如表名、字段名、字段类型等),然后利用模板引擎(如Velocity)和预定义的模板来生成对应的Java代码和配置文件。

简而言之,反向工程就是根据已有的数据库表来自动生成对应的项目结构,如mapper,dao和实体类等内容。

 简单的反向工程实现步骤

1、配置依赖

创建一个maven项目,导入相关依赖(一个是mysql依赖一个是mybatis自动生成的依赖)

mysql的依赖版本要参照自己本地的mysql版本

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>fanxianggongcheng_demo1</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>fanxianggongcheng_demo1 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
      <!--mysql驱动包-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.21</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
      <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.5</version>
      </dependency>

  </dependencies>
  <build>
    <finalName>fanxianggongcheng_demo1</finalName>
  </build>
</project>

2、创建配置文件 

在项目的目录下创建MyBatis Generator的配置文件(如generatorConfig.xml),配置数据库连接信息、生成代码的包路径、表信息等。

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>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--数据库链接URL,用户名、密码 -->
        <jdbcConnection
                driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/csx_demo?serverTimezone=Asia/Shanghai&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull" userId="root" password="root">
        </jdbcConnection>


        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>


        <!-- 设置Java类生成的位置 -->
        <javaModelGenerator targetPackage="com.model" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="com.dao" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="mapper" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>


        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
        <table tableName="t_user"></table>

    </context>
</generatorConfiguration>

 3、创建反向工程的启动器类

MGB

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;

public class MBG {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("generatorConfig.xml");//直接放在文件下面,与pom.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);
    }
}

4、生成之后的项目结构 

总结

这里演示的是一个简单的Mybatis反向工程实例,如果想要自定义生成的模版,可以自行搜索网上配置,来修改反向工程的配置文件即可。

标签:代码生成,generator,mysql,零到,MyBatis,反向,import,mybatis,org
From: https://blog.csdn.net/weixin_52937170/article/details/142528181

相关文章

  • 16 Midjourney从零到商用·实战篇:产品工业设计
    未来的产品设计师,一定真的不能只会画图,要往多元化发展,要有更强的思维能力综合的判断能力,懂市场,懂加工,懂生产等,变成综合类人才。基础的设计工作部分已经被AI所取代,生产力在一次迎来新的飞跃。未来企业和社会缺少的可能是真的可以从整个战略出发思考问题,并能对整个产品的生命......
  • 深入剖析 MyBatis-Plus:操作总结、对比与实践案例(CRUD 操作、分页、条件构造器、自动填
    MyBatis-Plus是MyBatis的增强工具,它极大简化了MyBatis的配置和操作,提高了开发效率。本文从基本操作到高阶用法,详细介绍了MyBatis-Plus的常见功能及与MyBatis的区别,并通过实际案例展示其强大的扩展能力。MyBatis-Plus基于MyBatis,但旨在减少开发者的代码量,增强可......
  • Mybatis详细教程 (万字详解)
    Mybatis3.5.14来自于B站‘天气预报’,一名宝藏up,跟着他可以培养起独立解决编程问题的能力!!!01.简介1.1官网官方中文网:MyBatis中文网中文网参考手册1.2概念MyBatis是一款优秀的持久层框架,支持自定义SQL,存储过程,高级映射官方解释必要前置技术Mys......
  • 代码生成器实践总结
    最近,又用我的脚本管理,写了一个代码生成器。用在一个.netcoreWeb MVC项目中,想要把原来的一些Area,拷贝替换表名。业务上来说是:把推广模块,单独复制出一个推广-外部渠道的模块。专门给公司外部的推广人员用,但是不影响原来的功能。本质结构代码生成器= 模板+ 替换结论先......
  • 【2024计算机毕业设计】基于jsp+mysql+Spring+mybatis的SSM汽车维修预约平台
    运行环境:最好是javajdk1.8,我在这个平台上运行的。其他版本理论上也可以。IDE环境:Eclipse,Myeclipse,IDEA或者SpringToolSuite都可以,如果编译器的版本太低,需要升级下编译器,不要弄太低的版本tomcat服务器环境:Tomcat7.x,8.x,9.x版本均可操作系统环境:WindowsXP/7......
  • MyBatis 动态语句
    一、if和where语句<!--List<Employee>selectEmployeeByCondition(Employeeemployee);--><selectid="selectEmployeeByCondition"resultType="employee">selectemp_id,emp_name,emp_salaryfromt_emp<!--where标签会......
  • MyBatis框架02
    一、Mybatis完成CURD1.1CURD的R1.1.1CRUD的R11)在Mapper接口里添加findAll方法publicinterfaceEmployeeMapper{List<Employee>findAll();}2)在SQL映射文件中添加对应的配置<selectid="findAll"resultType="student">select*fromemp</selec......
  • 【2024计算机毕业设计】基于jsp+mysql+Spring+mybatis的SSM在线装潢家装材料进销存管
    运行环境:最好是javajdk1.8,我在这个平台上运行的。其他版本理论上也可以。IDE环境:Eclipse,Myeclipse,IDEA或者SpringToolSuite都可以,如果编译器的版本太低,需要升级下编译器,不要弄太低的版本tomcat服务器环境:Tomcat7.x,8.x,9.x版本均可操作系统环境:WindowsXP/7......
  • 【Java】【SpringBoot】SpringBoot整合MybatisPlus(快速入门)
    较早之前,写了SpringBoot整合Mybatis:https://www.cnblogs.com/luyj00436/p/16701894.html。这个数据库的链接有过时。Mybatisplus是mybatis的增强工具。对比Mybatis功能强大、易于使用。对于复杂业务,需要连接多张表单,Mybatisplus不够灵活,隐藏了代码,也不能更好地调试;对于简单业务......
  • 【Java】【Idea】MyBatisPlusX 的使用
    1.安装MybatisPlusX插件 2.连接数据库 3.右击,选择“MybatisX-Generator”。 4.生成设置。  ......