手把手教学基于Maven构建方式使用Mybatis generator自动生成

Posted 来老铁干了这碗代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教学基于Maven构建方式使用Mybatis generator自动生成相关的知识,希望对你有一定的参考价值。

简介

Mybatis generator是一种代码生成器, 可以基于数据库表的字段与类型,自动生成Java代码中对应的entity类、dao类、mapper映射文件。

实现Mybatis generator功能有多种方式,如插件方式、配置文件方式等。 这里采用经过我个人实践并成功的方式来操作。

方式:基于Maven项目构建,XML文件配置的方式。

一. 添加依赖

第一个依赖是mybatis-generator代码生成器的核心依赖

第二个依赖是mysql通过JDBC连接数据库的依赖

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.6</version>
</dependency>

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

添加完依赖后, 记得刷新一下maven项目。 让maven自动下载这两个依赖对应的jar包。

二. 配置generatorConfig.xml

generatorConfig.xml文件主要作用是配置生成文件的路径、位置、以及表名等基本信息。 当然也可以配置如注释定制等信息,这里只做最基础的功能实现。

下面讲解几个重要参数:

  • javaModelGenerator:生成entity类存放位置(也就是POJO类存放位置)
    • targetPackage:类的包名
    • targetProject:项目在计算机中的地址
  • sqlMapGenerator:生成映射文件存放位置(也就是sql语句存放位置)
    • 同上
  • javaClientGenerator:生成Dao类存放位置(也就是dao文件存放位置)
    • 同上
<?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">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://数据库地址"
                        userId="username"
                        password="password">
        </jdbcConnection>
        <!--生成entity类存放位置-->
        <javaModelGenerator targetPackage="包名(com.generator.test.entity)" targetProject="项目地址到\\java (D:\\workspace\\src\\main\\java)">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="包名(com.generator.test.mapper)" targetProject="项目地址到\\java (D:\\workspace\\src\\main\\java)">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--生成Dao类存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="包名(com.generator.test.dao)"
                             targetProject="项目地址到\\java (D:\\workspace\\src\\main\\java)">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <table tableName="表名" domainObjectName="生成实体的类名">
        </table>
    </context>
</generatorConfiguration>

下面贴一段实例(代码的项目地址是Mac系统中的项目地址,与Windows有所不同,Windows重点项目地址形如D:\\workspace\\src\\main\\java):

<?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">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/myDataBase"
                        userId="lab_1941747"
                        password="4546091bded4">
        </jdbcConnection>
        <!--生成entity类存放位置-->
        <javaModelGenerator targetPackage="org.example.beans" targetProject="/Users/zhanglong/IdeaProjects/test1/src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="mybatis" targetProject="/Users/zhanglong/IdeaProjects/test1/src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!--生成Dao类存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="org.example.dao" targetProject="/Users/zhanglong/IdeaProjects/test1/src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <table tableName="students" domainObjectName="Students">
        </table>
    </context>
</generatorConfiguration>

三. 运行

这段代码的大致意思是启动MyBatisGenerator,根据配置文件的方案自动生成代码

package org.example;


import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 运行前提:添加mysql-connector-java依赖
 */
public class test 
    public static void main(String[] args) throws Exception 
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/main/java/org/example/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);

    

四. 运行结果(忽略报错哈,画横线的三个就是生成结果的三个包)

以上是关于手把手教学基于Maven构建方式使用Mybatis generator自动生成的主要内容,如果未能解决你的问题,请参考以下文章

手把手教学基于Maven构建方式使用Mybatis generator自动生成

手把手教学基于Maven构建方式使用Mybatis generator自动生成

Maven从安装到手把手教学进行项目管理

了解JavaWeb开发的技术栈从掌握Tomcat的使用开始,手把手带你用Maven创建web项目

Gitcoin第十轮捐赠空投详细教程,手把手教学

Vue.js 运行环境搭建详解(基于windows的手把手安装教学)及vuenode基础知识普及