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

什么软件可以做动画/站长工具seo综合查询工具

什么软件可以做动画,站长工具seo综合查询工具,成都专业网站制作多少钱,怎样做网站卖东西 自己有货文章目录 Mybatis Plus简介快速整合1,导入依赖2,yml文件中配置信息3,启动类上加上扫描mapper接口所在包的注解4,编写配置类5,实现自动注入通用字段接口(非必需)6,编写生成器工具类 使…

文章目录

  • Mybatis Plus简介
  • 快速整合
    • 1,导入依赖
    • 2,yml文件中配置信息
    • 3,启动类上加上扫描mapper接口所在包的注解
    • 4,编写配置类
    • 5,实现自动注入通用字段接口(非必需)
    • 6,编写生成器工具类
  • 使用方法API
    • 1,新增操作
    • 2,修改操作
    • 3,查询操作
      • 3,1 多条件查询
      • 3.2 排序
      • 3.3 分组
      • 3.4 分页
    • 4,删除操作

Mybatis Plus简介

MyBatisPlus是基于MyaBatis框架基础上开发的增强型工具,旨在简化开发,提高效率

MyBatis Plus特性:

特性说明
无入侵做增强不做改变,不会对现有工程产生影响
损耗小启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的CRUD操作内置通用Mapper,少量配置即可实现单表CRUD操作
支持Lambda编写查询条件无序担心字段错误
内置分页插件方便高效
支持主键自动生成支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置完美解决主键问题
支持自定义全局通用操作支持全局通用方法注入
内置性能分析插件可输出 Sql 语句及其执行时间,建议开发测试时启用该功能,能快速定位慢查询

快速整合

总结需要做的步骤,不拖拉

1,导入依赖
2,yml文件中配置信息
3,启动类上加上扫描mapper接口所在包的注解
4,编写配置类
5,实现自动注入通用字段接口(非必需)
6,编写Mybatis Plus的controller、service、entity、mapper、xml的生成器工具类

1,导入依赖

        <!--mybatis plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!--mybatis plus生成器依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>${mybatis-plus.version}</version></dependency><!--velocity模版依赖--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>${velocity.version}</version><exclusions><exclusion><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId></exclusion></exclusions></dependency>

2,yml文件中配置信息

mybatis-plus:# entity包路径,自行修改typeAliasesPackage: com.tunda.openai.model.entity# enum包路径,自行修改typeEnumsPackage: com.tunda.openai.common.enumsglobal-config:db-config:db-column-underline: true# 逻辑删及设置默认值(deleted字段是数据库自定义字段)logic-delete-field: deletedlogic-not-delete-value: 0logic-delete-value: 1configuration:mapUnderscoreToCamelCase: true# log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #开启sql日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台 打印sqldefault-enum-type-handler: com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler

3,启动类上加上扫描mapper接口所在包的注解

@SpringBootApplication
@MapperScan(basePackages ="com.tunda.openai.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class,args);}
}

4,编写配置类

@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();PaginationInnerInterceptor pii = new PaginationInnerInterceptor();pii.setDbType(DbType.MYSQL);pii.setMaxLimit(500L);interceptor.addInnerInterceptor(pii);return interceptor;}@Beanpublic ConfigurationCustomizer configurationCustomizer() {return configuration -> configuration.setUseDeprecatedExecutor(false);}
}

5,实现自动注入通用字段接口(非必需)

@Component
public class MybatisMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {insertOrUpdateFill(metaObject, true);}@Overridepublic void updateFill(MetaObject metaObject) {insertOrUpdateFill(metaObject, false);}private void insertOrUpdateFill(MetaObject metaObject, boolean isInsert) {if (isInsert) {if (Objects.isNull(getFieldValByName("createTime",metaObject)))this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);this.setFieldValByName("deleted", 0, metaObject);} else {if (Objects.isNull(getFieldValByName("updateTime",metaObject)))this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);}}
}

6,编写生成器工具类

具体说明:传送门->https://blog.csdn.net/qq_45399396/article/details/123986811

