是什么让我节省了60%的编码时间?在SpringBoot中使用MyBatisGenerator

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 业务需求不断变更,数据库表结构不断修改,是我们逃不出的宿命。工欲善其事,必先利其器,是时候祭出神器了:MyBatis Generator(简称:MBG),它是一个用于所有版本MyBatis的代码自动生成器。它可以根据数据库的表自动为项目生产对应的实体类、Mapper、DAO,包括简单CRUD数据库操作(创建、查询、更新、删除)。解放了我们的双手,不必做重复性的机械工作。节省下不少时间,不用再苦哈哈的加班了,还可以和妹纸去约会。(前提是你得先有个妹纸🤐)

MyBatis Generator简介

业务需求不断变更,数据库表结构不断修改,是我们逃不出的宿命。工欲善其事,必先利其器,是时候祭出神器了:MyBatis Generator(简称:MBG),它是一个用于所有版本MyBatis的代码自动生成器。它可以根据数据库的表自动为项目生产对应的实体类、Mapper、DAO,包括简单CRUD数据库操作(创建、查询、更新、删除)。解放了我们的双手,不必做重复性的机械工作。节省下不少时间,不用再苦哈哈的加班了,还可以和妹纸去约会。(前提是你得先有个妹纸🤐)

创建一个MySQL表

为了方便演示创建一个MySQL表,表结构比较简单,是一个用户信息表:

