From 025cd22107eee87d455b209f2862eb3814dea0dc Mon Sep 17 00:00:00 2001
From: "Yangkai.Shen" <237497819@qq.com>
Date: Tue, 25 Dec 2018 15:12:14 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20spring-boot-demo-neo4j=20=E5=AE=8C?=
=?UTF-8?q?=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
spring-boot-demo-neo4j/README.md | 323 +++++++++++++++++++++
.../assets/image-20181225150513101-5721513.png | Bin 0 -> 543297 bytes
2 files changed, 323 insertions(+)
create mode 100644 spring-boot-demo-neo4j/assets/image-20181225150513101-5721513.png
diff --git a/spring-boot-demo-neo4j/README.md b/spring-boot-demo-neo4j/README.md
index 26931d3..b1d82c3 100644
--- a/spring-boot-demo-neo4j/README.md
+++ b/spring-boot-demo-neo4j/README.md
@@ -12,5 +12,328 @@
4. 启动容器:`docker start neo4j-3.5.0`
5. 浏览器 http://localhost:7474/ 访问 neo4j 管理后台,初始账号/密码 neo4j/neo4j,会要求修改初始化密码,我们修改为 neo4j/admin
+## pom.xml
+```xml
+
+
+ * 自定义主键策略 + *
+ * + * @package: com.xkcoding.neo4j.config + * @description: 自定义主键策略 + * @author: yangkai.shen + * @date: Created in 2018-12-24 14:40 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +public class CustomIdStrategy implements IdStrategy { + @Override + public Object generateId(Object o) { + return IdUtil.fastUUID(); + } +} +``` + +## 部分Model代码 + +### Student.java + +```java +/** + *+ * 学生节点 + *
+ * + * @package: com.xkcoding.neo4j.model + * @description: 学生节点 + * @author: yangkai.shen + * @date: Created in 2018-12-24 14:38 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Data +@NoArgsConstructor +@RequiredArgsConstructor(staticName = "of") +@AllArgsConstructor +@Builder +@NodeEntity +public class Student { + /** + * 主键,自定义主键策略,使用UUID生成 + */ + @Id + @GeneratedValue(strategy = CustomIdStrategy.class) + private String id; + + /** + * 学生姓名 + */ + @NonNull + private String name; + + /** + * 学生选的所有课程 + */ + @Relationship(NeoConsts.R_LESSON_OF_STUDENT) + @NonNull + private List+ * 学生节点Repository + *
+ * + * @package: com.xkcoding.neo4j.repository + * @description: 学生节点Repository + * @author: yangkai.shen + * @date: Created in 2018-12-24 15:05 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +public interface StudentRepository extends Neo4jRepository+ * 测试Neo4j + *
+ * + * @package: com.xkcoding.neo4j + * @description: 测试Neo4j + * @author: yangkai.shen + * @date: Created in 2018-12-24 15:17 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Slf4j +public class Neo4jTest extends SpringBootDemoNeo4jApplicationTests { + @Autowired + private NeoService neoService; + + /** + * 测试保存 + */ + @Test + public void testSave() { + neoService.initData(); + } + + /** + * 测试删除 + */ + @Test + public void testDelete() { + neoService.delete(); + } + + /** + * 测试查询 鸣人 学了哪些课程 + */ + @Test + public void testFindLessonsByStudent() { + // 深度为1,则课程的任教老师的属性为null + // 深度为2,则会把课程的任教老师的属性赋值 + Listg*xs{UwD*g6g8jTw9LPaqGk{u$?Wj z-zQ`9+mF3>2-favK#K4kjn%%D3h2qKB#@nKv)gund7vY2_tT&L)NoN9-^^``)!#gz zO}8(XsZ?O@%W`!mZnfWj+fa7rfc*{g^{;;&da#lTw1qo6t8Dw5)`5DwerOATl;Wv= zeA^p%x|B!2pRA_}py`tT?&c%0vC}bv&D3D_wJ8myCDYPgC;gFjUze>v;?K^=MO{lP zT7oTccyWKzZE1Yrsx_{-BSIh&vUP-17D5=WIG^1IHwT+F9 z=KF~!o{00$Ki`0^YKH__{^1XQFc16R{`R-cahmE%XsUt8z+VL&~>O26*(* zM@>}s+;fkCm9@{>{`y7vw(zskmdf<;#~*LnR{_Ac-FBPlG{5VvyNp`y)TvXALiXd2 zKW?&c-g)Pla!ZBRLg$+CZB1pe5V5uiu k2@A^2sOTGt<>M-&2)o#oy5c z-Y!_cS3A-4aMT%my^S5eQiYJIBj}uS&N1sf`J)FW`AIfz+_+9ViPYxmw}JAbS5Hdu zStf8;=TLQAo#m>_0{N4f>WfT}wyq)lzR<(4teG9UI *cxw>q$NU(>mhnv6_o zN+tP(6HYMSrM|AtVcCWa8%+Mpm$p9^5VqU&-FA#=o6;2EFO!mhy?&$suIoUiZATw{ zw3)fAYf@14OE0}-$}RsX&PkIdnXvNJV~;%+FN@+l>7 Rxy;>3xa zzRI&JpDD5Ko n1p#C(81?-EJl$7AO I&x|mspf-za-HMjq z-;3ai4`SdifmiTV@CKISdSurQ5=3?I3>}4t_O)3>Lj?1e1+j2jm 0p^Y%y3{e5(Wr+ir_oG!77~hE@({c%M U~{fUbZ zB1GloIEPV(^zf**b4r}p_##B0K0vs3dT{|ZRaT|A_{<;w3-9vz2)IeTRXDWrtq;u> zA=>7XT(XX@y%)j6aX#cx hBM7q05rSe;f{jQ4n&U6}NG!_6VIoY^KbC*d z__~+|jh$$`LuU7>zH01AALFC8vPfV{Z?Dy- %f8#J%$FAE!;Z+hs&myOv{ZZxYbfx&@mh-+t `3kf!0p=jVFJ_h3EM=m}xvJd?qp3N<@x(ATuB$>(aW+Z@W}&V& zNIoD;1$Zheb6ZhKjsa?;YU@Hgp8kl+CjzD0uA6=+X19{ixTY1N()F3mi73DL)Kn~8 zu?FjxybbU6Rfy16-pm}9f!93m`BAB3SFGo%4|iX64vv{PA`U-`k65x~iGiOr=C27` zx^Jc<0Il-Mq=4NLY(;KPHhcu2%QrWoDcFe2x@-(<%wS#d5`G4@hj@SIn=D#b-~Bw7 zL!+!T{GB4*@0O+^Xl`i5j+#aUigkzMJ&nGV%73b?$d`l7*b{($t8yK#W2Q#s6k}v& z0XDbnev5j?yk>E-+8<_Lim~~-#nfz=O$`+||Lxz|ukDsf+u6b40p0f{GAhnayj^Dy zbRrKZKFJA_9{A^9?KUSe_TR&oU?f}F90a{*1=0;W5q>T!D>E?Io*@sdE&8z`Wn2B& z`2FvH-{*zz*w|Shxz7{skboLm2SImm%3i+a1_}v4SD}GFR`YW5_7b{#yX)J);KIz3 z?j5iXq5k%_zhT+3W#&l1whuh;KpfoEM!o7!Q0SFcUTMPo@P|Ld8E2efpj2%Tq`Y|X zVzW=sw3KuOMal%tUV7=Jxc&Cq&5d5$e)qfI#Q|u+o`Nt1VCvXE{_&6TcokN#weAyw ziR leYp*5s2!_2KE$r<+$_ z$(J%gqXM7>%v!}< +rc8=sbA#*8r!K(^CFfNyt9{(kSh_e{{P0A#6oO95L} zP*8xAPd?eK@9!U#)#h37b+S%Lo%1K2c)~mYDm|rbVd9>ouMTbt9VedKWO3+6iIm9Y zS8F;(e*N>G|7_}^d?E-rF^mnX4k{@n3s~-G0?yUJC6j`*u8Bm|5q18K968dISz$Do zqH9s0^w6P0O<2``l}Em@oneBfE!?c*WP+D9m|{&ZvIUJ3>xiB3pm0)mPkgh2@}e|! zu4GEX0?>l9l^2;narsPj)tbsLWoO+#bX^Ig7R;Z_y7HOA_vHK~i{EW?9&jFT9&jFT z9&jFT9&jFT9&jFT9&jFT9&jFT9&jFT9_S4Z2w*$))Kg9Ww8RX0ViK)Tf3W&uo%OE= z1Qp5l);HX5xgr>5056Wm$|4jC3BCF}S}V309 5TwlH(c_T_uvE&_WdG2A1IQ5eT zY~K0ivyf`EKGw2_kHMIaUu=}5>({MB1CK44eiV-V?PEp_S`f9sXu;EIZK~Rdkg^)< z*{5-kn;&a+)xdMVr(!h6*Al~OzmDIw0eI#Qz!z`f1 Ss=Cho^+Ar0w&KI3 zTTnW#7=f%3?ATh1MsBNb3}Wo~5;6jrY`;Sk$POV$p*auNrGC#wlAqYbffN-zo~*7# zUAy`{D8*)tDQo;b!fmC4a&gBc$Kew{SdGxOb@a;sL<)y6@2m%5mZxSbLfdO_?WgDA z(o?4Mn&(>&*dEBltZBShJb>B+O@PpttKA>ZK$@(my^;?k8aA+`7+D1Un=8r@DdB_; zz9n4~dpuN#R$cJ1j2Q%^BlMl0V7sTG$+YL8P!!FfMpOlBu{^XL#RU@}$X*s;`BP SIpldjNPE=O#}8p%~@$XJ9s>h41yM?YONy= z=-_ATnFD{xwma6i_g7IY1T95E3qh-b9qOi=)qwy%+lK)QlJ&=VvuWA1`#Q}#?zqE% zW9pE(`R1GZI=N2cS3|2j2x7bQ&O18|=XUJ&KuIot%+hvL@D(?`WV@ AN zlLb1)rQ?&q&kCnk7g;;ylvCQl&vv_Df2%|yXj{KgWXih*mjyg;-@e@*Vqj-`E!i*v zv~~Wh>ASVW{3X`Uojdnzvot~AKmYST%_k9lU$khEjn070iScNMe%GnK*p4}S4&nzT ztaRlw1+&L?=lmr^>sFlyoCll-oCll-oCll-oCll-oCll-oCll-oCll-oCll-dffx+ z_d4Q;BaFa7cOw`0rasvI9t-Vm{to7F>Layp7}R-73nM5+$xD6+b?GB@NP=$c0yb=$ z__oB4^2{R$4-uT?Qed+_19Ch#duk?bn3scVkITlTM`qzNelDMzjW5j3#;Jz|P{J_j z0zj*OSJ!~vf+)31X&0-XTM(Ii5S1?yO@1N(N7^iLs|g!v>-&E9-FJ-uhsL*U|F(cM z+b`Yzz!ZG*_|Q^%1{%xGL4?| 24wFRDoH_!O_Ju6F_TjDHgGmG zxSM^B!M`jD>x1fqO5;He70f?e6UC}^`X0sHnLdmeMn&@$)q&Wgfrvmzg{HE!@d5vI ztR5ynn*GuEjq0TYXcEU#R8LiR^|5tUVFf?xzM-&o>?h5Nv`2OXL9hAK9eDHlPa9a- zuX;=?nLZcu{`W}(GW)Z0aO7=Ozz|ZTC6iJHIwzrSd%Ihj$ybXN7IpybjBL^FzGx z)$`IHel{gY_@fG%UqJQe%XvK~K#gxa1}uMLH~g${tQ+Pd)o6X*d>B~x?C!{BoIr^B zoRn8~z1g=l6vXh-QcOJgBuqK?JREk)IVfTNHZ%-DWiXGbzFy?y`;eXMHAV5TJRaV= zbiMnyo?GBYAe-L_e@EE{hIvib*EOM~nb0h+gNlk4Y}wktvEe$l>4d~J`GILhs5G1| zX0Ka~t82VlW43DB!_5C#Ge_gQ7oUJgbrU>0*CSeAg-A;SJoOc5-L@U4%o)%9A2att z9%4*mpaO|?e-y(Yj!kWVzT0*o6=m U&I4XZk zr%Bzn?lrUT^kGwQ=D>-ahHH!jaqgS{gNxt%UtIR~?+rNJY2bt%U8S86%&i_k9 L=YiR!H-imUMc&rkvZn9EJ?#wQ^ XQw{?WCrTpE|H0eZY+%i2(NfknQ-50X}trU&-Hi@Mx z$Xal+g_x~hI_4)CJgqS5XxDv9CTQI%DVq%){wSTts9GU2oxg4SRhO*Fx>VDp3N4c& zwM ~5Kk~>U1~#5Od$v)c?#$m(9#BVz zO!r`=o9vpDueDEMRd)G6Z9qrs%x5-SPtKn`#x0!(oCll-oCll-oCll-oCll-oCll- zoCll-oCll-oCll-`pN_9drR!M+gmyct7FtR=d6D{@XRyMn7&Dk0VIwC^lvU=sR{it z_zzW#Jp&5iX#;$`B?I9ZGK>)HMq;4s52sQh!ZC3RF9A}4Um-$Ze%7CyEKy{N&x4Et zAK%)zXMd~q%8GJ5cw-$^H-j KjdzJB%hT5*>6HKA*R``a1ALI7Wq TjqtArR{v8!kLe**YQ1v;2WhvjyKH^&gW&Ry^B6$mY*=Ip`4jjHqe z|L+^fFPlg;+ 3rhQN3a@cD(we z33tH#(Pj9t&v9^d&hD&lSqr@MM^1d<3>MaRXp+MjR|4Z_$HIgN`Rdb3(Z&H3L}Pnk zE)0d6c}fh7X1kCoQ@gGDnO9I~09Do7=4L{yRXHf<`SeB`j0(Mva5Ke!ng6yHifx;k z?Tic$j}35~HiHVk9v0t+Oy1K1Y!B4@=^D`ZV<;GowdHIB%;X0}lV%sXy{0wZTTxLF z8&hQ-wf% 3`^>+s0SOAyEz08eHPT6x_ME6KypzI+M>6%rKZxs@{V#tj?I8;3Pk zE7Q2De5`w;?r(|rI1`{B|JZg(?$^1A8`t$+c`IODDBrRbV@pS4)3(J}_v&lN9y);& zcsM@HPskg<=-dEC@to^r6n@sBQPp**C)D29REMRl^>{n53uPlmF;1X{Z-y8?YzV5U zmY*t{mNyhR{2kV)Yq5hpv+E gb&JNP_cc{_2bi6V~Yd@u*Rw z4Dh9gWWk#KVHPk`+Wlcurc8l8>0oM j9o4nF8f9&!T(DCDbKYMLsrX=^z~4I9yu z!}kcgc^e=0TAERuGX&WgdUaLrn|_>Ips}>Hw95n%_ggr4*REahm!7A}b{Qmky`IYLmz*5Zu-Lhp1q(Xh` zt+$%%Td#II{q)lfwAxwT_NUC99sBajFPj !X zU7b5pc#x^gox#`7KKrbhHLGv}f_47(#Z-r^@`HteJBvrZMeIXnvM`DJIs>3P1FRDV zME2Hkm6(psgEd`S_JLE1&gRvC+-WBtsC &04SK%*n|y$LmjGS>)fJ{NyL`eO;~SxMZMyXFgM0Jvo0} zrS0}P4>%7v4>%7v4>%7v4>%7v4>%7v4>%7v4>%7v4>%7v5A>D?)MsY_&hEsiusUY& z;J$mqV|Vg#sD)9#u=?g@7hG^b`V^o2;vS>!+m@vOA!gQ*C}A0yhw!tMFk^bpQG}^} z+seW845~zPAfxS|18-r+Uaa7SN?=7awB8d|z{X|Ah;^*SVD#qFRD Nd-Xg(NPgoD6`s`!>{q#rgN0jS}&N?3< zg2hqR3lG2RaKX^lcCXnj{kv>q9%G40`IP{;iW56$7MugsKRsBpkvm97`w2{{C@M)y zOBgHH5qRcx;6aF=Fa^_N*GGf^wBMh(yRPtXb5z?h_ANdCs{9%g(-?`yLTw$6
u;Rp+_N8#UHI&6SH@hdweXM9;nb0Rus=`r{qQ8ZrV?ul*h>mb`<- z|8;%4$m+}2BWuvUjSIGmC>39HIw=l>BRQ^WCvm8KfAOz;y)p%jRM&N(%sCr4?^^Q) zfW2muO2WENq|!8&t~OiHudTlV+k;f64+aLKuBjHG<`9M!d(5pW8fF>wpJmO<_nXi0 zL&w7(@Y5}Rx+uW8J|P}2u$pZ^v=xJjq9|gsI5306G`EKv8wd)MjmQ|7%A)U)wysNY z3%aJ8o12Yjqps~R+wX#$Ed1co)A0Vfa;)FA4Zi$B1X#A)zi j2jt;pT$3HF5hh4 zsIBW>{?+)c#^e>RKB+Y2Bb$s+b4!bXwe2}qo>awULxv2(n$>GiOK^GG;S=!If@Nsj z=0R1?P=pA6BO?nn!A#@_vj{*(;HN5d7Ry~v?xmu>8cQlyB7bNBMvfSPRTTHi&&xqE zm9;fCoGPRDaZ F;(Nie!XW`hv6L8bvXX4|-r{kGz%kg&Adenwm%x|`7 z`9pDZaT(4YF$0-=V?itLU5{*Dh>ON_E mA12k(*wyMX#Iv2gO?}*d2p8g&?=SM z%9K8>9qJJDfd)V8@(>vO;)^dDh_1g>i7l{~E>QBJ)l3|Cr5#%`6^qJW# +v5^dlS@iUY*am3{`%LyhGsr#)^lIjzH}1U@+m)w z nR@LrGNm!rX{qA=LTGeYVI#bS0mfpT@Q%C!f zB}>fVnn5~m-n^tyJ^AF5rlUnWm9O4X+wTs1t Qi6j9NAz;0tuO}u&YinHrzY3!t!PXLwQ~Ih;0_g=n>j#vsJ*zA&*jf2k2k(j% zE8@z~n>TNcpUaLuP`$nS>Z?uN6fkWcV09hpyFP-^bq=I1Evv7ux7q8_Qk?)jwVs^6 zp2qFMI}bPyI1e}vI1e}vI1e}vI1e}vI1e}vI1e}vI1e}vI1lWL2NL^#yL-HjaR798 zy|w@0^h)|){pwfd&2`5db4;gihur^^x*vnaC=8rhRf*8TcS(T8`iw)%mjhK5W}o&8 ze&(MTU?jjw+qkznl8xFO#Eu5=o9H8|<3_ks%EHFD5IgH{`?|3@f;vhr<^|d|#6qR~ zuOMY>5}guEXF)Q%eQ!%U-lMl9s=r f=WdyA{z_A^gSqtAe+z8TrC z^ZZw|!OuFG(U@|mK*6{%JPA1NBNWSie^11NX^;OI(VSc?I^}EwMuX>@|4rSoN80KT zkEfqk^0Fg_)0CnsPXZzBn7XmDLHwD22z9e8g8Q;EwNKk6b{kWDmhyAJuewd}nXsG@ zE~1KN#2iN@bOLp@M$0|q$_Nh13+ZjPK5EQMO3)fFNqn=W_Dh&X<5UWhmUXxXF81f- zA=J3%Skj^&T!Ulo_y=Zw>z5`rfzHeS`}=#u9ByiaAnF6sRH5^VD8oNwclMXR1-$Wp zv5Qq(6(*nK@qyjrfx82DSgWfB7E%dY?Sr|nI_&SKuM$I3dn-s+AJtjGu@XP3tgJ#I zT9LzxGSb?>Hh@<<^Bdt!DiY 4+2zt_VPv*4U+|s!ZX$IBZR{vRK?~r2Y7;w z@P(Sq$83)V;4K^pU%~KxDrNVRQ5z<3S#QGC1RRawYF%yFl(G>xVd5~Xdu26&*eK?V zD#WQXV`J1_`az;pAAb0uIY#R`Hl5&Sc|qqlpZ8~psA*lFL^Bh$=!0D5eH9_-vaw}2 zdd@T~SiFKiY3dNk8v<|E0MvV^_>Lf&*@k-v%X{mpu&Hh*RyA&=0(=3ck^3s&x|L(& zIhb_Vc+=)5rjv^GiwDiX3pK0J)b=)x#5_pZ`G#c= ^9sGO{o^r7|ehb{Bs(gnk1g#se z6kG*Z>Bn?gSy{?w6LqH!%$UL1GJF77xpHNEMpbu?+t)Dam{M9wQ)xSM9@v`)Mih?2 zN4wrfRZTV4Z{C2?kz@9DNYec)*RDoQZ4L4>i!iL9ENPhD*qErUn+P)}i#u_@J#GYN z=2_deZJS-~_VW4XpU01X{Ns4|xpU{@*kg}13bX=m_2YUy6`^ms>85y?{#dc)Q(B4T zPL_7!{>0-HR TuG7rXDhr znFWotPY 0;yo*-ud(CW~YKka$4;Ij=Q09t<0L$|ISYaIb-Z5ITs z`ls2(I?t+)`fZ?NWqN=Y1g$bl4LUJT>Zt3kI=DKcduly7e?5)cg?Aos9&jFT9&jFT z9&jFT9&jFT9&jFT9&jFT9&jFT9&jGm7Z2iwbcl3+YpC34H4Rgv_=R{Q3n%#ZzeW1 zWn=O3Aj%u5qDX)&tGR`cDBo&np(I8wrq008TyG9WQP~vb8%vdH`k4BtEl8#Qd@%w& z $A {fVamX9 z5VO>=UcSXNI}0<0=ELI;;=ND+5h_M|1QW)hFiWnc%vc1%aA8a;YsA{}TnZks{`!4J zAy$gjQNoZOpUyXdN0yDHGkG;-w%Y_ll4_0+dJdbV)Sn{=1)Gg8a&ik|TsV&mP&Ibk zC^8ONJcenfkPYpY&s9#H&q0F*nK2mEV|%_WOsRbbi-nqY3j^6Q1=-%Me()|#y8K47 zY4bA=L)#82 7@@S8$Cv3gA;+)p((nRUAjG;-sERPU6YRX@NJ#hX^6&C?_wlY2tP1 zBLM6-A5DhP3lCzG891?n`#Jnbh`JR~f0zo;{1U7u1kG!`wTW#T9qD0u1;gMUSeEFW zv{~2KtlBb-wQEc@Hg+7F*wLhO*IdtbS%s7mzB#F;4UjK2_NoaU@~I|2Xlz (ZCA&9sZ8=gR#qmKb28Ti-rtWq>IiIDzm9F(a@OEXRI}}0$#7w|eF2s& zhg-vi85lWzEC%x)zJB8-j%QbL41WkVbNpKqL;9MP=va=9-;4a&_+;@EJh1cqj=Riv z{i6Hz`d9JrmiKYd$k{k{(0Gi>Dds&WcJ2gDFRR*w=e94$KevBi;Qm(K