当前位置: 首页 > news >正文

Mybatis07-逆向工程

MyBatis 的逆向工程(MyBatis Generator, MBG),帮助你根据数据库表自动生成 Java 实体类、Mapper 接口、XML 映射文件,极大提高开发效率。

 

一、什么是 MyBatis 逆向工程?

MyBatis 逆向工程(MBG)是官方提供的代码生成工具,用于自动从数据库表生成对应的 Java 代码,包括:

自动生成内容示例说明
实体类(Model)User.java 对应 t_user
Mapper 接口UserMapper.java
Mapper XML 文件UserMapper.xml,内含 select/insert/update/delete 语句

 

二、使用方式(标准 Maven 项目)

步骤 1:添加 Maven 插件

<build><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.1</version><configuration><!-- 允许覆盖 --><overwrite>true</overwrite></configuration><!-- 插件的依赖 --><dependencies><!-- JDBC 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency></dependencies></plugin></plugins></build>

 

步骤 2:创建配置文件 generatorConfig.xml

1、配置文件名只能是generatorConfig.xml

2、配置文件只能放到resources文件夹下!

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!--targetRuntime有两个值:MyBatis3Simlpe: 生成的是基础版,只有基本的增删改查MyBatis3:生成的是增强版,除了基本的增删改查之外还有复杂的增删改查--><context id="MyContext" targetRuntime="MyBatis3"><!-- 防止生成重复代码 --><plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" /><!-- 注释信息的生成 --><commentGenerator><!-- 是否去掉生成日期 --><property name = "suppressDate" value="true" /><!-- 是否去除注释 --><property name="suppressAllComments" value="true"/></commentGenerator><!-- 数据库连接信息 --><jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/wsbazinga?serverTimezone=UTC"userId="root"password="" /><!-- JavaBean 生成位置 --><javaModelGenerator targetPackage="com.wsbazinga.advance.pojo"targetProject="src/main/java" ><!-- 是否开启了子包 --><property name="enableSubPackages" value="true"/><!-- 是否去除字段名前后空白 --><property name="trimStrings" value="true"/></javaModelGenerator><!-- Mapper XML 文件位置 --><sqlMapGenerator targetPackage="com.wsbazinga.advance.mapper"targetProject="src/main/resources" ><!-- 是否开启了子包 --><property name="enableSubPackages" value="true"/></sqlMapGenerator><!-- Mapper 接口生成位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="com.wsbazinga.advance.mapper"targetProject="src/main/java" ><!-- 是否开启了子包 --><property name="enableSubPackages" value="true"/></javaClientGenerator><!-- 要生成的表 --><table tableName="t_teacher" domainObjectName="Teacher"/></context>
</generatorConfiguration>

【注意】:

若是:targetRuntime="MyBatis3",会生成xxxExample.java文件,在pojo同目录下,条件查询构建器类。

这是因为:MyBatis3 模式默认生成 基于 Example 的动态查询方法,比如:

List<User> selectByExample(UserExample example);
int deleteByExample(UserExample example);

这个 UserExample 类的作用是帮助你以 Java 对象方式动态构建复杂 WHERE 条件语句,替代你手动写 SQL 条件,非常适合多条件拼接查询。

 

Example 类作用演示:

比如你想查询年龄大于 25 且 name 包含 "wang" 的用户,传统写法是写 SQL:

SELECT * FROM user WHERE age > 25 AND name LIKE '%wang%'

 而使用 Example 的写法是:

UserExample example = new UserExample();
UserExample.Criteria criteria = example.createCriteria();
criteria.andAgeGreaterThan(25);
criteria.andNameLike("%wang%");List<User> users = userMapper.selectByExample(example);

QBC风格:query by criteria一种查询方式,比较面向对象,看不到sql语句。 

 

步骤 3:使用

直接双击,即可。

http://www.xdnf.cn/news/1133587.html

相关文章:

  • 【代码】基于CUDA优化的RANSAC实时激光雷达点云地面分割
  • 参数检验?非参数检验?
  • java工具类Hutool
  • 工业网络协议桥接设计指南:从LIN到CAN/RS-232的毫秒级互通方案
  • 推客系统开发:从零构建高并发社交平台的技术实践
  • 基于springboot+vue的酒店管理系统设计与实现
  • 事务~~~
  • 横向移动(下)
  • 关于redis各种类型在不同场景下的使用
  • 消息中间件(Kafka VS RocketMQ)
  • UDP和TCP的主要区别是什么?
  • 单片机(STM32-中断)
  • 构建足球实时比分APP:REST API与WebSocket接入方案详解
  • 比特币技术简史 第二章:密码学基础 - 哈希函数、公钥密码学与数字签名
  • 主机安全---开源wazuh使用
  • OCR 与 AI 图像识别:协同共生的智能双引擎
  • 从0开始学习R语言--Day48--Calibration Curves 评估模型
  • 预训练模型:大规模数据预学习范式——定义、原理与演进逻辑
  • 360安全卫士硬盘写入问题解析
  • 了解一下Unity Object的内存管理机制
  • 使用JS编写一个购物车界面
  • C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏
  • 实训十一——网络通信原理
  • WP Force SSL Pro – HTTPS SSL Redirect Boost Your Website‘s Trust in Minutes!
  • ByteToMessageDecoder详解
  • 神经网络常见激活函数 13-Softplus函数
  • Linux4:线程
  • 7.16 Java基础 | 集合框架(上)
  • SM3算法工程中添加bouncycastle.bcprov.jdk15on库
  • 从函数调用到进程通信:Linux下的多语言协作实践