{"id":12,"date":"2025-02-11T10:27:06","date_gmt":"2025-02-11T02:27:06","guid":{"rendered":"http:\/\/cxycd.cn\/?p=12"},"modified":"2025-02-11T10:27:06","modified_gmt":"2025-02-11T02:27:06","slug":"%e5%9c%a8-springboot-%e4%b8%ad%e8%ae%be%e8%ae%a1%e4%b8%80%e4%b8%aa%e8%ae%a2%e5%8d%95%e5%8f%b7%e7%94%9f%e6%88%90%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"http:\/\/cxycd.cn\/index.php\/2025\/02\/11\/%e5%9c%a8-springboot-%e4%b8%ad%e8%ae%be%e8%ae%a1%e4%b8%80%e4%b8%aa%e8%ae%a2%e5%8d%95%e5%8f%b7%e7%94%9f%e6%88%90%e7%b3%bb%e7%bb%9f\/","title":{"rendered":"\u5728 SpringBoot \u4e2d\u8bbe\u8ba1\u4e00\u4e2a\u8ba2\u5355\u53f7\u751f\u6210\u7cfb\u7edf"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">1. UUID<\/h2>\n\n\n\n<p>\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u662f\u4f7f\u7528UUID\u751f\u6210\u552f\u4e00\u7684\u8ba2\u5355\u53f7\u3002UUID\uff08Universally Unique Identifier\uff09\u662f\u4e00\u79cd\u5e7f\u6cdb\u4f7f\u7528\u7684\u6807\u8bc6\u7b26\uff0c\u7531128\u4f4d\u7ec4\u6210\uff0c\u901a\u5e38\u4ee532\u4e2a\u5341\u516d\u8fdb\u5236\u6570\u5b57\u8868\u793a\uff0c\u5206\u4e3a\u4e94\u7ec4\uff0c\u5f62\u5f0f\u4e3a8-4-4-4-12\u7684\u5b57\u7b26\u4e32\uff0c\u4f8b\u5982<code>123e4567-e89b-12d3-a456-426614174000<\/code>\u3002<\/p>\n\n\n\n<p>UUID\u5168\u7403\u552f\u4e00\uff0c\u5b9e\u73b0\u7b80\u5355\uff0c\u4f46\u7f3a\u70b9\u662fUUID\u8f83\u957f\uff0c\u4e0d\u6613\u8bb0\u5fc6\u548c\u5b58\u50a8\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5b9e\u4f8b\u4ee3\u7801<\/h3>\n\n\n\n<p>Java\u4e2d\u751f\u6210UUID\u7684\u793a\u4f8b\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;java.util.UUID;<br><br>public&nbsp;class&nbsp;UUIDGenerator&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;String&nbsp;generateUUID()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>\/\/&nbsp;\u751f\u6210\u4e00\u4e2aUUID<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UUID&nbsp;uuid&nbsp;=&nbsp;UUID.randomUUID();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>\/\/&nbsp;\u5c06UUID\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;uuidAsString&nbsp;=&nbsp;uuid.toString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>\/\/&nbsp;\u8fd4\u56deUUID\u5b57\u7b26\u4e32<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;uuidAsString;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String&#91;]&nbsp;args)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;uuid&nbsp;=&nbsp;generateUUID();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(\"Generated&nbsp;UUID:&nbsp;\"&nbsp;+&nbsp;uuid);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2. \u6570\u636e\u5e93\u5e8f\u5217\u6216\u81ea\u589eID<\/h2>\n\n\n\n<p>\u5229\u7528\u6570\u636e\u5e93\u7684\u5e8f\u5217\uff08\u5982PostgreSQL\u7684<code>SEQUENCE<\/code>\uff09\u6216\u81ea\u589eID\uff08\u5982MySQL\u7684<code>AUTO_INCREMENT<\/code>\uff09\u751f\u6210\u552f\u4e00\u7684\u8ba2\u5355\u53f7\u3002\u6570\u636e\u5e93\u5e8f\u5217\u6216\u81ea\u589eID\u662f\u4e00\u79cd\u5e38\u89c1\u7684\u751f\u6210\u552f\u4e00\u6807\u8bc6\u7b26\u7684\u65b9\u6cd5\uff0c\u7279\u522b\u662f\u5728\u5355\u4f53\u5e94\u7528\u6216\u975e\u5206\u5e03\u5f0f\u7cfb\u7edf\u4e2d\u3002<\/p>\n\n\n\n<p>\u8fd9\u79cd\u65b9\u6cd5\u4f9d\u8d56\u4e8e\u6570\u636e\u5e93\u7684\u5185\u7f6e\u673a\u5236\u6765\u4fdd\u8bc1\u6bcf\u6b21\u63d2\u5165\u65b0\u8bb0\u5f55\u65f6\u81ea\u52a8\u4ea7\u751f\u4e00\u4e2a\u552f\u4e00\u7684\u6807\u8bc6\u7b26\uff0c\u7f3a\u70b9\u662f\u96be\u4ee5\u5728\u5206\u5e03\u5f0f\u73af\u5883\u4e2d\u7ef4\u62a4\u552f\u4e00\u6027\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>\/\/&nbsp;\u5047\u8bbe\u4f7f\u7528JPA<\/em><br>@Entity<br>public&nbsp;class&nbsp;Order&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;@Id<br>&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue(strategy&nbsp;=&nbsp;GenerationType.AUTO)<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>\/\/&nbsp;\u5176\u4ed6\u5c5e\u6027<\/em><br>}<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">\u6570\u636e\u5e93\u5e8f\u5217\uff08\u5982PostgreSQL\u7684SEQUENCE\uff09<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE&nbsp;SEQUENCE&nbsp;order_id_seq&nbsp;START&nbsp;WITH&nbsp;1&nbsp;INCREMENT&nbsp;BY&nbsp;1;<br><br>CREATE&nbsp;TABLE&nbsp;orders&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;order_id&nbsp;bigint&nbsp;NOT&nbsp;NULL&nbsp;DEFAULT&nbsp;nextval('order_id_seq'),<br>&nbsp;&nbsp;&nbsp;&nbsp;order_data&nbsp;text<br>);<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">\u81ea\u589eID\uff08\u5982MySQL\u7684AUTO_INCREMENT\uff09<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE&nbsp;TABLE&nbsp;orders&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;order_id&nbsp;INT&nbsp;AUTO_INCREMENT,<br>&nbsp;&nbsp;&nbsp;&nbsp;order_data&nbsp;TEXT,<br>&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY&nbsp;KEY&nbsp;(order_id)<br>);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3. \u65f6\u95f4\u6233+\u968f\u673a\u6570\/\u5e8f\u5217<\/h2>\n\n\n\n<p>\u7ed3\u5408\u65f6\u95f4\u6233\u548c\u968f\u673a\u6570\uff08\u6216\u81ea\u5b9a\u4e49\u5e8f\u5217\uff09\u751f\u6210\u8ba2\u5355\u53f7\uff0c\u4ee5\u4fdd\u8bc1\u552f\u4e00\u6027\u548c\u53ef\u8bfb\u6027\u3002\u53ef\u4ee5\u901a\u8fc7\u6dfb\u52a0\u4e1a\u52a1\u76f8\u5173\u7684\u524d\u7f00\u6765\u589e\u5f3a\u4e1a\u52a1\u76f8\u5173\u6027\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5b9e\u4f8b\u4ee3\u7801<\/h3>\n\n\n\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684Java\u793a\u4f8b\uff0c\u5c55\u793a\u4e86\u5982\u4f55\u7ed3\u5408\u65f6\u95f4\u6233\u3001\u968f\u673a\u6570\u548c\u4e1a\u52a1\u524d\u7f00\u751f\u6210\u8ba2\u5355\u53f7\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import&nbsp;java.text.SimpleDateFormat;<br>import&nbsp;java.util.Date;<br>import&nbsp;java.util.concurrent.ThreadLocalRandom;<br><br>public&nbsp;class&nbsp;OrderNumberGenerator&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;SimpleDateFormat&nbsp;dateFormat&nbsp;=&nbsp;new&nbsp;SimpleDateFormat(\"yyyyMMddHHmmss\");<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;int&nbsp;RANDOM_NUM_BOUND&nbsp;=&nbsp;10000;&nbsp;<em>\/\/&nbsp;\u5b9a\u4e49\u968f\u673a\u6570\u8303\u56f4<\/em><br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;String&nbsp;generateOrderNumber(String&nbsp;prefix)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>\/\/&nbsp;\u751f\u6210\u65f6\u95f4\u6233\u90e8\u5206<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;timestamp&nbsp;=&nbsp;dateFormat.format(new&nbsp;Date());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>\/\/&nbsp;\u751f\u6210\u968f\u673a\u6570\u90e8\u5206<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;randomNumber&nbsp;=&nbsp;ThreadLocalRandom.current().nextInt(RANDOM_NUM_BOUND);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>\/\/&nbsp;\u7ec4\u5408\u6210\u8ba2\u5355\u53f7<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;prefix&nbsp;+&nbsp;timestamp&nbsp;+&nbsp;String.format(\"%04d\",&nbsp;randomNumber);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String&#91;]&nbsp;args)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>\/\/&nbsp;\u793a\u4f8b\uff1a\u751f\u6210\u8ba2\u5355\u53f7\uff0c\u5047\u8bbe\u4e1a\u52a1\u524d\u7f00\u4e3a\"ORD\"<\/em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;orderNumber&nbsp;=&nbsp;generateOrderNumber(\"ORD\");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(\"Generated&nbsp;Order&nbsp;Number:&nbsp;\"&nbsp;+&nbsp;orderNumber);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4. \u5206\u5e03\u5f0f\u552f\u4e00ID\u751f\u6210\u65b9\u6848<\/h2>\n\n\n\n<p>\u5728\u5206\u5e03\u5f0f\u7cfb\u7edf\u4e2d\uff0c\u53ef\u4ee5\u4f7f\u7528\u50cfTwitter\u7684Snowflake\u7b97\u6cd5\u751f\u6210\u552f\u4e00\u7684ID\u3002Snowflake\u7b97\u6cd5\u53ef\u4ee5\u751f\u6210\u4e00\u4e2a64\u4f4d\u7684\u957f\u6574\u6570\uff0c\u5176\u4e2d\u5305\u542b\u65f6\u95f4\u6233\u3001\u6570\u636e\u4e2d\u5fc3ID\u3001\u673a\u5668ID\u548c\u5e8f\u5217\u53f7\uff0c\u4ee5\u786e\u4fdd\u751f\u6210\u7684ID\u65e2\u552f\u4e00\u53c8\u6709\u5e8f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. UUID \u6700\u7b80\u5355\u7684\u65b9\u6cd5\u662f\u4f7f\u7528UUID\u751f\u6210\u552f\u4e00\u7684\u8ba2\u5355\u53f7\u3002UUID\uff08Universally Unique I [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-12","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/posts\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":1,"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/posts\/12\/revisions"}],"predecessor-version":[{"id":13,"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/posts\/12\/revisions\/13"}],"wp:attachment":[{"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/media?parent=12"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/categories?post=12"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/cxycd.cn\/index.php\/wp-json\/wp\/v2\/tags?post=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}