为了账号安全,请及时绑定邮箱和手机立即绑定

Mybatis代码生成器资料:新手入门教程

概述

Mybatis代码生成器是一种工具,用于自动生成与数据库表相对应的Java对象和Mapper接口等代码,以提高开发效率和代码一致性。通过配置文件和相关工具,开发者可以快速生成高质量的代码,减少手动编码的工作量。本文详细介绍了Mybatis代码生成器的使用方法、应用场景和配置步骤,提供了丰富的示例和实战案例,帮助读者更好地理解和应用Mybatis代码生成器。

Mybatis代码生成器简介

Mybatis代码生成器是一种工具,用于自动生成与数据库表相对应的Java对象和Mapper接口等代码。通过使用代码生成器,开发者可以大大减少手动编写这些代码的工作量,提高开发效率和代码一致性。此外,代码生成器能确保生成的代码符合团队的编码规范,减少因人为错误导致的问题。

Mybatis代码生成器的作用和优势
  1. 减少重复劳动:手动编写与数据库表对应的Java对象和Mapper接口代码是一项繁琐且重复的工作。使用代码生成器,可以快速生成这些代码,避免重复劳动。
  2. 提高开发效率:代码生成器能够自动处理数据库表到Java对象之间的映射关系,使得开发人员可以将更多的时间和精力投入到业务逻辑的实现上。
  3. 保证代码一致性:通过代码生成器可以确保生成的代码遵循统一的编码规范,减少由于不同开发人员风格差异导致的代码混乱。
  4. 提升维护性:自动生成的代码结构清晰,易于理解和维护。当数据库表结构发生变化时,通过更新配置文件并重新生成代码即可完成维护工作。
代码生成器在项目中的应用场景

在实际项目开发过程中,使用Mybatis代码生成器可以显著提高项目的开发效率和质量。以下是一些常见的应用场景:

  1. 新项目开发:对于新项目,可以直接使用代码生成器生成基础的Java对象和Mapper接口代码,然后在此基础上进行业务逻辑的实现。
  2. 旧项目重构:对于已经存在的项目,如果现有的代码不符合新的编码规范或者需要重构,可以利用代码生成器生成新的代码,然后替换旧的代码。
  3. 维护现有项目:当数据库表结构发生变化时,可以使用代码生成器生成新的代码,然后更新旧的代码。这样可以保证代码的一致性和可维护性。
  4. 快速原型开发:在进行快速原型开发时,可以使用代码生成器快速生成基础代码,然后在此基础上进行功能的实现。
  5. 提高团队协作效率:在团队开发中,使用代码生成器可以保证生成的代码标准统一,避免因编码风格差异导致的冲突。
准备工作
环境搭建及所需工具介绍

为了使用Mybatis代码生成器,首先需要搭建好开发环境并安装必要的工具。以下是所需环境和工具的介绍:

开发环境

  • Java环境:确保已安装Java开发环境,建议使用JDK 8及以上版本。
  • IDE工具:推荐使用 IntelliJ IDEA 或 Eclipse ,以方便进行代码编写和调试。
  • 数据库:选择适合的数据库,如 MySQL、Oracle、SQL Server 等。
  • Mybatis:确保已安装Mybatis框架,建议版本为3.4.6及以上。
  • Mybatis Generator插件:集成Mybatis Generator插件到项目中。

工具介绍

  • Mybatis Generator:Mybatis Generator 是一个开源的代码生成器,专门用于生成Mybatis使用的Java对象(POJO)、Mapper接口以及XML映射文件。
  • Maven/Gradle:建议使用 Maven 或 Gradle 管理依赖和构建项目。
