mysql如何使用json便于开发

对于每个新技术的出现,我们在学习的同时都需要思考,他的最佳实践是什么,在mysql的5.7版本中新增了对于json格式的支持,这篇博文就来讲一讲如何利用好这个特性来方便我们的开发服务。不接受抬杠,我知道支持json的有专门的数据库,但是很多现在还是单体开发使用的还是mysql,有时候这些小技能会让我们的开发变得高效和优雅。

一、先说两个业务场景

还是老惯例,以业务场景来驱动,数据库采用 mysql5.7X

1.1 推送设置

大多时候我们为了人性化,会在推送设置里面做很多的推送开关,方便用户关闭这个推送
常规的建表:

id int
user_no int
push_type int
push_value int

这样设计肯定是没有问题的,但是对于前端操排序,以及数据都有冗余,所以可以采用下面的办法:

user_no int
push_setting json

image.png

1.2、sql语句的构建:

1.2.1 查询

  • 查询整个的设置,这个就是普通的查询就不多提了
  • 查询单个的设置,有时候需要这个操作,这个主要是针对json的某一个key的操作,这里是借助字符串的拼串和 $ 来操作的
这里的 settingType  是开关配置常量的内容
settingType = "'$." + settingType + "'";
<select id="getUserGeTuiIdsByFocusId" resultType="java.lang.String">
	select user_push_setting.push_setting->${pushType} from user_push_setting where user_no = #{userNo};
</select>

1.2.2 、更新操作:

  • 具体的更新某一个值
settingType = "'$." + settingType + "'";

 <update id="updatePushSetting">
       update user_push_setting set push_setting =
       json_set(push_setting,${settingType},#{settingValue}) where user_no = #{userNo}
 </update>

上面的有可能你还觉没太有必要这样操作,那么接下来这个应用场景就有很大的必要要使用这个特性了

二、构建操作日志:

这里或许有人说,现在有很多的的日志构建系统,elk呀什么的,还是说明一下这里只针对单体,针对部分简单应用,

具体的场景描述:

用户的交易日志,这些交易分很多中,平仓、开仓、清算,这些日志都得记录,但是具体的详情内容不同,保证金的变动、盈亏、手续费、递延费等每种类型的操作所记录的详情都不一致,这个时候使用json数据格式不是正好的吗,这个地方我们是有用户账户表动记录等的,这个地方的日志是方便为了快速的排查用户数据所做的。

与此相关的还有很多的日志的详情,我们都可以借助这个来完成。目前就介绍到这里吧,具体的需要对于json操作的,可以查阅mysql的函数手册 https://dev.mysql.com/doc/refman/5.7/en/json-functions.html

博客首发地址csdn:https://blog.csdn.net/weixin_42849915
简书地址:https://www.jianshu.com/u/4b48be4cf59f
希望结识更多的乐于分享的伙伴一起前行

原文地址:https://www.cnblogs.com/fkxuexi/p/10674040.html