day49_代码生成器EasyCode

IDEA安装插件

easycode插件

image-20230909231216061

使用

image-20230909231508989

image-20230909231606053

修改模板

因为默认模板有些不适用自己项目,所以需要修改,以下是我的模板json文件

  • 生成了Controller,Service,Dao,Entity
  • 没有前后端交互的R,需要自己导入

在磁盘新建一个EasyCodeConfig.json,将以下代码赋值粘贴进去,

然后在idea的easycode插件中导入

{
  "author" : "Taotie",
  "version" : "1.2.8",
  "userSecure" : "",
  "currTypeMapperGroupName" : "Default",
  "currTemplateGroupName" : "Default",
  "currColumnConfigGroupName" : "Default",
  "currGlobalConfigGroupName" : "Default",
  "typeMapper" : { },
  "template" : {
    "Default" : {
      "name" : "Default",
      "elementList" : [ {
        "name" : "controller.java.vm",
        "code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Controller\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/controller\"))\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n    #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.web.bind.annotation.*;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.*;\nimport com.qf.util.R;\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表控制层\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@RestController\n@RequestMapping(\"/api/$!tool.firstLowerCase($tableInfo.name)\")\npublic class $!{tableName} {\n    /**\n     * 服务对象\n     */\n    @Autowired\n    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;\n\n    /**\n     * 分页查询\n     *\n     * @return 查询结果\n     */\n    @GetMapping(\"/list/page\")\n    public R queryByPage($!pk.shortType pageNum) {\n        return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryByPage(pageNum));\n    }\n\n    /**\n     * 通过主键查询单条数据\n     *\n     * @param id 主键\n     * @return 单条数据\n     */\n    @GetMapping(\"/{id}\")\n    public R queryById(@PathVariable(\"id\") $!pk.shortType id) {\n        return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id));\n    }\n\n    /**\n     * 新增数据\n     *\n     * @param $!{tool.firstLowerCase($tableInfo.name)} 实体\n     * @return 新增结果\n     */\n    @PostMapping(\"/save\")\n    public R add(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {\n        this.$!{tool.firstLowerCase($tableInfo.name)}Service.insert($!{tool.firstLowerCase($tableInfo.name)});\n        return R.ok();\n    }\n\n    /**\n     * 编辑数据\n     *\n     * @param $!{tool.firstLowerCase($tableInfo.name)} 实体\n     * @return 编辑结果\n     */\n    @PostMapping(\"/edit\")\n    public R edit(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {\n        return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.update($!{tool.firstLowerCase($tableInfo.name)}));\n    }\n\n    /**\n     * 删除数据\n     *\n     * @param id 主键\n     * @return 删除是否成功\n     */\n    @GetMapping(\"/del\")\n    public R deleteById($!pk.shortType id) {\n        return R.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id));\n    }\n\n}\n"
      }, {
        "name" : "debug.json.vm",
        "code" : "// 禁止将生成结果写入到文件\n$!callback.setWriteFile(false)\n\n//调试表原始对象\n$!tool.debug($tableInfo.obj)\n\n//调试列原始对象\n$!tool.debug($tableInfo.fullColumn.get(0).obj)\n\n//调试列原始列类型\n$!tool.debug($tableInfo.fullColumn.get(0).obj.dataType)\n\n//获取原始列类型中的字段\nsqlType = $!tool.getField($tableInfo.fullColumn.get(0).obj.dataType, \"typeName\")\n\n//执行原始列类型中的方法\nsqlTypeLen = $!tableInfo.fullColumn.get(0).obj.dataType.getLength()\n"
      }, {
        "name" : "entity.java.vm",
        "code" : "##引入宏定义\n$!{define.vm}\n\n##使用宏定义设置回调(保存位置与文件后缀)\n#save(\"/entity\", \".java\")\n\n##使用宏定义设置包后缀\n#setPackageSuffix(\"entity\")\n\n##使用全局变量实现默认包导入\n$!{autoImport.vm}\nimport java.io.Serializable;\n\n##使用宏定义实现类注释信息\n#tableComment(\"实体类\")\npublic class $!{tableInfo.name} implements Serializable {\n    private static final long serialVersionUID = $!tool.serial();\n#foreach($column in $tableInfo.fullColumn)\n    #if(${column.comment})/**\n     * ${column.comment}\n     */#end\n\n    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n#end\n\n#foreach($column in $tableInfo.fullColumn)\n##使用宏定义实现get,set方法\n#getSetMethod($column)\n#end\n\n}\n"
      }, {
        "name" : "mapper.xml.vm",
        "code" : "##引入mybatis支持\n$!{mybatisSupport.vm}\n\n##设置保存名称与保存位置\n$!callback.setFileName($tool.append($!{tableInfo.name}, \"Mapper.xml\"))\n$!callback.setSavePath($tool.append($modulePath, \"/src/main/resources/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n    #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"$!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper\">\n\n    <resultMap type=\"$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}\" id=\"$!{tableInfo.name}Map\">\n#foreach($column in $tableInfo.fullColumn)\n        <result property=\"$!column.name\" column=\"$!column.obj.name\" jdbcType=\"$!column.ext.jdbcType\"/>\n#end\n    </resultMap>\n\n    <!--查询单个-->\n    <select id=\"queryById\" resultMap=\"$!{tableInfo.name}Map\">\n        select\n          #allSqlColumn()\n###    新版2023.1idea 以及以后的都需要这么改\n###    修改当前文件中$velocityHasNext 为 $foreach.hasNext\n###    还需修改Global Config中mybatisSuport.vm中的$velocityHasNext改为$foreach.hasNext\n        from $!tableInfo.obj.name\n        where $!pk.obj.name = #{$!pk.name}\n    </select>\n\n    <!--查询多行数据-->\n    <select id=\"queryAllByLimit\" resultMap=\"$!{tableInfo.name}Map\">\n        select\n          #allSqlColumn()\n\n        from $!tableInfo.obj.name\n    </select>\n\n    <!--统计总行数-->\n    <select id=\"count\" resultType=\"java.lang.Long\">\n        select count(1)\n        from $!tableInfo.obj.name\n        <where>\n#foreach($column in $tableInfo.fullColumn)\n            <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n                and $!column.obj.name = #{$!column.name}\n            </if>\n#end\n        </where>\n    </select>\n\n    <!--新增所有列-->\n    <insert id=\"insert\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n        values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)\n    </insert>\n\n    <insert id=\"insertBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n        values\n        <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n        (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n        </foreach>\n    </insert>\n\n    <insert id=\"insertOrUpdateBatch\" keyProperty=\"$!pk.name\" useGeneratedKeys=\"true\">\n        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)\n        values\n        <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n            (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)\n        </foreach>\n        on duplicate key update\n        #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name)#if($velocityHasNext),\n        #end#end\n\n    </insert>\n\n    <!--通过主键修改数据-->\n    <update id=\"update\">\n        update $!{tableInfo.obj.name}\n        <set>\n#foreach($column in $tableInfo.otherColumn)\n            <if test=\"$!column.name != null#if($column.type.equals(\"java.lang.String\")) and $!column.name != ''#end\">\n                $!column.obj.name = #{$!column.name},\n            </if>\n#end\n        </set>\n        where $!pk.obj.name = #{$!pk.name}\n    </update>\n\n    <!--通过主键删除-->\n    <delete id=\"deleteById\">\n        delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}\n    </delete>\n\n</mapper>\n"
      }, {
        "name" : "service.java.vm",
        "code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Service\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n    #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport java.util.List;\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务接口\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n    /**\n     * 通过ID查询单条数据\n     *\n     * @param $!pk.name 主键\n     * @return 实例对象\n     */\n    $!{tableInfo.name} queryById($!pk.shortType $!pk.name);\n\n    /**\n     * 分页查询\n     *\n     * @return 查询结果\n     */\n    List<$!{tableInfo.name}> queryByPage($!pk.shortType pageNum);\n\n    /**\n     * 新增数据\n     *\n     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n     * @return 实例对象\n     */\n    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n    /**\n     * 修改数据\n     *\n     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n     * @return 实例对象\n     */\n    int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n    /**\n     * 通过主键删除数据\n     *\n     * @param $!pk.name 主键\n     * @return 是否成功\n     */\n    boolean deleteById($!pk.shortType $!pk.name);\n\n}"
      }, {
        "name" : "serviceImpl.java.vm",
        "code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"ServiceImpl\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/service/impl\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n    #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;\nimport org.springframework.stereotype.Service;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport java.util.List;\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类\n *\n * @author $!author\n * @since $!time.currTime()\n */\n@Service(\"$!tool.firstLowerCase($!{tableInfo.name})Service\")\npublic class $!{tableName} implements $!{tableInfo.name}Service {\n    @Autowired\n    private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;\n\n    /**\n     * 通过ID查询单条数据\n     *\n     * @param $!pk.name 主键\n     * @return 实例对象\n     */\n    @Override\n    public $!{tableInfo.name} queryById($!pk.shortType $!pk.name) {\n        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.queryById($!pk.name);\n    }\n\n    /**\n     * 分页查询\n     *\n     * @return 查询结果\n     */\n    @Override\n    public List<$!{tableInfo.name}> queryByPage($!pk.shortType pageNum) {\n        return this.$!{tool.firstLowerCase($tableInfo.name)}Mapper.queryAllByLimit();\n    }\n\n    /**\n     * 新增数据\n     *\n     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n     * @return 实例对象\n     */\n    @Override\n    public int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {\n        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.insert($!tool.firstLowerCase($!{tableInfo.name}));\n    }\n\n    /**\n     * 修改数据\n     *\n     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n     * @return 实例对象\n     */\n    @Override\n    public int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {\n        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.update($!tool.firstLowerCase($!{tableInfo.name}));\n    }\n\n    /**\n     * 通过主键删除数据\n     *\n     * @param $!pk.name 主键\n     * @return 是否成功\n     */\n    @Override\n    public boolean deleteById($!pk.shortType $!pk.name) {\n        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.deleteById($!pk.name) > 0;\n    }\n}"
      }, {
        "name" : "mapper.java.vm",
        "code" : "##定义初始变量\n#set($tableName = $tool.append($tableInfo.name, \"Mapper\"))\n##设置回调\n$!callback.setFileName($tool.append($tableName, \".java\"))\n$!callback.setSavePath($tool.append($tableInfo.savePath, \"/mapper\"))\n\n##拿到主键\n#if(!$tableInfo.pkColumn.isEmpty())\n    #set($pk = $tableInfo.pkColumn.get(0))\n#end\n\n#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;\n\nimport $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};\nimport org.apache.ibatis.annotations.Param;\nimport java.util.List;\n\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层\n *\n * @author $!author\n * @since $!time.currTime()\n */\npublic interface $!{tableName} {\n\n    /**\n     * 通过ID查询单条数据\n     *\n     * @param $!pk.name 主键\n     * @return 实例对象\n     */\n    $!{tableInfo.name} queryById($!pk.shortType $!pk.name);\n\n    /**\n     * 查询指定行数据\n     *\n     * @return 对象列表\n     */\n    List<$!{tableInfo.name}> queryAllByLimit();\n\n    /**\n     * 统计总行数\n     *\n     * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件\n     * @return 总行数\n     */\n    long count($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n    /**\n     * 新增数据\n     *\n     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n     * @return 影响行数\n     */\n    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n    /**\n     * 批量新增数据(MyBatis原生foreach方法)\n     *\n     * @param entities List<$!{tableInfo.name}> 实例对象列表\n     * @return 影响行数\n     */\n    int insertBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n    /**\n     * 批量新增或按主键更新数据(MyBatis原生foreach方法)\n     *\n     * @param entities List<$!{tableInfo.name}> 实例对象列表\n     * @return 影响行数\n     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参\n     */\n    int insertOrUpdateBatch(@Param(\"entities\") List<$!{tableInfo.name}> entities);\n\n    /**\n     * 修改数据\n     *\n     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象\n     * @return 影响行数\n     */\n    int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));\n\n    /**\n     * 通过主键删除数据\n     *\n     * @param $!pk.name 主键\n     * @return 影响行数\n     */\n    int deleteById($!pk.shortType $!pk.name);\n\n}\n"
      } ]
    }
  },
  "columnConfig" : { },
  "globalConfig" : { }
}

