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

MyBatis学习笔记(十二) —— MyBatis的逆向工程

12、MyBatis的逆向工程

正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。

逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:

  • Java实体类
  • Mapper接口
  • Mapper映射文件

12.1、创建逆向工程的步骤

12.1.1、添加依赖和插件

<!-- 依赖MyBatis核心包 -->
<dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!-- junit测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- log4j日志 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency>
</dependencies>
<!-- 控制Maven在构建过程中相关配置 -->
<build><!-- 构建过程中用到的插件 --><plugins><!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.0</version><!-- 插件的依赖 --><dependencies><!-- 逆向工程的核心依赖 --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency></dependencies></plugin></plugins>
</build>

12.1.2 创建MyBatis的核心配置文件

mybatis-config.xml

12.1.3 创建逆向工程的配置文件

文件名必须是: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><!--targetRuntime: 执行生成的逆向工程的版本MyBatis3Simple: 生成基本的CRUD(清新简洁版)MyBatis3: 生成带条件的CRUD(奢华尊享版)--><context id="DB2Tables" targetRuntime="MyBatis3"><!-- 数据库的连接信息 --><jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"userId="root"password="root"></jdbcConnection><!-- javaBean的生成策略--><javaModelGenerator targetPackage="com.atguigu.mybatis.pojo"targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /><property name="trimStrings" value="true" /></javaModelGenerator><!-- SQL映射文件的生成策略 --><sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper"targetProject=".\src\main\resources"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!-- Mapper接口的生成策略 --><javaClientGenerator type="XMLMAPPER"targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\java"><property name="enableSubPackages" value="true" /></javaClientGenerator><!-- 逆向分析的表 --><!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName --><!-- domainObjectName属性指定生成出来的实体类的类名 --><table tableName="t_emp" domainObjectName="Emp"/><table tableName="t_dept" domainObjectName="Dept"/></context>
</generatorConfiguration>

配置了一个插件,我们是通过插件生成一个逆向工程。

12.1.4、执行MBG插件的generate目标

构建

Maven -> 项目 —> Plugins -> mybatis-genertor -> mybatis-generator:generate

控制台看到 BUILD SUCCESS,就构建成功了。

img

观察项目目录,可以看到生成了mapper接口、实体类、mapper映射文件。

img

单表查询的时候可以提供帮助,复杂的SQL或者多表联查的时候不支持。

img

12.2、测试

测试代码:

package com.fan.mybatis.test;import com.fan.mybatis.mapper.EmpMapper;
import com.fan.mybatis.pojo.Emp;
import com.fan.mybatis.pojo.EmpExample;
import com.fan.mybatis.utils.SqlSessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.util.List;/**
* @Date: 2023/03/09
* @Author: fan
* @Description:
*/
public class MBGTest {@Testpublic void testMBG(){SqlSession sqlSession = SqlSessionUtils.getSqlSession();EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);根据id查询数据//Emp emp = mapper.selectByPrimaryKey(1);//System.out.println(emp);查询所有数据//List<Emp> list = mapper.selectByExample(null);//list.forEach(System.out::println);根据条件查询数据//EmpExample example = new EmpExample();//example.createCriteria().andEmpNameEqualTo("张三").andAgeGreaterThanOrEqualTo(20);//example.or().andGenderEqualTo("男");//List<Emp> emps = mapper.selectByExample(example);//emps.forEach(System.out::println);测试普通修改功能//Emp emp1 = new Emp(1,"小黑",null,"女");//mapper.updateByPrimaryKey(emp1);//选择性修改Emp emp2 = new Emp(1,"小黑",null,"女");mapper.updateByPrimaryKeySelective(emp2);}
}
http://www.lryc.cn/news/36683.html

相关文章:

  • 4.Elasticsearch深入了解
  • 【HashSet】| 深度剥析Java SE 源码合集Ⅲ
  • 你了解线程的状态转换吗
  • MyBatis-Plus联表查询的短板,该如何解决呢
  • 吲哚菁绿-巯基,ICG-SH,科研级别试剂,吲哚菁绿可用于测定心输出量、肝脏功能、肝血流量,和对于眼科血管造影术。
  • 深度剖析JavaOptional类
  • 平面设计软件Corel CDR2023又开始放大招啦,CorelDRAW Graphics Suite 2023有哪些新增功能?
  • 初学torch【报错:expected scalar type double but found float、rmse】
  • 金三银四、金九银十 面试宝典 JAVASE八股文面试题 超级无敌全的面试题汇总(接近3万字的面试题,让你的JAVA语法基础无可挑剔)
  • 数据结构:链式二叉树初阶
  • 公式编写1000问9-12
  • C++11:类的新功能和可变参数模板
  • 【Java学习笔记】15.Java 日期时间(1)
  • 在ROS2中,通过MoveIt2控制Gazebo中的自定义机械手
  • Java-线程池 原子性 类
  • 力扣sql简单篇练习(二十五)
  • 计算机网络:OSPF协议和链路状态算法
  • 利用表驱动法+策略模式优化switch-case
  • SpringBoot创建和使用
  • which、whereis、locate文件查找命令
  • Uipath Excel 自动化系列14-SaveExcelFile(保存Excel)
  • MyBatis学习
  • 高速PCB设计指南系列(二)
  • uniapp项目打包上线流程
  • 垃圾回收:垃圾数据如何自动回收
  • 苹果笔不用原装可以吗?Apple Pencil平替笔推荐
  • uniCloud基础使用-杂文
  • vector的模拟实现
  • 【无标题】compose系列教程-4.相对布局ConstraintLayout的使用
  • JavaEE简单示例——Bean管理