下载和配置Mybatis代码生成器插件
  1. 添加Maven依赖:在项目的 pom.xml 文件中添加 Mybatis Generator 的依赖。
    <dependencies>
       <dependency>
           <groupId>org.mybatis.generator</groupId>
           <artifactId>mybatis-generator-core</artifactId>
           <version>1.3.5</version>
       </dependency>
       <!-- 其他依赖项 -->
    </dependencies>
  2. 配置Mybatis Generator:创建一个配置文件,如 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.dtd">
    <generatorConfiguration>
       <context id="DB2Tables" targetRuntime="MyBatis3">
           <commentGenerator>
               <property name="suppressAllComments" value="true"/>
           </commentGenerator>
           <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                           connectionURL="jdbc:mysql://localhost:3306/testDB"
                           userId="root"
                           password="password">
           </jdbcConnection>
           <javaModelGenerator targetPackage="com.example.model"
                               targetProject="src/main/java"/>
           <sqlMapGenerator targetPackage="com.example.mapper"
                            targetProject="src/main/resources"/>
           <javaClientGenerator type="ANNOTATEDMAPPER"
                                targetPackage="com.example.mapper"
                                targetProject="src/main/java"/>
           <table tableName="user" domainObjectName="User" enableCounting="true">
               <generatedKey column="id" identity="true" />
               <columnOverride column="name" property="userName" />
           </table>
           <table tableName="order" domainObjectName="Order" enableCounting="true">
               <generatedKey column="id" identity="true" />
               <columnOverride column="userId" property="user_id" />
           </table>
       </context>
    </generatorConfiguration>
快速上手使用Mybatis代码生成器
配置数据库连接信息

配置数据库连接信息是使用Mybatis代码生成器的前提条件。在 generatorConfig.xml 文件中配置数据库的连接信息,确保能够让代码生成器正确地连接到数据库。

示例

<jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/testDB"
                userId="root"
                password="password">
</jdbcConnection>
编写代码生成器配置文件

编写代码生成器配置文件 generatorConfig.xml 是使用Mybatis代码生成器的关键步骤。在这个配置文件中,需要指定生成的代码的目标包名、生成的文件的位置等信息。

示例

<generatorConfiguration>
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/testDB"
                        userId="root"
                        password="password">
        </jdbcConnection>
        <javaModelGenerator targetPackage="com.example.model"
                            targetProject="src/main/java"/>
        <sqlMapGenerator targetPackage="com.example.mapper"
                         targetProject="src/main/resources"/>
        <javaClientGenerator type="ANNOTATEDMAPPER"
                             targetPackage="com.example.mapper"
                             targetProject="src/main/java"/>
        <table tableName="user" domainObjectName="User" enableCounting="true">
            <generatedKey column="id" identity="true" />
            <columnOverride column="name" property="userName" />
        </table>
        <table tableName="order" domainObjectName="Order" enableCounting="true">
            <generatedKey column="id" identity="true" />
            <columnOverride column="userId" property="user_id" />
        </table>
    </context>
</generatorConfiguration>
生成代码详解
生成的代码结构介绍