image-20230909232555754

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中央空调冷却塔循环水全自动加药装置PH电导率设备工作原理动画

一&#xff1a;全自动加药装置【概述】 随着在给水、排水处理过程中&#xff0c;常常投加各类化学药剂作为阻垢、杀菌灭藻、混凝、絮凝用&#xff0c;以达到净化水的目的。这些药剂有固体颗粒、液体&#xff0c;在投加过程中必须溶解、稀释及按配比定量投加方能取得最佳效果&am…

【SpringBoot快速入门】(2)SpringBoot的配置文件与配置方式详细讲解

之前我们已经学习的Spring、SpringMVC、Mabatis、Maven&#xff0c;详细讲解了Spring、SpringMVC、Mabatis整合SSM的方案和案例&#xff0c;上一节我们学习了SpringBoot的开发步骤、工程构建方法以及工程的快速启动&#xff0c;从这一节开始&#xff0c;我们开始学习SpringBoot…

Leetcode 45 跳跃游戏 II

题意理解&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。 还是从初始坐标i0的位置到达最后一个元素&#xff0c;但是问题不是能不能跳到&#xff0c;而是最少几步能跳到最后一个元素。 目标&…

鼠标响应突然不灵敏的检查方法

鼠标突然响应缓慢或者失灵&#xff0c;如下检测步骤&#xff1a; 1、首先排查电源问题&#xff0c;更换电池或者充电&#xff1b; 2、观察光标移动响应、鼠标左键响应、鼠标右键响应、鼠标滚轮等操作&#xff0c;哪些正常&#xff0c;哪些异常。 2、把鼠标接到别的机器上实验…