public class MybatisPlusGenerator {//生成文件所在项目路径private static String baseProjectPath = "D:\\generatorCode";//基本包名private static String basePackage = "com.tunda.openai";//作者(一般公司名简称)private static String authorName = "tunda";//要生成的表名,为空时生成所有表private static String[] tables = {"t_goods_info"};//table前缀private static String prefix = "";//数据库配置四要素private static String driverName = "com.mysql.jdbc.Driver";private static String url = "jdbc:mysql://129.139.254.38:3306/tunsdda_gpt?serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL&useUnicode=true&characterEncoding=utf-8&useSSL=false";private static String username = "root";private static String password = "root";public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 1、全局配置GlobalConfig gc = new GlobalConfig();//可以将生成得代码单独放在文件夹里,检查完没问题在手动将包复制到项目中gc.setOutputDir(baseProjectPath);gc.setAuthor(authorName);// 生成实体类的文档注解中作者名gc.setOpen(true);// 生成代码后自动打开生成目录文件gc.setFileOverride(true); // 是否覆盖原来生成的gc.setIdType(IdType.AUTO);// 指定生成的主键类型:自增长gc.setDateType(DateType.ONLY_DATE);gc.setActiveRecord(false);mpg.setGlobalConfig(gc);// 2、数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl(url);dsc.setDriverName(driverName);dsc.setUsername(username);dsc.setPassword(password);dsc.setDbType(DbType.MYSQL); // mysql数据库gc.setServiceName("%sService"); //去掉Service接口的首字母'I'dsc.setTypeConvert(new MySqlTypeConvert() {@Overridepublic IColumnType processTypeConvert(GlobalConfig globalConfig, TableField tableField) {return super.processTypeConvert(globalConfig, tableField);}});mpg.setDataSource(dsc);// 3、包配置PackageConfig pc = new PackageConfig();pc.setModuleName(null)// 生成的controller路径映射为一个"/",覆盖默认的"//".setParent(basePackage)// 生成controller,service,xml并设置路径。.setEntity("entity").setMapper("mapper").setService("service").setServiceImpl("service.impl").setController("controller");mpg.setPackageInfo(pc);// 5、策略配置StrategyConfig strategy = new StrategyConfig();strategy.setCapitalMode(true);// 开启全局大写命名strategy.setNaming(NamingStrategy.underline_to_camel);// 实体类名驼峰strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 属性名驼峰strategy.setInclude(tables);// 设置要映射的表名注解@Tablestrategy.setSuperEntityClass(BaseEntity.class); // 预先定义一个BaseEntity类实现Serializable接口strategy.setEntityLombokModel(true); // 使用 lombokstrategy.setRestControllerStyle(true);// 开启 restful风格strategy.setEntityTableFieldAnnotationEnable(false);// 不生成实体类字段swagger类型注解,而是采用文档类型注解:/**xxx*/if (prefix != null) strategy.setTablePrefix(prefix);  // 表前缀if (ArrayUtils.isNotEmpty(tables)) strategy.setInclude(tables);  // 表名// 6、自动填充配置:非必须(自动加上注解)TableFill createTime = new TableFill("create_time", FieldFill.INSERT);TableFill updateTime = new TableFill("update_time", FieldFill.UPDATE);ArrayList<TableFill> tableFills = new ArrayList<>();tableFills.add(createTime);tableFills.add(updateTime);strategy.setTableFillList(tableFills);strategy.setLogicDeleteFieldName("deleted");// 自动加上逻辑删注解mpg.setStrategy(strategy);mpg.setTemplateEngine(new VelocityTemplateEngine());// 执行生成器mpg.execute();}}

注意事项:生成的代码当中,entiry实体类需要注意一下@EqualsAndHashCode,生成的时候,@EqualsAndHashCode(callSuper = true)。
但是大多数情况下,@EqualsAndHashCode(callSuper = false) 或者直接去掉这个注解也可以,所以这个的生成器生成的这个注解需要手动修改一下(改为false或者直接去掉这个注解)

到此为止,Springboot整合Mybatis Plus结束,接下来就是注意事项

1,问题一:mybatis-plus中@TableField.fill设置为FieldFill.UPDATE不生效

要想实现自动注入字段属性,必需实现第5步骤,也就是实现MetaObjectHandler接口,
其次,这种不生效的也存在两个注意的场景
场景一:使用原生sql语句,则注入字段属性不生效
场景二:使用update()方法时,需要调用两个参数的重载方法才有效,就这里需要注意一下。

使用方法API

1,新增操作

这里的this表示的是在service的实现类对象

this.saveOrUpdate(tGoodsInfo);

2,修改操作

在这里插入图片描述

通过Wappers的Lambda表达式来构造where后面的条件

在这里插入图片描述

3,查询操作

Mybatis Plus封装了丰富的查询操作api,尤其是单表操作的API,相比于SpringJPA来说,好处多多。

3,1 多条件查询

在这里插入图片描述
.
在这里插入图片描述
.
在这里插入图片描述
完整的示例如下:
在这里插入图片描述

3.2 排序

在这里插入图片描述

完整的示例如下:在这里插入图片描述

3.3 分组

在这里插入图片描述
完整的示例如下:
在这里插入图片描述

3.4 分页

在这里插入图片描述

在这里插入图片描述

完整的示例如下:
在这里插入图片描述

4,删除操作

在这里插入图片描述

相关文章:

Springboot整合Mybatis Plus【超详细】

文章目录 Mybatis Plus简介快速整合1&#xff0c;导入依赖2&#xff0c;yml文件中配置信息3&#xff0c;启动类上加上扫描mapper接口所在包的注解4&#xff0c;编写配置类5&#xff0c;实现自动注入通用字段接口&#xff08;非必需&#xff09;6&#xff0c;编写生成器工具类 使…...

接口测试-使用mock生产随机数据

在做接口测试的时候&#xff0c;有的接口需要进行大量的数据进行测试&#xff0c;还不能是重复的数据&#xff0c;这个时候就需要随机生产数据进行测试了。这里教导大家使用mock.js生成各种随机数据。 一、什么是mock.js mock.js是用于生成随*机数据&#xff0c;拦截 Ajax 请…...

Kohl‘s百货的EDI需求详解

Kohls是一家美国的连锁百货公司&#xff0c;成立于1962年&#xff0c;总部位于美国威斯康星州的门多西。该公司经营各种商品&#xff0c;包括服装、鞋子、家居用品、电子产品、化妆品等&#xff0c;并拥有超过1,100家门店&#xff0c;分布在美国各地。本文将为大家介绍Kohls的E…...

二叉树part6 | ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

文章目录 654.最大二叉树思路代码 617.合并二叉树思路代码 700.二叉搜索树中的搜索思路代码 98.验证二叉搜索树思路官方题解代码困难 今日收获 654.最大二叉树 思路 前序遍历构造二叉树。 找出数组中最大值&#xff0c;然后递归处理左右子数组。 时间复杂度On2 空间复杂度On …...

Linux命令记录

Shells 查看当前系统shell cat /etc/shells # 输出 # /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash查看正在使用的shell echo $SHELL # 输出 /bin/bashLinux文件结构 bin&#xff1a;系统可执行文件b…...

eBPF 入门实践教程十五:使用 USDT 捕获用户态 Java GC 事件耗时

eBPF (扩展的伯克利数据包过滤器) 是一项强大的网络和性能分析工具&#xff0c;被广泛应用在 Linux 内核上。eBPF 使得开发者能够动态地加载、更新和运行用户定义的代码&#xff0c;而无需重启内核或更改内核源代码。这个特性使得 eBPF 能够提供极高的灵活性和性能&#xff0c;…...

Linux :: vim 编辑器的初次体验:三种 vim 常用模式 及 使用:打开编辑、退出保存关闭vim

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 目录索引&am…...

Linux内核进程创建流程

本文代码基于Linux5.10 内容主要参考《Linux内核深度解析》余华兵 当Linux内核要创建一个新进程时&#xff0c; 流程大致如下 ret fork(); if (ret 0) {/* 子进程装载程序 */ret execve(filename, argv, envp); } else if (ret > 0) {/* 父进程 */ } 大致可以分为创建新…...

【03.04】大数据教程--HTTP协议和静态Web服务器

HTTP协议和静态Web服务器 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种用于传输超文本的协议&#xff0c;它是Web上的基础通信协议。静态Web服务器是指能够提供静态内容&#xff08;如HTML、CSS、JavaScript和图像文件&#xff09;的服务器。 在本教程中&am…...

数据共享传输:台式机和笔记本同步文件!

为什么要在台式机和笔记本同步文件&#xff1f; “我想在台式机和笔记本同步文件。因为我工作时使用笔记本&#xff0c;在家里使用安装了Windows 10系统的台式机&#xff0c;我想要在笔记本和台式机之间同步应用程序、游戏、文档等。有没有一种可以在台式机和笔记本同步文件的…...

java设计模式(十二)代理模式

目录 定义模式结构角色职责代码实现静态代理动态代理jdk动态代理cglib代理 适用场景优缺点 定义 代理模式给某一个对象提供一个代理对象&#xff0c;并由代理对象控制对原对象的引用。说简单点&#xff0c;代理模式就是设置一个中间代理来控制访问原目标对象&#xff0c;以达到…...

Umi微前端水印踩坑以及解决方案

最近公司需要在管理后台加一个水印方案~ 项目用的umi方案,以为就是改一个配置的问题,后来发现坑点还蛮多~ 希望此稳定能帮助到用umi 的你们. 一. 先来说说心路历程 坑点1 umi的水印适配只能在layout中进行配置,也就是路由配置中layout为false的页面无法配置水印,比如说登录页…...

Android RK3588-12 hdmi-in Camera方式支持NV24格式

hdmi-in Camera方式支持NV24格式 modified: hardware/interfaces/camera/device/3.4/default/ExternalCameraDevice.cpp modified: hardware/interfaces/camera/device/3.4/default/ExternalCameraDeviceSession.cpp diff --git a/hardware/interfaces/camera/device/3.4…...

Hive窗口函数详细介绍

文章目录 Hive窗口函数概述样本数据表结构表数据 窗口函数窗口聚合函数count()SQL演示 sum()SQL演示 avg()SQL演示 min()SQL演示 max()SQL演示 窗口分析函数first_value() 取开窗第一个值应用场景SQL演示 last_value()取开窗最后一个值应用场景SQL演示 lag(col, n, default_val…...

牛客网【c语言练习】

单选题 下面代码段的输出是&#xff08;-12 &#xff09; int main() {int a3; printf("%d\n",(aa-a*a)); } aa-9&#xff0c;此时还是等于3&#xff0c;因为a*a只是运算&#xff0c;并没有赋值&#xff1b;之后再算a-9&#xff0c;运算之前a等于3&#xff0c;运算…...

C++类和对象(上)

文章目录 &#x1f98d;1. 面向过程和面向对象&#x1f9a7;2. 类的引入&#x1f436;3. 类的定义&#x1f9ae;4. 类的访问控制和封装&#x1f356;4.1 访问限定符&#x1f356;4.2 封装 &#x1f429;5. 类的作用域&#x1f405;6. 类的实例化&#x1f404;7. 类的大小计算&a…...

JavaScript 数据透视表 DHTMLX Pivot Crack

DHTMLX Pivot JavaScript 数据透视表 - 强大的数据汇总和报告 使用我们的高速 JavaScript/HTML5 Pivot 组件可视化您的复杂数据&#xff0c;从而提高您的商业智能。 它可以帮助您以方便的方式汇总大型数据集。 主要特征 纯 JavaScript 库&#xff0c;可轻松与任何服务器端集成…...

QT链接库设置

以windows 平台为例&#xff0c;在.pro 文件中&#xff1a; 1 增加 INCLUDEPATH <头文件路径> DEPENDPATH <头文件路径> 2 LIBS -L<库目录路径> -l<库得名字> 3 设置MT、MTD、MD、MDD运行时库 win32:CONFIG(debug, debug|release): { QMAKE_CFLAGS_…...

零点起飞学Android——期末考试课本复习重点

目录 第一章 认识Android第二章 Android常见界面布局第三章 Android常用基本控件第四章 Android 高级控件第五章 Android菜单和对话框 第一章 认识Android 1. Android 界面设计被称为______。 答案&#xff1a;布局 2. Android中常见的布局包括______、______ 、______ 、____…...

Redis为什么快?

目录 Redis为什么快&#xff1f;渐进式ReHash全局哈希表渐进式ReHash 缓存时间戳 Redis为什么快&#xff1f; 纯内存访问&#xff1b; 单线程避免上下文切换&#xff1b; 渐进式ReHash、缓存时间戳&#xff1b; 前面两个都比较好理解&#xff0c;下面我们主要来说下 渐进式…...

Zabbix从入门到精通以及案例实操系列

1、Zabbix入门 1.1、Zabbix概述 Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制&#xff0c;允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据&#xff0c;Zabbix提供了出色的报告和…...

水声声波频率如何划分?水声功率放大器可将频率放大到20MHz吗?

水声声波频率如何划分&#xff1f;水声功率放大器可将频率放大到20MHz吗&#xff1f; 现如今我们可以在地球任意地区实现通信&#xff0c;是因为电磁波的作用。但是我们都知道海洋占了全球十分之七面积&#xff0c;电磁波在水下衰减速度太快&#xff0c;无法做到远距离传输&am…...

网络攻防技术--论文阅读--《基于自动数据分割和注意力LSTM-CNN的准周期时间序列异常检测》

英文题目&#xff1a;Anomaly Detection in Quasi-Periodic Time Series based on Automatic Data Segmentation and Attentional LSTM-CNN 论文地址&#xff1a;Anomaly Detection in Quasi-Periodic Time Series Based on Automatic Data Segmentation and Attentional LST…...

C++ 学习 ::【基础篇:08】:C++ 中 struct 结构体的认识【面试考点:C 与 C++ 中结构体的区别】

本系列 C 相关文章 仅为笔者学习笔记记录&#xff0c;用自己的理解记录学习&#xff01;C 学习系列将分为三个阶段&#xff1a;基础篇、STL 篇、高阶数据结构与算法篇&#xff0c;相关重点内容如下&#xff1a; 基础篇&#xff1a;类与对象&#xff08;涉及C的三大特性等&#…...

Electron开发:打包和发布 Electron 应用

https://start.spring.io/ 在线数据分析网站 https://tj.aldwx.com/ https://www.spsspro.com/ win10如何分屏 拖到边缘 Electron 环境搭建 https://www.electronjs.org/zh/docs/latest/tutorial/%E6%89%93%E5%8C%85%E6%95%99%E7%A8%8B electron 隐藏菜单 electron 标题栏 设…...

【每日一题Day222】LC1110删点成林 | dfs后序

删点成林【LC1110】 给出二叉树的根节点 root&#xff0c;树上每个节点都有一个不同的值。 如果节点值在 to_delete 中出现&#xff0c;我们就把该节点从树上删去&#xff0c;最后得到一个森林&#xff08;一些不相交的树构成的集合&#xff09;。 返回森林中的每棵树。你可以按…...

[ChatGPT] 从 GPT-3.5 到 GPT-5 的进化之路 | ChatGPT和程序员 : 协作 or 取代

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&#xff0c;一同进步&#x1f601;…...

6.4 GDP调试多进程程序

目录 GDB调试多进程程序 安装gdb gdb编译 运行gdb 单步运行 从头到尾运行 下一步 运行子进程 同时运行父进程 查看运行的进程 切换进程 退出 GDB调试多进程程序 set follow-fork-mode child 设置GDB调试子进程 set follow-fork-mode parent 设置GDB调试父进…...

TDengine 时序数据的保留策略

“TDengine除vnode分片之外&#xff0c;还对时序数据按照时间段进行分区。每个数据文件只包含一个时间段的时序数据&#xff0c;时间段的长度由DB的配置参数days决定。这种按时间段分区的方法还便于高效实现数据的保留策略&#xff0c;只要数据文件超过规定的天数&#xff08;系…...

Java-多线程解析1

一、线程的描述&#xff1a; 1、线程是一个应用程序进程中不同的执行路径比例如&#xff1a;一个WEB服务器&#xff0c;能够为多个用户同时提供请求服务&#xff1b;而 -> 进程是操作系统中正在执行的不同的应用程序,比如&#xff1a;我们可以同时打开系统的word和游戏 2、多…...