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
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)
<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>
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>
总结:
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 注入攻击。因此,要么不允许用户输入这些字段,要么自行转义并检验这些参数。