MyBatis逆向工程生成代码(附源码)

本文介绍如何利用MyBatis逆向工程自动生成代码,包括JAVA POJO类、Mapper.xml和Mapper接口,通过数据库表生成代码,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是逆向工程

MyBatis逆向工程可以方便的从数据库中将表自动映射到JAVA POJO类,并同时生成Mapper.xml和Mapper接口,方便实用。
MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po…)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。

jar包

需要使用逆向工程jar: mybatis-generator-core-1.3.2.jar
mybatis 的jar:mybatis-3.4.5.jar
数据库驱动jar:mysql-connector-java-5.1.7-bin.jar


案例

1)新建java project 为mybatisGenerator

使用逆向工程,我们最好是新建一个Java Project,而不要直接在项目工程中进行,以免自动生成的文件名冲突而造成覆盖。在新建的项目中生成代码,然后拷贝即可。

2)导入jar包

在项目下新建lib,把jar拷贝进去
在这里插入图片描述

build path:
在这里插入图片描述

3)新建一个GerenatorConfig.xml配置文件

新建配置文件,主要配置以下信息:

1、连接数据库,这是必须的,要不然怎么根据数据库的表生成代码呢?
2、指定要生成代码的位置,要生成的代码包括po类,mapper.xml和mapper.java
3、指定数据库中想要生成哪些表

<?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="MybatisGenerator" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释,true是,false否 -->
            <property name="supressAllComments" value="true" />
        </commentGenerator>

        <!-- 数据库连接信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/mybatis"
            userId="root" password="123456">
        </jdbcConnection>

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

        <!-- 生成的po实体类的存放位置 -->
        <javaModelGenerator targetPackage="com.oak.po"
            targetProject=".\src">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 生成的mapper映射文件(XML文件)的存放位置 -->
        <sqlMapGenerator targetPackage="com.oak.mapper" targetProject=".\src">
        	<!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- 生成的mapper接口(JAVA文件)的存放位置 -->
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="com.oak.mapper" targetProject=".\src">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- 指定数据库表 -->
        <table tableName="student" />
        <table tableName="grade" />
      
        <!-- 有些表的字段需要指定java类型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->

    </context>
</generatorConfiguration>

4)新建一个class为MyGenerator.java

此类主要是用来加载配置文件,执行生成代码:

public class MyGenerator {
	 public void generate() throws Exception {
	        List<String> warnings = new ArrayList<String>();
	        boolean overwrite = true;
	        File configFile = new File("GerenatorConfig.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);
	    }

	    public static void main(String[] args) throws Exception {
	        try {
	            MyGenerator myGenerator = new MyGenerator();
	            myGenerator.generate();
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	    }
}
5)执行java类,查看结果

在这里插入图片描述

6)不要忘了刷新项目!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

robona

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值