MyBatis Generator(MBG)的使用

本文介绍了MyBatisGenerator在Java开发中的作用,如何配置并使用它来自动根据数据库表结构生成SQL映射文件、Mapper接口和实体类,以提高开发效率、保持代码一致性并减少错误。
摘要由CSDN通过智能技术生成

MyBatis Generator(MBG)是一个Java代码生成器,它是MyBatis框架的一部分,专门用于自动化生成MyBatis的持久层代码。MBG能够根据数据库表结构生成对应的SQL映射文件、Mapper接口以及实体类,从而帮助开发者快速构建项目的数据访问层。

 

**作用**:

1. **提高效率**:通过自动化生成代码,减少手动编写重复代码的工作量,提高开发效率。

2. **保持一致性**:生成的代码遵循一致的规范,有助于维护代码的整洁和一致性。

3. **减少错误**:自动化生成的代码减少了人为编写时可能引入的错误。

4. **节省时间**:开发者可以将更多时间投入到业务逻辑的实现上,而不是数据库操作的代码编写上。

 

**具体例子**:

 

假设我们有一个名为`user`的数据库表,我们想要为这个表生成MyBatis的持久层代码。

 

1. **配置MyBatis Generator**:

   首先,我们需要在项目的`pom.xml`文件中添加MyBatis Generator的依赖,并配置生成器的参数,如数据库连接信息、目标包名等。

 

   ```xml

   <plugin>

       <groupId>org.mybatis.generator</groupId>

       <artifactId>mybatis-generator-maven-plugin</artifactId>

       <version>1.4.0</version>

       <configuration>

           <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>

           <overwrite>true</overwrite>

       </configuration>

   </plugin>

   ```

 

   在`generatorConfig.xml`文件中,我们会配置数据库连接信息、要生成的表、目标包名等。

 

   ```xml

   <generatorConfiguration>

       <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"

                         connectionURL="jdbc:mysql://localhost:3306/your_database"

                         userId="your_username"

                         password="your_password">

       </jdbcConnection>

       <javaModelGenerator targetPackage="com.example.demo.model"

                           targetProject="src/main/java">

       </javaModelGenerator>

       <sqlMapGenerator targetPackage="com.example.demo.mapper"

                          targetProject="src/main/resources">

       </sqlMapGenerator>

       <javaClientGenerator targetPackage="com.example.demo.mapper"

                           targetProject="src/main/java">

       </javaClientGenerator>

       <table tableName="user" domainObjectName="User" />

   </generatorConfiguration>

   ```

 

解释:

这段代码是MyBatis Generator配置文件的一部分,用于指定代码生成的规则和位置。下面是对这些配置的注释和解释:

```xml
<!-- javaModelGenerator元素用于指定生成实体类的配置 -->
<javaModelGenerator targetPackage="com.example.demo.model" <!-- 指定生成实体类的包名 -->
                    targetProject="src/main/java"> <!-- 指定生成实体类的项目路径,通常是项目的源代码目录 -->
</javaModelGenerator>

<!-- sqlMapGenerator元素用于指定生成SQL映射文件的配置 -->
<sqlMapGenerator targetPackage="com.example.demo.mapper" <!-- 指定生成SQL映射文件的包名 -->
                   targetProject="src/main/resources"> <!-- 指定生成SQL映射文件的项目路径,通常是项目的资源目录 -->
</sqlMapGenerator>

<!-- javaClientGenerator元素用于指定生成Mapper接口的配置 -->
<javaClientGenerator targetPackage="com.example.demo.mapper" <!-- 指定生成Mapper接口的包名 -->
                       targetProject="src/main/java"> <!-- 指定生成Mapper接口的项目路径,通常是项目的源代码目录 -->
</javaClientGenerator>

<!-- table元素用于指定要生成代码的数据库表 -->
<table tableName="user" <!-- 指定数据库中的表名 -->
       domainObjectName="User" /> <!-- 指定生成的实体类的类名 -->
```

**解释**:

1. `javaModelGenerator`:这个元素用于配置生成实体类(Model)的相关设置。`targetPackage`属性指定了生成实体类的包名,这决定了生成的实体类在Java项目中的组织结构。`targetProject`属性指定了生成实体类的目录位置,通常是项目的源代码目录。

2. `sqlMapGenerator`:这个元素用于配置生成SQL映射文件的相关设置。SQL映射文件是MyBatis中定义SQL语句和映射规则的XML文件。`targetPackage`属性指定了生成SQL映射文件的包名,而`targetProject`属性指定了生成这些文件的目录位置,通常是项目的资源目录。

