work-notes

常用命令

数据库备份

ddl + 数据

mysqldump -u<user> -p -h<host> --no-tablespaces  <database>  > dump.sql

仅 ddl

mysqldump -u<user> -p -h<host> --no-tablespaces --opt -d <database>  > dump.sql

仅数据 指定特定表

mysqldump <database> -u<user> -p -h<host> --no-tablespaces  --tables <table1> <table2> <table3>  > dump.sql

mysqldump -u -p -h --no-tablespaces --tables alarm_r_target_alarm_relation alarm_t_alarm_type_config dict_common t_prc_platform_convert > dump.sql

curl -X POST http://10.144.110.7:16789/vdmp/api/sub/subscribe
-H “Content-Type: application/json”
-H “timestamp: 1706670988873”
-H “appKey: w7ns70SC8D”
-H “nonce: b5cb1710732c4568a17db69e9d770df7”
-H “sign: c0a124dd48f0a7e03378b5a8d9a85f4f4a5fd65d2d1e148abcfe8bd11eabeed9”
-d ‘{“eventType”: “zxSuperPlatformStatus”, “notifyUrl”: “http://10.145.152.29:8000/alarm/zte-platform-callback/platform-status”, “networkType”: 1}’

curl -X POST http://10.144.110.7:16789/vdmp/api/sub/subscribe
-H “Content-Type: application/json”
-H “timestamp: 1706671155673”
-H “appKey: uzjtHbiwR8”
-H “nonce: 47b997e20a0b428c8dead73b7c4237d9”
-H “sign: 02ebfd0ac49d41f9827600ca9fd2098731d7439c2b5734f02fc4a386ce8d78cb”
-d ‘{“eventType”: “zxSubPlatformStatus”, “notifyUrl”: “http://10.145.152.29:8000/alarm/zte-platform-callback/platform-status”, “networkType”: 1}’

数据库唯一约束

    constraint `UNIQUE`
        unique (task_name, robot_sn)

常用 mysql 内置函数

mybatis 判断 list 不为空

<if test="queryVO.processTypeList != null and queryVO.processTypeList.size() > 0">
    AND pre.process_type IN
    <foreach collection="queryVO.processTypeList" item="listItem" open="(" close=")" separator="," >
        #{listItem}
    </foreach>
</if>

cron 表达式

设置

mybatis 在 xml 中直接使用枚举

https://blog.csdn.net/MiaoWei_/article/details/116894522

额外:

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" [    
  
<!ENTITY a "${@[email protected]}">
<!ENTITY b "${@[email protected]}">
<!ENTITY c "${@[email protected]}">
]>
<mapper namespace="com.xxxx.ConsoleGatewayMapper">
&a;
&b;
&c;
</mapper>

mybatis - When to use $ vs

总结:

https://stackoverflow.com/questions/39954300/when-to-use-vs

字符串替换

默认情况下,使用#{}参数语法时,MyBatis 会创建 PreparedStatement 参数占位符,并通过占位符安全地设置参数(就像使用 ? 一样)。 这样做更安全,更迅速,通常也是首选做法,不过有时你就是想直接在 SQL 语句中直接插入一个不转义的字符串。 比如 ORDER BY 子句,这时候你可以:

ORDER BY ${columnName}

这样,MyBatis 就不会修改或转义该字符串了。

当 SQL 语句中的元数据(如表名或列名)是动态生成的时候,字符串替换将会非常有用。 举个例子,如果你想 select 一个表任意一列的数据时,不需要这样写:


@Select("select * from user where id = #{id}")
User findById(@Param("id") long id);

@Select("select * from user where name = #{name}")
User findByName(@Param("name") String name);

@Select("select * from user where email = #{email}")
User findByEmail(@Param("email") String email);

// 其它的 "findByXxx" 方法

而是可以只写这样一个方法:

@Select("select * from user where ${column} = #{value}")
User findByColumn(@Param("column") String column, @Param("value") String value);

其中 ${column} 会被直接替换,而 #{value} 会使用 ? 预处理。 这样,就能完成同样的任务:

User userOfId1 = userMapper.findByColumn("id", 1L);
User userOfNameKid = userMapper.findByColumn("name", "kid");
User userOfEmail = userMapper.findByColumn("email", "[email protected]");

这种方式也同样适用于替换表名的情况。

提示 用这种方式接受用户的输入,并用作语句参数是不安全的,会导致潜在的 SQL 注入攻击。因此,要么不允许用户输入这些字段,要么自行转义并检验这些参数。

xml document type definition

分库查询解决方案

valid vs validated

nacos @ConfigurationProperties(prefix=””) and @Value(“”)

@ConfigurationProperties(prefix=”eg”) 用在类上 类的属性自动读取 eg

@Value(“eg”) 用在属性上 属性直接对应 nacos 配置 eg