CREATE TABLE `user_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建一个SpringBoot项目

以使用IntelliJ IDEA为例,创建一个SpringBoot项目。点击File->New->Projects...,选择Spring Initializr,如下图:

点击Next,输入GroupArtifact等信息,如下图:

点击Next,选择Web,并勾选Spring Web,如下图:

点击Next,输入Project nameProject location等信息,如下图:

最后,点击Finish,一个SpringBoot项目就创建完了。

引入MyBatis Generator的Maven插件

在pom.xml的plugins节点中添加如下内容:

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.4.0</version>
    <configuration>
        <overwrite>true</overwrite>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
    </dependencies>
</plugin>

配置MyBatis Generator的Maven插件

在resources文件夹中创建一个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="application.properties"></properties>
    <!--defaultModelType用于指定生成对象的样式,flat表示每一张表只生成一个实体类,这个实体类包含表中的所有字段。-->
    <context id="MySQLTables" targetRuntime="MyBatis3" defaultModelType="flat">
        <property name="javaFileEncoding" value="UTF-8"/>

        <!-- 生成的实体类实现序列化接口 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>

        <commentGenerator>
            <property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"/>
        </commentGenerator>

        <!--数据库连接信息-->
        <jdbcConnection driverClass="${spring.datasource.driverClassName}"
                        connectionURL="${spring.datasource.url}"
                        userId="${spring.datasource.username}"
                        password="${spring.datasource.password}">
        </jdbcConnection>

        <!-- 配置生成的实体类位置 -->
        <javaModelGenerator targetPackage="one.more.mybatisgenerator.model" targetProject="src/main/java">
            <!-- 设置是否在setter方法中,对String类型字段调用trim()方法 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 配置接口位置 -->
        <!-- type设置为ANNOTATEDMAPPER,基于注解的Mapper,不会有对应的xml文件生成-->
        <javaClientGenerator targetPackage="one.more.mybatisgenerator.mapper" targetProject="src/main/java"
                             type="ANNOTATEDMAPPER">
        </javaClientGenerator>

        <!-- 配置数据库表 -->
        <table tableName="user_info">
            <!--在生成的insert元素上添加useGeneratedKeys=”true”和keyProperty属性-->
            <generatedKey column="id" sqlStatement="JDBC"/>
        </table>
    </context>
</generatorConfiguration>

以上就是最基础简介的配置了,在实际的开发过程中就够用。如果有小伙伴还有需要更多的配置功能,可以官方网站(https://mybatis.org/generator/configreference/xmlconfig.html)查看。

自动生成代码

下面就是最激动人心的时刻了,一键自动生成代码。在Maven插件工具栏中,可以看到mybatis-generator插件,双击其中的generate选项即可,如下图:


构建成功以后,就可以看到生成的代码了,如下图:

验证自动生成的代码

验证之前还有一个步骤不要漏掉,就是在启动类上加上MapperScan注解,比如:

@SpringBootApplication
@MapperScan("one.more.mybatisgenerator.mapper")
public class MybatisGeneratorDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisGeneratorDemoApplication.class, args);
    }

}

新增数据

随机生成一个UserInfo示例,插入到数据库中:

    public UserInfo add() {
        Random random = new Random(System.currentTimeMillis());
        UserInfo userInfo = new UserInfo();
        userInfo.setName("name" + random.nextInt(100));
        userInfo.setAge(random.nextInt(100));
        userInfo.setCreateTime(new Date());
        
        int rows = userInfoMapper.insert(userInfo);
        System.out.println("rows:" + rows);
        return userInfo;
    }

查询数据

查询数据库里age大于某个值的user_info数据:

    public List<UserInfo> getGreaterThan(Integer age) {
        UserInfoExample example = new UserInfoExample();
        Criteria criteria = example.createCriteria();
        criteria.andAgeGreaterThan(age);
        return userInfoMapper.selectByExample(example);
    }

完整的示例源码

完整的示例源码可以去https://github.com/heihaozi/mybatis-generator-demo下载。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
SQL Java 数据库连接
第十四篇:SpringBoot2.x整合MyBatisGenerator
在这里简单介绍一下如何整合Mybatis自动生成代码的插件MybatisGenerator 引入插件 需要在pom.xml文件中的中加入以下设置 org.
967 0
|
17天前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。
|
9天前
|
JavaScript 安全 Java
基于springboot的宠物领养系统
本系统基于Spring Boot、Java、Vue与MySQL技术,构建高效、安全的宠物领养平台,实现信息集中管理、智能匹配与数据保护,提升领养效率,推动“以领养代替购买”的文明理念。
|
19天前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
18天前
|
JavaScript Java 关系型数据库
基于springboot的古树名木保护管理系统
本研究针对古树保护面临的严峻挑战,构建基于Java、Vue、MySQL与Spring Boot技术的信息化管理系统,实现古树资源的动态监测、数据管理与科学保护,推动生态、文化与经济可持续发展。
|
10天前
|
监控 安全 JavaScript
2025基于springboot的校车预定全流程管理系统
针对传统校车管理效率低、信息不透明等问题,本研究设计并实现了一套校车预定全流程管理系统。系统采用Spring Boot、Java、Vue和MySQL等技术,实现校车信息管理、在线预定、实时监控等功能,提升学校管理效率,保障学生出行安全,推动教育信息化发展。
|
25天前
|
人工智能 Java 关系型数据库
基于springboot的画品交流系统
本项目构建基于Java+Vue+SpringBoot+MySQL的画品交流系统,旨在解决传统艺术交易信息不透明、流通受限等问题,融合区块链与AI技术,实现画品展示、交易、鉴赏与社交一体化,推动艺术数字化转型与文化传播。
|
11天前
|
JavaScript Java 关系型数据库
基于springboot的高校运动会系统
本系统基于Spring Boot、Vue与MySQL,实现高校运动会报名、赛程安排及成绩管理的全流程信息化,提升组织效率,杜绝信息错漏与冒名顶替,推动体育赛事智能化发展。
|
7天前
|
JavaScript 安全 Java
基于springboot的大学生兼职系统
本课题针对大学生兼职信息不对称、权益难保障等问题,研究基于Spring Boot、Vue、MySQL等技术的兼职系统,旨在构建安全、高效、功能完善的平台,提升大学生就业竞争力与兼职质量。
|
11天前
|
JavaScript Java 关系型数据库
基于springboot的美食城服务管理系统
本系统基于Spring Boot、Java、Vue和MySQL技术,构建集消费者服务、商家管理与后台监管于一体的美食城综合管理平台,提升运营效率与用户体验。

热门文章

最新文章