3. `javaClientGenerator`:这个元素用于配置生成Mapper接口的相关设置。Mapper接口是MyBatis中定义数据库操作方法的接口。`targetPackage`属性指定了生成Mapper接口的包名,`targetProject`属性指定了生成这些接口的目录位置,通常是项目的源代码目录。

4. `table`:这个元素用于指定要为哪个数据库表生成代码。`tableName`属性指定了数据库中的表名,而`domainObjectName`属性指定了生成的实体类的类名。这个类名将基于表名来生成,通常会根据一些规则(如首字母大写)来调整。

通过这些配置,MyBatis Generator能够自动化地生成与数据库表结构对应的Java代码,包括实体类、SQL映射文件和Mapper接口,从而加快开发过程并减少手动编写代码的工作量。

 

 

 

2. **运行MyBatis Generator**:

   执行Maven插件,MBG会根据配置文件生成对应的代码。这包括:

 

   - 一个名为`User`的实体类,位于`com.example.demo.model`包下。

   - 一个名为`UserMapper`的接口,位于`com.example.demo.mapper`包下。

   - 一个名为`UserMapper.xml`的SQL映射文件,位于`src/main/resources/com/example/demo/mapper`目录下。

 

3. **使用生成的代码**:

   在服务层中,我们可以使用`UserMapper`接口来执行数据库操作,例如查询用户信息。

 

   ```java

   package com.example.demo.service;

 

   import com.example.demo.mapper.UserMapper;

   import com.example.demo.model.User;

   import org.springframework.stereotype.Service;

 

   import java.util.List;

 

   @Service

   public class UserService {

       private final UserMapper userMapper;

 

       public UserService(UserMapper userMapper) {

           this.userMapper = userMapper;

       }

 

       public List<User> findAllUsers() {

           return userMapper.selectAllUsers();

       }

   }

   ```

 

   在控制器中,我们可以创建一个端点来处理HTTP请求并调用服务层中的方法。

 

   ```java

   package com.example.demo.controller;

 

   import com.example.demo.service.UserService;

   import com.example.demo.model.User;

   import org.springframework.beans.factory.annotation.Autowired;

   import org.springframework.web.bind.annotation.GetMapping;

   import org.springframework.web.bind.annotation.RequestMapping;

   import org.springframework.web.bind.annotation.RestController;

 

   import java.util.List;

 

   @RestController

   @RequestMapping("/users")

   public class UserController {

       @Autowired

       private UserService userService;

 

       @GetMapping

       public List<User> listUsers() {

           return userService.findAllUsers();

       }

   }

   ```

 

通过MyBatis Generator,我们可以快速为数据库中的每个表生成相应的MyBatis代码,从而加速开发过程并保持代码的一致性。

mybatis也能方向生成代码,能方向生成实体类(po)、mapper接口和Mapper接口映射文件,能减少我们代码的工作量。详细步骤如下 1、下载mybatis生成架包工具MyBatis_Generator_1.3.1.zip,解压架包把features、plugins文件夹下的架包分别拷贝到eclipse安装目录下的features、plugins文件夹。重启eclipse就行。 解压后图片如下: Eclipse路径如图: 拷贝替换如图: 2、创建generatorConfig.xml文件,安装好mybatis 就能创建generatorConfig.xml 3、配置generatorConfig.xml配置文件,详细如下 [html] view plain copy <?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> <!-- <classPathEntry location="D:\\rep\\mysql\\mysql-connector-java\\5.1.19\\mysql-connector-java-5.1.19.jar" /> --> <classPathEntry location="D:\\repo\\com\\oracle\\ojdbc14\\10.2.0.1.0\\ojdbc14-10.2.0.1.0.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> <property name="suppressDate" value="true" /> </commentGenerator> <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:orcl4" userId="xxx" password="xxxx" /> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> </javaTypeResolver> <javaModelGenerator targetPackage="com.pcmall.domain.sale.order" targetProject="pos-service/src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="mybatis.mapper.sale.order" targetProject="pos-service/src/main/resources"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <javaClientGenerator targetPackage="com.pcmall.dao.sale.order" targetProject="pos-service/src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <table tableName="hs_zxzflx" enableSelectByExample="false" enableDeleteByExample="false" enableCountByExample="false" selectByExampleQueryId="true" enableUpdateByExample="false"> <!-- <generatedKey column="ID" sqlStatement="oracle" identity="true" /> --> </table> </context> </generatorConfiguration> 4、右击generatorConfig.xml 点击Generate MyBatis/iBATIS Artifacts 生成对应接口、接口映射文件、实体类 5、查看结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tin9898

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

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

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

打赏作者

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

抵扣说明:

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

余额充值