IDEA全版本MyBatisCodeHelper Pro免费使用教程(全部版本适用)

news2024/11/24 17:20:50

版本说明

  1. 系统:macOS(Windows同理)
  2. IDE:IntelliJ IDEA 2023.1.3 (哪个版本都可以)
  3. MyBatisCodeHelper Pro 3.2.1(哪个版本都可以)

环境准备

  1. 从插件市场下载MyBatisCodeHelper Pro
    在这里插入图片描述
  2. 领取临时激活码

领取地址:https://brucege.com/pay/getfreetrial
在这里插入图片描述
在这里插入图片描述

  1. 使插件处于试用状态

输入刚刚申请的试用码

在这里插入图片描述

试用成功:

在这里插入图片描述

  1. 下载cfr的jar包

下载地址:https://github.com/leibnitz27/cfr/releases

下最新的就行:

在这里插入图片描述

正式教程

找到MyBatisCodeHelper Pro的jar包

  1. Windows:在地址栏输入%appdata%\JetBrains\找到idea安装目录,里面有个plugins文件夹,然后里面有个文件夹MyBatisCodeHelper-Pro
  2. MacOS:/Users/用户名/Library/Application Support/JetBrains/IntelliJIdea2023.1/plugins/MyBatisCodeHelper-Pro

MacOS的有一点特殊,注意用户名目录和你的idea版本号

然后进入到lib文件夹,找到MyBatisCodeHelper-Pro-obfuss.jar

在这里插入图片描述

将它和刚刚下载的cfr的jar包拷贝到另一个地方,比如桌面,方便修改。

在这里插入图片描述

反编译jar包

  1. 在刚刚两个jar包的目录打开终端(Windows是打开cmd,一个意思)。
    在这里插入图片描述

  2. 执行命令: java -jar cfr-0.152.jar MyBatisCodeHelper-Pro-obfuss.jar --renamedupmembers true --hideutf false >> result.txt

    需要注意cfr版本号,如果你跟我下载的不是一个版本,需要更改为指定版本。

    过程会比较慢,耐心等待…

    执行完毕文件夹中会出现一个result的文本文件:
    在这里插入图片描述
    在这里插入图片描述

修改前准备/介绍/目标

准备/介绍

用一个比较方便的工具打开上面的result.txt。

  • 搜索validTo,找到具有paidKey,valid,validTo的类

    不同插件版本,这个类的位置会不一样
    在这里插入图片描述

  • valid为判断是否在有效期的变量,变量定义为下方的private Boolean d

  • validTo为有效时长变量,定义为下方的private Long e;

  • package com.ccnode.codegenerator.T.e是当前类所在的包,类名为c,由此可知当前类的绝对定位为com.ccnode.codegenerator.T.e.b

在这里插入图片描述

目标(这是我们将要用代码实现的目标,先演练)

  1. 修改变量d,也就是代表是否有效的那个变量的get/set方法始终为true

    (再次提醒:不同的插件版本变量名称也不一样,你要看清楚!)

// ------------get方法-----------
public Boolean b() {
	return this.d;
}

// 改为:

public Boolean b() {
	return true;
}

// ------------set方法-----------
public void a(Boolean bl) {
	this.d = bl;
}

// 改为:

public void a(Boolean bl) {
	this.d = true;
}

在这里插入图片描述

  1. 修改变量e,也就是那个代表有效期还剩多久的变量,get/set方法为固定值

    (再次提醒:不同的插件版本变量名称也不一样,你要看清楚!)

// ------------get方法-----------
public Long e() {
	return this.e;
}

// 改为:

public Long e() {
	return new Long(4797976044000L);
}

// ------------set方法-----------
public void a(Long l2) {
	this.e = l2;
}

// 改为:

public void a(Long l2) {
	this.e = new Long(4797976044000L);
}

在这里插入图片描述

代码实现

上面已经找到了要修改的类的绝对定位com.ccnode.codegenerator.T.e.b,以及要修改get/set方法,下面通过Javassist修改对于的class文件。以实现我们的目标。

  1. 使用IDEA创建一个Maven项目
    在这里插入图片描述
  2. 导入Javassist依赖
