![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mysql&Mybatis高效语法
文章平均质量分 55
数据库相关高效语法、函数、Mybatis相关
studyday1
多总结,多思考,多批判,多学习
展开
-
对比 MyBatis 和 MyBatis-Plus 批量插入、批量更新的性能和区别
https://www.cnblogs.com/SihanLin/p/17681811.html原创 2024-03-16 16:32:07 · 590 阅读 · 0 评论 -
SQL优化到业务层优化整体思路
多表联查优化_sql 多表关联优化-CSDN博客原创 2024-03-15 20:20:54 · 166 阅读 · 0 评论 -
【业务功能篇134】Mysql 连接池HikariCP配置
其中,connection-timeout是连接超时时间,idle-timeout是空闲连接池的超时时间,pool-size是连接池的大小,minimum-idle是连接池中最小的空闲连接数,maximum-pool-size是连接池中最大的连接数,transaction-isolation是事务隔离级别。这意味着在同一时间点,最多可以有10个连接可供使用。其中,url是数据库连接的URL,username和password是登录数据库的用户名和密码,driver-class-name是数据库驱动的类名。原创 2024-01-24 20:10:03 · 868 阅读 · 0 评论 -
【业务功能篇133】 Mysql连接串优化性能问题
可以获得许多优点,从而提高数据库插入性能、减轻负载以及简化代码。MyBatis Plus框架自带的批处理方法 可以直接调用使用,但是要注意mysql连接串要配置参数为true 否则这个性能还是不会起来。1.可以在sql语句后携带分号,实现多语句执行。是一种高效的数据库操作方式。原创 2024-01-24 20:05:50 · 457 阅读 · 0 评论 -
【业务功能篇103】微服务下全局唯一分布式id生成器
【代码】【业务功能篇103】微服务下全局唯一分布式id生成器。原创 2023-09-11 16:25:42 · 177 阅读 · 0 评论 -
【业务功能篇102】springboot+mybatisPlus分页查询,统一返回封装规范
分页查询原创 2023-09-08 11:08:55 · 1041 阅读 · 0 评论 -
【业务功能篇67】异构数据源表结构迁移
业务涉及到需要将数据库迁移,并且还换了不同厂商的,比如Oracle 迁移到 Mysql,原创 2023-08-17 11:55:43 · 280 阅读 · 0 评论 -
【业务功能篇65】maven加速 配置settings.xml文件 镜像
【代码】【业务功能篇64】maven加速 配置settings.xml文件 镜像。原创 2023-08-16 18:27:07 · 831 阅读 · 0 评论 -
【业务功能篇64】安装docker容器,在docker上安装mysql
yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。daemon-reload: 重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载。在新主机首次安装 Docker Engine-Community之前,需要设置Docker仓库,之后,您可以从仓库安装和更新 Docker。原创 2023-08-16 18:25:31 · 423 阅读 · 0 评论 -
【业务功能篇52】Springboot+mybatis mysql开启批量执行sql参数 allowMultiQueries=true
在application-xxx.xml配置文件中,配置数据库的信息。原创 2023-07-26 11:41:42 · 5040 阅读 · 0 评论 -
【业务功能篇44】Mysql 海量数据查询优化,进行分区操作
b列进行range分区,又进行了一次hash分区,分区的数量是(3 x 2 = 6)原创 2023-07-14 09:59:17 · 354 阅读 · 0 评论 -
【业务功能篇43】Mysql 索引 索引失效
索引失效的10种场景,你知道几个呢?(必知五颗星)_索引失效的几种情况_only-qi的博客-CSDN博客explain | 索引优化的这把绝世好剑,你真的会用吗?原创 2023-07-10 18:22:51 · 243 阅读 · 0 评论 -
【业务功能篇26】 ROW_NUMBER() 排名函数 给表单数据增加序列号
业务场景: 当业务在进行月报报表制作时,会有些模块是需要填充当前月的top问题单,那么这些问题单,在第一列就要给标记序列号从1开始的序号,所以这个序号是根据业务选择的问题单后,在根据当前问题单记录进行的序列号填充,比如有3条 那么就是1,2,3,如果业务要换问题单,那么进行替换,但是对应的这个序列依旧是从1开始排序的所以这种情况下,序号和问题单是没有关联的,那么如何去给这一部分展示的top问题单增加序列号呢?可以使用 row_number()函数。原创 2023-06-15 13:27:34 · 887 阅读 · 0 评论 -
【业务功能篇25】case when的运用
业务场景: 当前有一个业务问题表,表中有很多字段,比如问题描述,发生时间,提交人等等,其中有个字段 提交人,展示的内容是提交人的id,而不是展示真实的提交人信息,而存放用户信息在另一张user表中,可以通过uuid 找到user_name真实的用户信息。then ....(符合前面的补充条件后,那么这里就是赋的值,通过user表查user_name 匹配表中的UID=其字段值,从而找到对应的用户信息名称赋值)所以这里我们需要用case when 来判断需要转换的字段。原创 2023-06-14 19:45:27 · 69 阅读 · 0 评论 -
【业务功能篇15】MybatisPlus QueryWrapper用法
表示我们业务表对应的实体类MtProductionProblemWarn 有个预警时间字段WARN_DATE,当前系统时间- 表中的预警时间字段+1 ,表示表的预警时间 已经超过了多少天,to_days是一个函数转换日期有多少天, 判断如果表中预警时间大于等于 7天 ,过滤出来。在我们编写一些数据处理的sql时大大的提高效率,前面我们已经知道,mybatisPlus框架是内置提供了许多CRUD接口方法,简单的查询语句都是可以直接调用的,第一个参数 这里写了一串条件语句,也是适用的。原创 2023-06-06 12:09:54 · 276 阅读 · 0 评论 -
【业务功能篇13】mysql CONVERT 类型转换
业务场景:当前有一个表单信息表,其中有一个问题单号,单号是由一些固定的字符+当前系统时间+数字规则组成的,比如 pw2023060300001, pw2023060300002,每天会生成一定的单据,为了避免重复,一般设计单号都有很多种方式,其中就是需要加上当前系统时间,然后后缀就从1开始,由于不确定会生成多少单据,我们给了 数字是五位数,一般的业务需求应该是足够的了。中将一种类型转换为另一种类型,例如 CONVERT('1', unsigned) 将varchar类型转换为正数类型。原创 2023-06-03 09:14:59 · 301 阅读 · 0 评论 -
【业务功能篇12】mysql help_topic_id 将逗号拼接的字段,拆分成多条数据进行显示
可以利用mysql内置的表help_topic,存在一个help_topic_id 主键字段,从0开始到685,利用这么多个值,来进行遍历分割逗号拼接的问题单号串。业务场景: 表中某个字段,表示问题单号,可能会存在多个问题单号,通过逗号进行拼接,比如 no0001,no0002,no0003 组成一个字段内容,那么我们就会存在一个这样的需求,需要将每个单号都取出来,用于后续的判断。题外话: DATE_SUB( CURRENT_DATE, INTERVAL 1 MONTH ) 是取当前系统前一个月。原创 2023-06-01 17:41:21 · 1117 阅读 · 1 评论 -
【业务功能篇11】excel表格通过 CONCATENATE函数技巧拼接字段批量高效生成表格数据的insert语句
业务场景:拿到一个表格数据,一般我们会通过navicat的终端数据库工具,直接表格导入,但是存在一些字段,比如创建时间,这个是需要通过函数实时获取,总不能自己手写一个时间再放进去,手段稍微就弱了点,当然我们也会开发相应的导入功能,但如果临时没有导入功能前端无法实现,那么就只能后台导入,手写insert语句,依次把表格多条记录数据导入。所以用到excel的函数语法,进行字符串内容的拼接,将sql语句,以及对应的每个字段列单元格进行拼接,写完第一条之后,下面的直接下拉全部就都生成了。原创 2023-06-01 15:23:07 · 912 阅读 · 0 评论 -
【业务功能篇10】Mysql 排名函数:row_number() over(partition by)的用法说明
比如,业务有个产品编码表,其中有父编码列,子编码列,一个父编码会对应多个子编码,比如父编码为 a1, 组成的子编码有多个为 suba1,suba2.. 对应多条数据,而且这里也会存在不同的父编码,其包含相同的子编码,也就是说不同的产品用了相同的子模块,那么我们想看看每个子模块,分别都被多少个父编码使用,并且按相应顺序显示,这么就可以利用排名函数,对子模块进行分区,这样就可以得到,如果一个子编码有对应多个父编码的记录,那么就是会有相应的展示其记录并且有编号按序展示。下面举个例子,比如有学生,课程 , 分数。原创 2023-06-01 14:48:36 · 6429 阅读 · 0 评论 -
【业务功能篇07】Mysql 模糊查询
业务场景:我们对不同的业务逻辑进行数据处理时,多数是离不开需要模糊匹配的时候,比如要获取该表某个字段中,含有某个具体的字符内容,过滤出业务想要的数据。原创 2023-05-31 12:07:13 · 4972 阅读 · 0 评论 -
【业务功能篇09】Springboot多环境多数据源的配置、DS注解失效解决方案
我们在 application.yml 应用配置文件中 通过spring.profiles.active:指定环境,从而去应用对应的一个环境的配置文件 application-xxx.yml。application-xxx.yml,这样在我们的app配置文件就可以指定后缀这个值xxx就表示要运行哪个环境的配置,一般不同环境,就是分数据库不同 测试和生产的数据库各一套进行验证。原创 2023-05-26 18:35:42 · 430 阅读 · 0 评论 -
Mysql:函数与存储过程对比
存储过程可以看成是对一系列 SQL 操作的批处理。是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行(Call 存储过程名称(params)),而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。命令行中创建存储过程需要自定义分隔符,因为命令行是以;原创 2022-11-25 12:09:02 · 625 阅读 · 0 评论 -
Mysql:max函数参数为字符类型需要通过CAST函数转换为数值型
数据库中的经常会用到要过滤某个列的最值数据,比如,取数量最大的值,取时间最早的值等等,下面我们就来看看如何运用这个最值函数,特别注意,max函数或者min函数,参数都支持字符类型,这里就会有些坑存在,下面来实例描述下。原创 2022-11-17 16:58:25 · 1930 阅读 · 0 评论 -
Mysql: count()常用方法
COUNT()原创 2022-11-14 17:01:49 · 6900 阅读 · 0 评论 -
Mysql自定义排序field()函数
业务场景中有需要排序需求,一般都是升序降序,但目前有一个柱状图数据,从左往右的的坐标轴名称排序需要按照业务自定义的顺序来展示,并非升降序了,此时则可以使用field()函数进行排序。原创 2022-11-10 18:12:51 · 290 阅读 · 0 评论 -
实现mysql全连接的方法
mysql需要我们自己来组合方法达到全连接的效果,这里可以留意下。也就是两个表数据全都要,但相同的部分呢,会只取一次,不会重复。mysql中居然没有full join。原创 2022-10-28 14:50:29 · 4757 阅读 · 0 评论 -
Springboot连接数据源的连接串相关参数
allowMultiQueries=true作用原创 2022-10-11 15:42:51 · 379 阅读 · 0 评论 -
Mysql表单自增id自定义规则,用LPAD/RPAD就够了
函数将字符串padstr填充到str的左侧,使字符串的长度达到len,然后返回字符串str.如果字符串str的长度大于len,则返回值被缩短至len字符长度。而还有一种是在右侧填充,RPAD()函数,用法同理。原创 2022-09-24 14:59:32 · 1550 阅读 · 0 评论 -
Mysql coalesce函数太好用了 结合case when 更强大
若都为空则为不严重,任意一个非空则为严重,在此我结合了case when 将是否严重存在一个新字段flag,我们用1表示严重,0表示不严重。结合case when,进行对两个参数判断的结果值分别进行赋值给一个新字段flag,这样就能通过该字段值来判断,严重的问题单有哪些。处理业务数据的时候遇到这个场景,相信大家多少也遇到过类似的:对业务的一张质量问题单表中,有两个字段是用来判断问题单的严重情况,需要已经了解了,下面就结合对应的函数来执行,coalesce函数正是可以用来判断非空字符内容的“法宝”。原创 2022-09-23 11:19:13 · 958 阅读 · 0 评论 -
Mysql:concat函数处理业务表单拼接数据
业务场景中有一张问题表单A,记录每个产品编码的质量问题,现需要在这个表中再拼接多一列,产品编码对应的产品系列和产品项目,以 产品系列-产品项目的数据格式展示。该信息存在另外一张编码归属表B中。concat():返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。这样拼接之后,业务就可快速看到产品编码对应的是哪个产品系列与项目。统一在一张表中进行查询。原创 2022-09-21 15:36:32 · 314 阅读 · 0 评论 -
Springboot+Mybatis --interval处理时间范围特殊场景
业务场景存在一种数据时间范围的边界问题,正常情况下,获取22年1月发生的数据,通过表单中的发生时间,取值为date_format(time,"%Y-%m") = '2022-01'进行匹配即可。但现在有个特殊情况,22年1月发生的数据是从21年12月10日到22年1月9,统计数据的实际时间不是整月,所以需要进行处理。INTERVAL关键字可以用于计算时间间隔,根据业务实际需求来判断,天数大于等于10号,则数据会统计到下个月,也就是月份+1,其余情况都是正常在本月。原创 2022-09-21 12:22:12 · 1408 阅读 · 0 评论 -
Springboot实战贴近业务查询表单功能,UNION特例说明
首先我们定义这个表对应的一个VO实体类,属性一一对应表字段,另外这里补充一点,为了方便接口传参,有时也会在实体类中定义不存在的表字段作为传参时使用的属性,比如:我们查询问题单发生时间在22年1月至6月时,一般都是传递{"startDate":"2022-01","endDate":"2022-06"}这种形式,而我们属性中就可用定义这两个属性 private String startDate;另外还有一个子编码归属表B:【父编码,子编码】,"problemDesc" :"严重",Controller层。原创 2022-09-20 17:32:43 · 429 阅读 · 0 评论 -
Mysql--union和union all的区别
在我们实际业务场景中,后端接口在写查询数据sql时,常用到union all并表,下面简单讲下union 与 union all的区别。union all只是合并查询结果,并不会进行去重和排序操作,在没有去重的前提下,使用union all的执行效率要比union高。2、union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;1、union: 对两个结果集进行并集操作, 不包括重复行,2、union all: 不会对获取的结果进行排序操作。原创 2022-09-20 12:10:07 · 1623 阅读 · 0 评论 -
前端页面多个选择器返回api接口的sql查询高效写法
表单查询过滤时,一般前端会有多个Select选择器进行下拉选择进行查询,为了减少接口请求的次数,我一般设计的时候,会尽量把下拉选择器的list数据,都汇总在一个接口,进行返回。另外如果xml返回的是Map,数据有多条情况下,Mapper对应的方法的返回值则需要用List。List中再嵌套List,业务场景中需要注意,有时会报错没有这种参数类型支持。Mapper中的方法返回值,因为数据只有一条所以可以直接返回Map。XML中的返回值就可以定义为Map类型。原创 2022-09-19 19:43:39 · 574 阅读 · 0 评论 -
Mybatis--dao层涉及并表查询sql较高效写法
场景:比如有个父编码总表与子编码表,需要进行并表,将父编码与子编码通过对应的业务逻辑,筛选合并成同一列编码,为了提高一些性能效率,可以用mysql8的新特性 with table as 语法,先定义一个临时表table1,然后拿到过滤后的父子项编码之后,将结果集放到另外一个最终的业务问题单表C 中进行编码匹配,因为表C中,也有该编码字段,筛选出只存在临时表中的编码的问题单数据条目。考虑到我们嵌套的子查询是匹配编码集,会比较耗时,建议使用EXISTS,具体似实际业务数据来判断。原创 2022-09-16 19:32:54 · 521 阅读 · 0 评论 -
Mysql篇-自增id函数nextval运用到Springboot+Mybatis项目
springboot+mybatis项目中,需要获取自增id作为表单数据自增id主键,则可以通过自定义nextval函数来进行调用。其中会涉及到框架中的事务管理,需要在xml写sql时增加flushCache与useCache两个参数的配置。清除缓存,则可取到最后插入的自增id。原创 2022-08-23 09:28:01 · 3663 阅读 · 0 评论