对Ubuntu20.04.2 mate 桌面 Brisk menu 组件的配置

Brisk Menu 让菜单在 mate 桌面上灵活布局&#xff0c; 那个会跳动的精灵还是挺不错的&#xff0c;适当处理后就得到了下面干净利索的桌面。 Ubuntu 安装时&#xff0c;在控制中心留有 plank reference 设置功能&#xff0c;让屏幕中底部的这些组件在不同位置摆放。当进行配置时…

算法分析与设计课后练习29

给定集合S{3, 7, 5, 9}, C 20, 近似参数 ε0.2&#xff0c; 写出 近似算法求解子集和问题的过程。

(备战2024)三天吃透Java面试八股文,面试通过率高达90%

什么样的求职者能够获得面试官的青睐&#xff1f;求职者需要准备哪些内容来面对形形色色的面试官&#xff1f;这两份资料是我在几十场面试中被面试官问到的问题&#xff0c;比其他复制粘贴的面试题强一百倍&#xff0c;堪称全网最强&#xff08;我不太喜欢“全网最强”这样的字…

回顾丨2023 SpeechHome 第三届语音技术研讨会

下面是整体会议的内容回顾&#xff1a; 18日线上直播回顾 18日上午9:30&#xff0c;AISHELL & SpeechHome CEO卜辉宣布研讨会开始&#xff0c;并简要介绍本次研讨会的筹备情况以及报告内容。随后&#xff0c;CCF语音对话与听觉专委会副主任、清华大学教授郑方&#xff0c…