<!-- javassist -->
<dependency>
	<groupId>org.javassist</groupId>
	<artifactId>javassist</artifactId>
	<version>3.28.0-GA</version>
</dependency>

在这里插入图片描述

  1. 代码实现

以下代码需要注意几点:

  • pool.insertClassPath("MyBatisCodeHelper-Pro-obfuss.jar"); 需要填写MyBatisCodeHelper-Pro-obfuss.jar在你本机实际的路径!
  • cc.writeFile("/Users/localhost/Desktop/test"); 需要填写你能找到的输出路径
  • 还有就是代码中体现的包名,类名,变量名,都要和上面咱们准备的时候一直,这个一定要注意!!!
  • 代码都有注释!注意看!
package org.example;

import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;

/**
 * Hello world!
 * @author localhost
 */
public class App {
    public static void main(String[] args) {
        try {
            ClassPool pool = ClassPool.getDefault();
            // 此处改为你实际的的 MyBatisCodeHelper-Pro-obfuss.jar 的路径
            pool.insertClassPath("/Users/localhost/Library/Application Support/JetBrains/IntelliJIdea2023.1/plugins/MyBatisCodeHelper-Pro/lib/MyBatisCodeHelper-Pro-obfuss.jar");
            // 通过绝对定位,加载指定的类
            CtClass cc = pool.get("com.ccnode.codegenerator.T.e.b");

            // 获取validTo的get方法
            // public Long e()
            CtMethod getValidToMethod = cc.getDeclaredMethod("e");

            // 获取validTo的set方法的参数:Long
            CtClass[] params = new CtClass[] { pool.get("java.lang.Long") };
            // 获取validTo的set方法
            // public void a(Long l2)
            CtMethod setValidToMethod = cc.getDeclaredMethod("a", params);

            // 获取valid的set方法的参数:Boolean
            CtClass[] params1 = new CtClass[] { pool.get("java.lang.Boolean") };
            // 获取Valid的set方法
            // public void a(Boolean bl)
            CtMethod setValidMethod = cc.getDeclaredMethod("a", params1);

            // 获取valid的get方法
            // public Boolean b()
            CtMethod getValidMethod = cc.getDeclaredMethod("b");

            // 修改validTo的get方法
            // 直接返回4797976044000
            StringBuilder builder = new StringBuilder();
            builder.append("{")
                    .append("       return new Long(4797976044000L);")
                    .append("}");
            getValidToMethod.setBody(builder.toString());

            // 修改validTo的set方法
            // 直接设为4797976044000
            StringBuilder builder1 = new StringBuilder();
            builder1.append("{")
                    .append("        this.e = new Long(4797976044000L);")
                    .append("}");
            setValidToMethod.setBody(builder1.toString());

            // 修改valid的set方法
            // 设为True
            String getValidMethodBuilder = "{" +
                    "       return Boolean.TRUE;" +
                    "}";
            getValidMethod.setBody(getValidMethodBuilder);

            // 修改valid的get方法
            // 直接返回True
            String setValidMethodBuilder = "{" +
                    "this.d = Boolean.TRUE;" +
                    "}";
            setValidMethod.setBody(setValidMethodBuilder);

            // 将修改后的Class b写入指定文件夹
            cc.writeFile("/Users/localhost/Desktop/test");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行上面的代码后会在你指定的文件夹中生成修改的Class b:

在这里插入图片描述

打开看一下是不是修改成功了:
在这里插入图片描述

替换Class文件

由于我MacOS装的解压缩工具,貌似不支持打开jar文件,所以下面的操作我用我装的虚拟机版Windows11演示。

  1. 用压缩工具打开刚刚拷贝出来的MyBatisCodeHelper-Pro-obfuss.jar

在这里插入图片描述

  1. 找到com.ccnode.codegenerator.T.e.b并替换成我们刚刚修改的Class文件

直接拖进去:

在这里插入图片描述
然后关闭压缩工具即可。

  1. 替换jar包

将我们拷贝出来并修改完的MyBatisCodeHelper-Pro-obfuss.jar,替换我们开头找到的原始MyBatisCodeHelper-Pro-obfuss.jar。

为防止出问题,注意先备份再替换!!!

在这里插入图片描述

查看是否成功

重新打开IEDA

设置—其他设置中找到MyBatisCodeHelperPro,往下翻,看到期时间:

在这里插入图片描述

注意

如果不小心更新了插件,按照上述步骤重新操作即可,但是操作前需要保证插件在试用状态下,重新申请试用再操作即可。
领取地址:https://brucege.com/pay/getfreetrial

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/719338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA实验四:交通灯控制器设计

目录 一、实验目的 二、设计要求 三、实验代码 1.design source文件代码 2.仿真文件代码 3.代码原理分析 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 3、下载测试结果及分析 五、实验心得 1.解决实验中遇见的问题及解决 2.实验完成的心得 一、实验目的 &a…

如何将TXT转换为PDF格式?两种简便方法分享!

在日常办公和学习中&#xff0c;我们常常遇到需要将文本文件转换为PDF格式的需求。TXT是一种常见的文本文件格式&#xff0c;而PDF则是一种更为通用和便捷的文档格式。本文将为大家介绍两种简单易行的方法&#xff0c;帮助您将TXT文件快速转换为PDF格式。 方法一&#xff1a;记…

无锡阿里云代理商:阿里云将免费提供50款云产品 让更多企业获益

【亿邦原创】在2023年4月11日举办的阿里云峰会上&#xff0c;阿里云智能CTO周靖人介绍&#xff0c;为了让更多中小企业获得云计算红利&#xff0c;阿里云推出新款通用算力型ECS云服务器Universal实例&#xff08;简称U实例&#xff09;。 U实例整合了多种云服务器规格&#xff…

Jmeter做单接口测试-超详细步骤讲解

测试项目&#xff1a;本章节将以此测试项目为大家讲解怎么使用jmeter做一个接口测试 CSDN - 专业开发者社区CSDN是全球知名中文IT技术交流平台,创建于1999年,包含原创博客、精品问答、职业培训、技术论坛、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区.h…

如何一键将大批量的护照图片转为excle表格?

当我们手头上有很多的护照需要识别成excel怎么办&#xff1f;手工录入效率低&#xff0c;而且容易出错&#xff0c;有没有软件可以帮忙完成这项工作&#xff1f;答案是肯定的&#xff0c;用金鸣表格文字识别大师就能将大批量的护照上的数据合并转到一个excel表上&#xff0c;下…

Python——— 元组

&#xff08;一&#xff09;初识元组tuple Python 的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。元组使用小括号&#xff0c;列表使用方括号。列表属于可变序列&#xff0c;可以任意修改列表中的元素。元组属于不可变序列&#xff0c;不能修改元组中的元素。…

你的隐私被泄漏了吗

近日&#xff0c;某高校毕业生在校期间窃取学校内网数据&#xff0c;收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代&#xff0c;算法分发带来了隐私侵犯&#xff0c;在享受消费生活等便捷权利的同时&#xff0c;似乎又有不…

【Web3】认识元宇宙

元宇宙在Web3中扮演着重要的角色&#xff0c;可以带来许多创新和变革。Web3是下一代互联网的概念&#xff0c;强调去中心化、区块链技术和加密货币的应用。 元宇宙在Web3中的几个作用&#xff1a; 去中心化的虚拟世界&#xff1a;元宇宙通过使用区块链技术和去中心化的网络结构…

基于单片机的智能窗帘智能晾衣架系统的设计与实现

功能介绍 以STM32单片机单片机作为主控系统&#xff1b;OLED液晶显示当前环境温湿度&#xff0c;光照强度&#xff0c;时间&#xff0c;开关状态等信息&#xff1b;雨滴传感器检测当前环境是否下雨&#xff0c;天气下雨检测&#xff0c;天气潮湿时自动收衣服&#xff1b;可以通…

简要介绍 | 大规模三维场景理解:从点云到智能导航

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对大规模三维场景理解进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 大规模三维场景理解&#xff1a;从点云到智能导航 InteriorNet: Mega-scale Multi-sensor Photo-realistic Indoor Scenes …

【软考程序员学习笔记】——软件工程

目录 &#x1f34a;一、软件存周期 &#x1f34a;二、软件生存周期模型 &#x1f34a;三、软件开发方法 &#x1f34a;四、需求分析 &#x1f34a;五、内聚和耦合 &#x1f349;模块内的独立性--内聚性 &#x1f349;模块间的独立性--耦合性 &#x1f34a;六、软件测试 …

提交软著的源码格式是怎么样的?软著源码规范器V1.0直接一键生成规范的源码文档

小陶在自己成功申请了软著之后&#xff0c;算是了解一下流程。最主要的就是两个文件&#xff0c;分别是软件说明书和软件源码。软件说明书倒是没啥&#xff0c;可以自己写&#xff0c;跟一个报告差不多吧。软著源码则有很多细节问题。于是我就又写了一个软著源码规范器&#xf…

Windows 11 安装Git

Windows 11 安装Git步骤 前言第一步&#xff1a;从官网下载最新的Git第二步&#xff1a;运行安装程序第三步&#xff1a;选择安装位置第四步&#xff1a;安装配置界面第五步&#xff1a;选择Git默认编辑器窗口第六步&#xff1a;调整新存储库中初始分支的名称第七步&#xff1a…

微信小程序个人中心展示样式(2)

这是之前的详细的看这里 因为这是好多年前写的了&#xff0c;好多人私信我代码有问题。正好今天有时间简单的还原下代码 话不多说先看图(图片样式自己搞奥~~~~我也好久没弄了这就是个参考demo) 以下是一个使用微信小程序开发的个人中心展示详情的示例&#xff1a; 在微信开发…

并发可见性、有序性、原子性与JMM内存模型深入解析

并发三大特性 原子性 一个或多个操作&#xff0c;要么全部执行且在执行过程中不被任何因素打断&#xff0c;要么全部不执行。在 Java 中&#xff0c;对基本数据类型的变量的读取和赋值操作是原子性操作&#xff08;64位处理器&#xff09;。不采取任何的原子性保障措施的自增…

如何制作html文件(合集)

在电脑桌面或者在文件夹中点击:鼠标右键-->新建-->文本文档&#xff0c;一般新建好的文档名字叫“新建文本文档.txt”。 如果您创建的文档没有后缀名“txt”&#xff0c;请不要急&#xff0c;下面的步骤将教您如何显示“txt”后缀名。在文件资源管理器中点击&#xff1a…

0124 计算机网络体系结构

目录 1.计算机网络体系结构 1.1计算机网络概述 计算机网络的组成 计算机网络的功能 计算机网络的分类 计算机网络的性能指标 1.1部分习题 1.2计算机网络体系结构与参考模型 计算机网络分层结构 计算机网络协议、接口与服务 ISO/OSI参考模型和TCP/IP模型 OSI参考模型…

虚拟币与传统金融体系走向健康可持续发展

近年来&#xff0c;虚拟币的崛起引起了全球范围内的广泛关注。作为一种数字资产&#xff0c;虚拟币在不断突破传统金融界限的同时&#xff0c;也面临着许多挑战和争议。然而&#xff0c;随着时间的推移&#xff0c;人们开始看到虚拟币与传统金融体系逐渐融合的趋势&#xff0c;…

解决supervisor不能监控程序子进程问题

先说一下遇到的问题&#xff0c;使用的是beanstalk队列&#xff0c;有两个tube, 使用 supervisor 监控 beanstalk 消费队列&#xff08;主进程A&#xff09;&#xff0c;主进程A产生两个子进程&#xff08;子进程B&#xff0c;子进程C&#xff09;&#xff0c;每个子进程处理一…

Arcgis之Python的Arcpy的点线面对象的创建处理和通过pandas读取txt中的经纬度坐标创建几何对象

前言 本节将介绍点线面对象的创建和处理。创建点对象有三个类&#xff0c;分别是Point、Multipoint、PointGeometry&#xff0c;创建线对象的类为Polyline&#xff0c;创建面对象的类为Polygon。 一、点对象的创建——Point 点对象经常与光标配合使用。点要素将返回单个点对…