電影網站增刪改查 spring boots/MVC/neo4j 原始碼分析-2 DATA 實體建模(noe4j)
兩個節點實體 actor , movie , 一個關係實體 actor in movies (roles)
前提, NEO4J 必須配置
1.neo4j依賴
spring-data-neo4j
jackson-jsog
2.config resources/ogm.properties
actor.java
package com.test.data.domain; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.voodoodyne.jackson.jsog.JSOGGenerator; importorg.neo4j.ogm.annotation.GraphId; import org.neo4j.ogm.annotation.NodeEntity; import org.neo4j.ogm.annotation.typeconversion.DateLong; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @JsonIdentityInfo(generator=JSOGGenerator.class)//防止查詢資料的時候引發遞迴效應 @NodeEntity //節點實體public class Actor { @GraphId //節點唯一標識 , 系統自動生成 Long id; private String name; private int sex; @DateLong @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//neo4j 沒有日期格式資料型別,用註解進行轉換 private Date born; public Actor() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public Date getBorn() { return born; } public void setBorn(Date born) { this.born = born; } }
movie.java;
package com.test.data.domain; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.voodoodyne.jackson.jsog.JSOGGenerator; import org.neo4j.ogm.annotation.GraphId; import org.neo4j.ogm.annotation.NodeEntity; import org.neo4j.ogm.annotation.Relationship; import org.neo4j.ogm.annotation.typeconversion.DateLong; import org.springframework.format.annotation.DateTimeFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @JsonIdentityInfo(generator=JSOGGenerator.class) @NodeEntity public class Movie { @GraphId Long id; private String name; private String photo; @DateLong @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createDate; @Relationship(type="扮演", direction = Relationship.INCOMING) List<Role> roles = new ArrayList<>();//關係列表,泛型 指只能存放所有角色的集合 public Role addRole(Actor actor, String name){ //增加關係的方法 Role role = new Role(actor,this,name); this.roles.add(role); return role; } public Movie() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public List<Role> getRoles() { return roles; } public void setRoles(List<Role> roles) { this.roles = roles; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhoto() { return photo; } public void setPhoto(String photo) { this.photo = photo; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } }
Role.java
package com.test.data.domain; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.voodoodyne.jackson.jsog.JSOGGenerator; import org.neo4j.ogm.annotation.EndNode; import org.neo4j.ogm.annotation.GraphId; import org.neo4j.ogm.annotation.RelationshipEntity; import org.neo4j.ogm.annotation.StartNode; @JsonIdentityInfo(generator=JSOGGenerator.class) @RelationshipEntity(type = "扮演") public class Role { @GraphId Long id; String name; @StartNode //開始節點 Actor actor; @EndNode //結束節點 Movie movie; public Role() { //空的建構函式 } public Role(Actor actor, Movie movie, String name) {//建構函式的過載 this.actor = actor; this.movie = movie; this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Actor getActor() { return actor; } public Movie getMovie() { return movie; } }
分頁程式碼粗略一看不懂, 結合前端再研究:
package com.test.data.service; import org.neo4j.ogm.cypher.Filters; import org.neo4j.ogm.cypher.query.Pagination; import org.neo4j.ogm.cypher.query.SortOrder; import org.neo4j.ogm.session.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; @Service //分頁 Pageable pageable, List<T> results 頁數設定和排序欄位設定 public class PagesService<T> { @Autowired private Session session; public Page<T> findAll(Class<T> clazz, Pageable pageable, Filters filters){ Collection data = this.session.loadAll(clazz, filters, convert(pageable.getSort()), new Pagination(pageable.getPageNumber(), pageable.getPageSize()), 1); return updatePage(pageable, new ArrayList(data)); } private Page<T> updatePage(Pageable pageable, List<T> results) { int pageSize = pageable.getPageSize(); int pageOffset = pageable.getOffset(); int total = pageOffset + results.size() + (results.size() == pageSize?pageSize:0); return new PageImpl(results, pageable, (long)total); } private SortOrder convert(Sort sort) { SortOrder sortOrder = new SortOrder(); if(sort != null) { Iterator var3 = sort.iterator(); while(var3.hasNext()) { Sort.Order order = (Sort.Order)var3.next(); if(order.isAscending()) { sortOrder.add(new String[]{order.getProperty()}); } else { sortOrder.add(SortOrder.Direction.DESC, new String[]{order.getProperty()}); } } } return sortOrder; } }
相關推薦
電影網站增刪改查 spring boots/MVC/neo4j 原始碼分析-2 DATA 實體建模(noe4j)
模型設計部分:分為節點實體和關係實體兩個節點實體 actor , movie , 一個關係實體 actor in movies (roles) 前提, NEO4J 必須配置 1.neo4j依賴 spring-data-neo4j jackson-jsog 2.con
電影網站增刪改查 spring boots/MVC/neo4j 原始碼分析-1 前提
前提: idea , maven 專案新增 分模組 各引用大的方面分兩個模組, data M /webui VC: pom.xml for data module <?xml ver
電影網站增刪改查-5 spring boots/MVC/neo4j/thymeleaf 原始碼分析 查詢電影分頁
首先 熟悉webUI 下面的目錄, 包括 controller 和 view , VIEW 裡面的 static 靜態目錄包含 CSS 和JS 和圖片, templates 下面是根據模組功能劃
增刪改查Spring+MyBatis實戰版,給原老師一個交代
其實這次寫這個增刪改查,我的收穫很大,在同學的幫助下和老師的推動下,我也是學會了很多的技能點。 1.顯示資料 顯示資料對我而言可以說很好做,因為我以前增刪改查做了有N遍,但是我卻每次都是無功而返,半途而廢。 查詢為什麼簡單,因為查詢不需要傳入引數,sql語句不需要進行判斷,只需要把所有資料顯示出來就好了
Kotlin整合Spring Boot實現資料庫增刪改查(spring data jpa版)
接上次的kotlin整合spring boot的mybatis版本,這次分享的內容也很精彩,現在spring data jpa也慢慢流行起來了,因此學習kotlin的時候也順帶寫了spring data jpa版本的,下面就直接上程式碼分享給大家了 1 pom加入如下配置
redis增刪改查----Spring+redis
參考文章: java 檔案 package ******.redis; import org.springframework.context.ApplicationContext; imp
【java學習】spring mvc 公共dao的實現,定義基本的增刪改查
pri 代碼 部分 lec sse encoding del epo repos 接口類: package com.blog.db.dao; import com.blog.util.Pagination; import java.util.Lis
第四十章:Spring MVC框架之傳統增刪改查06
傳統CRUD 列表頁面: 新增頁面: 編輯頁面: 刪除操作: 匯入SpringMVC jar包 commons-logging-1.1.3.jar spring-aop-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEAS
SSM 實訓筆記 -12- 開源 Spring+Spring MVC+JDBC Template 增刪改查 前期專案(maven)
SSM 實訓筆記 -12- 開源 Spring+Spring MVC+JDBC Template 增刪改查 前期專案(maven) 實訓前期小專案,大佬勿笑 僱員資訊管理系統 2019-01-11 專案簡介: 內容: Spring + Spring MVC
Spring Mvc那點事---(12)Spring Mvc之mybatis使用註解進行增刪改查
上一節我們演示了通過使用Mapper配置檔案進行資料的增刪改查,實際上還有另一種方法,mybatis為我們提供註解來操作資料庫,這樣我們就不要在mapper.xml中進行SQL語句配置,只需要在介面方法中使用mybatis註解進行操作,mybatis為我們提供
Spring MVC 實現增刪改查
一、核心原理 1. 用於傳送請求給伺服器: /home.htm 2. 請求被DispatchServlet攔截到 3. DispatchServlet通過HandleMapping檢查url有沒有對應的Controller, 如果有則呼叫Contro
Asp.Net MVC EF-DbFirst之增刪改查
生成 處的 message mod 更新 get請求 layout 失敗 inf 控制器及動作方法: using System; using System.Collections.Generic; using System.Linq; using System.Web;
Struts2+Spring+Hibernate實現員工管理增刪改查功能(一)之ssh框架整合
pri support scrip ext ack efault ring src 兩張 前言 轉載請標明出處:http://www.cnblogs.com/smfx1314/p/7795837.html 本項目是我寫的一個練習,目的是回顧ssh框架的整合以及
ASP.NET MVC之Entity Framework增刪改查
打開 實體 ssd myba 基本 內容 mybatis 連接 mapping 一、EntityFramework簡介 ORM(Object-Relation-Mapping):對象關系映射,主要實現基於面向對象方式操作數據庫的各種方法,是一種框架技術。長期以來,C#O
spring boot 2.X 集成 Elasticsearch 5.x 實戰 增刪改查
springboot2.x Elasticsearch5.x 集成 實戰 增刪改查 其實這種博客網上一大片,為啥還要寫出來這篇博客?網上的例子都是基於elasticsearch2.x版本的,並不是5.x版本,而且還有好多是錯的,拿過來根本不能直接用來測試,還有就是spring-data沒有
spring boot(十五)spring boot+thymeleaf+jpa增刪改查示例
ali 遍歷 config link examples 技術分享 返回 stat 業務 快速上手 配置文件 pom包配置 pom包裏面添加jpa和thymeleaf的相關包引用 <dependency> <groupId>org.sprin
關於MVC工廠模式的增刪改查sql存儲過程
var http 添加 rec 接受 ring 變量 index ext 這裏MVC中用到了反射,工廠,泛型,接口 在搭建框架的時候,除了MVC的三層以外,還有泛型的接口層和工廠層 下面是dal層調用sql存儲過程,增刪改查,dal層繼承了接口層,實現了接口層裏面的方法
MyBatis-Spring(二)--SqlSessionTemplate實現增刪改查
允許 ref ack part basic pre 就是 path pda SqlSessionTemplate是個線稱安全的類,每運行一個SqlSessionTemplate時,它就會重新獲取一個新的SqlSession,所以每個方法都有一個獨立的SqlSession,這
4.6 基於Spring-Boot的Mysql+jpa的增刪改查學習記錄 > 我的程式猿之路:第三十六章
1.專案結構 -JDK 1.8 -SpringBoot 2.0.6 &nbs
Spring Data jpa + extjs 實現簡單的增刪改查
公司最近的專案一部分是在使用MyBatis,還有一部分使用SpringJPA,jpa平時沒怎麼用過,今天閒來無事做個增刪改查的demo,記錄下來。 環境;jdk 1.8 編輯器: IDEA 資料庫:postgresql 首先貼上專案所需要的依賴 <?xml version=