《PySpark大数据分析实战》-16.云服务模式Databricks介绍运行案例

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

node.js mongoose aggregate

目录 官方文档 简述 Aggregate的原型方法 aggregate进行操作 官方文档 Mongoose v8.0.3: Aggregate 简述 在 Mongoose 中&#xff0c;Aggregate 是用于执行 MongoDB 聚合操作的类。MongoDB 聚合操作是一种强大的数据处理工具&#xff0c;可以用于对集合中的文档进行变换和…

0基础学java-day21(网络编程)

一、网络的相关概念 1 网络通信 2 网络 3 ip 地址 4.ipv4 地址分类 5.域名 6 网络通信协议 7.网络通信协议 8.TCP 和 UDP 二、InetAddress 类 &Socket 1 相关方法 package com.hspedu.api;import java.net.InetAddress; import java.net.UnknownHostException;/*** …

系列二十八、如何在Oracle官网下载JDK的api文档

一、官网下载JDK的api文档 1.1、官网地址 https://www.oracle.com/java/technologies/javase-jdk21-doc-downloads.html 1.2、我分享的api.chm 链接&#xff1a;https://pan.baidu.com/s/1Bf55Fz-eMTErmQDtZZcewQ?pwdyyds 提取码&#xff1a;yyds 1.3、参考 https://ww…

STM32Fxx HAL库开发UART中断回调函数理解-中断回调函数流程-自己理解的

STM32HAL库中断服务函数调用过程有2种 第1种&#xff1a;可以直接在中断源对应的中断服务函数中编写我们想要的功能 具体是在void USART1_IRQHandler(void&#xff09;函数写要执行的任务 正点原子是重新宏定义函数名&#xff0c;写法如下&#xff1a; 暂时忽略&#xff0c;…

代码随想录算法训练营第二十二天 | 搜索树添加、删除元素

目录 力扣题目 力扣题目记录 235. 二叉搜索树的最近公共祖先 总结 701.二叉搜索树中的插入操作 总结 450.删除二叉搜索树中的节点 普通二叉树的删除方式 总结 总结 力扣题目 用时&#xff1a;2h 1、235. 二叉搜索树的最近公共祖先 2、701.二叉搜索树中的插入操作 …

黑马头条--day06文章上下架--kafka消息队列

目录 一.自媒体文章上下架 二.kafka概述 1.消息中间件对比 2.kafka介绍 3.kafka安装配置 三.kafaka入门 &#xff08;1&#xff09;创建kafka-demo项目&#xff0c;导入依赖 &#xff08;2&#xff09;生产者发送消息 &#xff08;3&#xff09;消费者接收消息 总结…

【精简】mysql创建自定义函数 sql写法举例

一&#xff0c;举例的sql是查询 某个时间点某个币种的汇率 create function get_rate(idate date,CURRENCY varchar(32)) returns decimal(21,6) begin declare res decimal(21,6) default 1;selec rate into resfromt_exchangerate tewhere ratedate idateand CURRENCYID C…

听GPT 讲Rust源代码--src/tools(15)

File: rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs文件的作用是实现了一个能够将输入的文本映射为标记的结构。具体来说&#xff0c;它定义和实现了几个结构体&#xff08…

第一节TypeScript 安装

一、TypeScript 安装 前提条件&#xff1a;我们环境中已经配置npm环境。 1、使用npm安装TypeScript 首先查看你本地是否已安装npm。打开cmd -> 输入“npm -v” 回车&#xff0c;查看输出的npm版本 上述输出代码你本地环境已经安装了npm工具&#xff0c;可以使用以下命令来…

【新版HI3559AV100开发注意事项(二)】

#新版HI3559AV100开发注意事项&#xff08;二&#xff09; 十一、请问海思HI3559AV100 SPC030资料里面的HI3559ADMEB_VER_C_PCB.pcb是用什么软件打开啊&#xff1f; 答&#xff1a;PADS VX 2.2 Altium designer 十二、hi3559级联问题请教 在SDK的文档中只看到了两块Hi3559板…

远程多窗口和Screen用法

Termius 远程链接服务器终端时&#xff0c;经常遇到需要开多个窗口&#xff0c;另外还可能涉及到正在运行的程序一旦和服务器链接断开&#xff0c;那么程序也就停止执行了。对于单单只需要多个窗口的问题&#xff0c;建议下载一个Termius这样软件&#xff0c;比多次打开…