使用Mybatis代码生成器生成的代码通常包括以下几部分:

  1. Java对象(POJO):每个表对应一个Java对象(POJO),通常位于 src/main/java 目录下。

    package com.example.model;
    
    public class User {
       private Integer id;
       private String userName;
       private String email;
       // getters and setters
    }
  2. Mapper接口:每个表对应一个Mapper接口,通常位于 src/main/java 目录下。

    package com.example.mapper;
    
    import com.example.model.User;
    
    public interface UserMapper {
       User selectUserById(Integer id);
       int insertUser(User user);
       int updateUser(User user);
       int deleteUserById(Integer id);
    }
  3. XML映射文件:每个Mapper接口有一个对应的XML映射文件,通常位于 src/main/resources 目录下。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.example.mapper.UserMapper">
       <select id="selectUserById" resultType="com.example.model.User">
           SELECT * FROM user WHERE id = #{id}
       </select>
       <insert id="insertUser">
           INSERT INTO user (name, email) VALUES (#{userName}, #{email})
       </insert>
       <update id="updateUser">
           UPDATE user SET name = #{userName}, email = #{email} WHERE id = #{id}
       </update>
       <delete id="deleteUserById">
           DELETE FROM user WHERE id = #{id}
       </delete>
    </mapper>
代码生成器的常用参数解析

配置文件中的常用参数

  1. targetPackage:生成的Java对象和Mapper接口的包名。
  2. targetProject:生成的Java对象和Mapper接口的位置。
  3. driverClass:数据库驱动类名。
  4. connectionURL:数据库连接URL。
  5. userIdpassword:数据库的用户名和密码。
  6. tableName:指定要生成代码的数据库表名。
  7. domainObjectName:生成的Java对象的名字。
  8. generatedKey:指定主键生成策略。
  9. columnOverride:指定列名和属性名的映射关系。

示例

<javaModelGenerator targetPackage="com.example.model"
                     targetProject="src/main/java"/>

<sqlMapGenerator targetPackage="com.example.mapper"
                 targetProject="src/main/resources"/>

<javaClientGenerator type="ANNOTATEDMAPPER"
                      targetPackage="com.example.mapper"
                      targetProject="src/main/java"/>

<table tableName="user" domainObjectName="User" enableCounting="true">
    <generatedKey column="id" identity="true" />
    <columnOverride column="name" property="userName" />
</table>
常见问题与解决方法
生成代码时遇到的问题及解决方案
  1. 生成的代码格式不规范

    • 解决方法:在 generatorConfig.xml 文件中设置 <property name="suppressAllComments" value="true"/> 来关闭注释生成,或者调整其他配置选项以符合代码规范。
      <commentGenerator>
      <property name="suppressAllComments" value="true"/>
      </commentGenerator>
  2. 生成的代码中出现了错误

    • 解决方法:检查数据库连接信息是否正确,确保数据库表名和字段名与配置文件中的设置一致。
  3. 生成的代码不全或格式不对
    • 解决方法:确保配置文件中的 <table> 标签设置正确,包括表名、字段名等信息。
代码生成器插件的使用技巧
  1. 生成代码前先备份数据库:在生成代码前,建议先备份数据库,以防生成代码过程中遇到错误导致数据库数据丢失。
  2. 定期更新配置文件:当数据库表结构发生变化时,应及时更新配置文件,并重新生成代码。
  3. 灵活设置生成的代码位置:在 generatorConfig.xml 中可以灵活设置生成的Java对象和Mapper接口的位置,以符合项目结构。
  4. 利用注释自动生成文档:可以在 generatorConfig.xml 中启用注释生成,让生成的代码包含更多注释信息,方便后续的维护和理解。
实战示例
使用Mybatis代码生成器生成一个简单的项目

步骤一:环境准备

  1. 搭建开发环境

    • 确保已安装Java环境。
    • 下载并安装 IntelliJ IDEA 或 Eclipse 等IDE。
    • 安装数据库,如 MySQL。
    • 创建一个 Maven 项目。
  2. 添加Mybatis及相关依赖
    • 在项目的 pom.xml 文件中添加 Mybatis 和 Mybatis Generator 的依赖。
      <dependencies>
      <dependency>
         <groupId>org.mybatis.generator</groupId>
         <artifactId>mybatis-generator-core</artifactId>
         <version>1.3.5</version>
      </dependency>
      <!-- 其他依赖项 -->
      </dependencies>

步骤二:编写配置文件

  1. 创建 generatorConfig.xml 文件
    • 确保数据库连接信息正确。
    • 设置生成的Java对象、Mapper接口和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.dtd">
      <generatorConfiguration>
      <context id="DB2Tables" targetRuntime="MyBatis3">
         <commentGenerator>
             <property name="suppressAllComments" value="true"/>
         </commentGenerator>
         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                         connectionURL="jdbc:mysql://localhost:3306/testDB"
                         userId="root"
                         password="password">
         </jdbcConnection>
         <javaModelGenerator targetPackage="com.example.model"
                             targetProject="src/main/java"/>
         <sqlMapGenerator targetPackage="com.example.mapper"
                          targetProject="src/main/resources"/>
         <javaClientGenerator type="ANNOTATEDMAPPER"
                              targetPackage="com.example.mapper"
                              targetProject="src/main/java"/>
         <table tableName="user" domainObjectName="User" enableCounting="true">
             <generatedKey column="id" identity="true" />
             <columnOverride column="name" property="userName" />
         </table>
         <table tableName="order" domainObjectName="Order" enableCounting="true">
             <generatedKey column="id" identity="true" />
             <columnOverride column="userId" property="user_id" />
         </table>
      </context>
      </generatorConfiguration>

步骤三:运行代码生成器

  1. 运行生成器
    • 在IDE中运行生成器命令,或者通过 Maven 插件运行生成器。
    • 使用 Maven 插件运行生成器:
      mvn mybatis-generator:generate

步骤四:查看生成的代码

  1. 检查生成的Java对象

    • 查看生成的Java对象文件,如 User.java,确保所有字段和方法都正确生成。
      
      package com.example.model;

    public class User {
    private Integer id;
    private String userName;
    private String email;
    // getters and setters
    }

  2. 检查Mapper接口

    • 查看生成的Mapper接口文件,如 UserMapper.java,确保所有方法都正确生成。
      
      package com.example.mapper;

    import com.example.model.User;

    public interface UserMapper {
    User selectUserById(Integer id);
    int insertUser(User user);
    int updateUser(User user);
    int deleteUserById(Integer id);
    }

  3. 检查XML映射文件
    • 查看生成的XML映射文件,如 UserMapper.xml,确保所有SQL语句都正确生成。
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.example.mapper.UserMapper">
      <select id="selectUserById" resultType="com.example.model.User">
         SELECT * FROM user WHERE id = #{id}
      </select>
      <insert id="insertUser">
         INSERT INTO user (name, email) VALUES (#{userName}, #{email})
      </insert>
      <update id="updateUser">
         UPDATE user SET name = #{userName}, email = #{email} WHERE id = #{id}
      </update>
      <delete id="deleteUserById">
         DELETE FROM user WHERE id = #{id}
      </delete>
      </mapper>
生成代码的实际应用案例分享

案例一:用户管理模块

需求描述
开发一个用户管理模块,需要实现用户信息的增删改查功能。

实现步骤

  1. 配置数据库表

    • 创建一个 user 表,包含 idnameemail 等字段。
      CREATE TABLE user (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(255),
      email VARCHAR(255)
      );
  2. 生成代码

    • 使用Mybatis代码生成器生成 User 类、UserMapper 接口和 UserMapper.xml 文件。
      <table tableName="user" domainObjectName="User" enableCounting="true">
      <generatedKey column="id" identity="true" />
      <columnOverride column="name" property="userName" />
      </table>
  3. 编写业务逻辑

    • 在业务层实现用户信息的增删改查功能。

      public class UserService {
      private UserMapper userMapper;
      
      public void addUser(User user) {
         userMapper.insertUser(user);
      }
      
      public User getUserById(Integer id) {
         return userMapper.selectUserById(id);
      }
      
      public void updateUser(User user) {
         userMapper.updateUser(user);
      }
      
      public void deleteUserById(Integer id) {
         userMapper.deleteUserById(id);
      }
      }

案例二:订单管理模块

需求描述
开发一个订单管理模块,需要实现订单信息的增删改查功能。

实现步骤

  1. 配置数据库表

    • 创建一个 order 表,包含 iduserIdproductamount 等字段。
      CREATE TABLE order (
      id INT PRIMARY KEY AUTO_INCREMENT,
      userId INT,
      product VARCHAR(255),
      amount INT
      );
  2. 生成代码

    • 使用Mybatis代码生成器生成 Order 类、OrderMapper 接口和 OrderMapper.xml 文件。
      <table tableName="order" domainObjectName="Order" enableCounting="true">
      <generatedKey column="id" identity="true" />
      <columnOverride column="userId" property="user_id" />
      </table>
  3. 编写业务逻辑

    • 在业务层实现订单信息的增删改查功能。

      public class OrderService {
      private OrderMapper orderMapper;
      
      public void addOrder(Order order) {
         orderMapper.insertOrder(order);
      }
      
      public Order getOrderById(Integer id) {
         return orderMapper.selectOrderById(id);
      }
      
      public void updateOrder(Order order) {
         orderMapper.updateOrder(order);
      }
      
      public void deleteOrderById(Integer id) {
         orderMapper.deleteOrderById(id);
      }
      }

通过以上步骤,可以使用Mybatis代码生成器快速生成基础代码,并在此基础上实现具体的业务逻辑。这种方式不仅提高了开发效率,还保证了代码的一致性和可维护性。

以上就是使用Mybatis代码生成器生成代码的全过程,希望对大家有所帮助。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消