d3.js可视化neo4j图数据库——4、两个数据库的操作以及与之相对应的model层的编写

(接上一篇文章:d3.js可视化neo4j图数据库(正式篇)——3、两个数据库的在Idea中的配置)

两个数据库的操作以及与之相对应的model层的编写

这两个数据库分别是1、mysql和2、neo4j,而与之相对应的model层就是1、存储在mysql中的表格(像用户表,课程表等)相对于的类以及操作,2、neo4j中的节点和关系的操作

下面来看看应该怎样操作

1、对mysql的操作

一、变量

代码段

public class MysqlJDBC {

static Connection conn = null;

static PreparedStatement preparedStatement = null;

static ResultSet resultSet = null;

二、方法

代码段

1、//得到connection

public static Connection getConn()

2、//关闭连接

public static void close(Connection conn,PreparedStatement preparedStatement,ResultSet resultSet)

3、//查询,返回查询集

public static ArrayList[] query(String sql, String[] parameters)

4、//更新数据,包括更新,插入,删除

public static boolean executeUpdate(String sql,String[] parameters)

对mysql数据库的操作比较基础,这里就不做详细的解释了

对mysql的操作的代码链接:https://github.com/mp2930696631/visualization-neo4j-using-java/blob/master/MySqlJDBC.java

2、对neo4j的操作(由下面两部分组成)

代码段

public class Neo4jRestAPI {

static Driver driver = null;

1、public static void getDriver()

2、public static void close()

3、//add,delete,modify attribute,

public static void executeCypher(String cypher)

4、//node

public static Map executeFindNodeCypher(String cypher)

5、//relation

public static Map executeFindRelAttrCypher(String cypher)

代码说明:

注意:这个类Neo4jRestAPI的类名并不是很好,因为我们使用的并不是neo4j提供的rest接口

executeCypher方法是增、删、改neo4j数据库中的节点

executeFindNodeCypher方法是返回某单个节点的属性的键值对

executeFindRelAttrCypher方法是返回某单个关系的属性的键值对

代码段

1、//返回关系的StringBuffer,为可视化做准备!json文件

public static StringBuffer executeFindRelationCypher(String cypher)

2、//返回关系中节点的StringBuffer,为可视化做准备!json文件,需要增加节点的类型

public static StringBuffer executeFindRelationNodesCypher(String cypher)

3、//执行多条cypher语句

//处理关系

public static StringBuffer executeFindRelationCyphers(ArrayList cypherArrayList)

4、//接下来是处理节点!!,这个有点复杂了!因为需要添加颜色属性!

//执行多条cypher语句

public static StringBuffer executeFindRelationNodesCyphers(ArrayList cypherArrayList)

代码说明:

这四个方法中的前两个方法在“基础知识篇”已经详细讨论过了,具体请看相应的“基础知识篇”:基础知识五:neo4j中节点json文件以及关系json文件的拼凑

这四个方法的后两个方法本质上和前两个方法差不多!只不过是处理多条cypher查询语句,这样拼凑出json格式的数据也更复杂一点而已,具体请读者查看源码

对neo4j的操作的代码链接:https://github.com/mp2930696631/visualization-neo4j-using-java/blob/master/Neo4jRestAPI.java

3、mysql相对应的model层

一、该项目中mysql中用到的表格以及相应的内容

、所有表名

book表

class表

faculty表

grade表

major表

user表

注意:登录时,默认用户名:zehua123456,密码:123456

userClass表

userInfoConfig表

二、每个表对应的model,以及具体的操作

因为有很多model(每个表对应一个model),操作都是类似的,所以这里以一个book表为例(了解MVC模式的读者应该对这部分很了解),这部分代码我可能写的并不是很健壮!!

、model变量

代码段

public class BookBean {

private String bookId;

private String bookName;

private String classId;

图片说明:可以发现,该类的私有变量就是book表的三个字段

、model方法

代码段

//默认构造器

public BookBean(){

this.bookId = null;

this.bookName = null;

this.classId = null;

}

//初始化构造器

public BookBean(String bookId,String bookName,String classId){

this.bookId = bookId;

this.bookName = bookName;

this.classId = classId;

}

//get,set函数

public String getBookId() {

return bookId;

}

public void setBookId(String bookId) {

this.bookId = bookId;

}

public String getBookName() {

return bookName;

}

public void setBookName(String bookName) {

this.bookName = bookName;

}

public String getClassId() {

return classId;

}

public void setClassId(String classId) {

this.classId = classId;

}

图片说明:这些方法就是相应私有字段的get和set方法

因为mysql中表的相应的model的编写很容易,全是和上面例子中的book那样编写,只需要更改相应的表的字段,以及get和set方法即可,所以这里就不给出这部分的源码下载链接了!!

、model具体操作(这部分代码可能写的不是很完善,谅解!)

代码段

public class BookBeanDBA {

String bookId = null;

String bookName = null;

String classId = null;

public void initializeInfo(BookBean bookBean){

bookId = bookBean.getBookId();

bookName = bookBean.getBookName();

classId = bookBean.getClassId();

}

1、//增

public boolean addItem(BookBean bookBean)

2、//删

public boolean deleteItem(BookBean bookBean)

3、//改

public boolean modifyItem(BookBean bookBean)

4、//查,目前先只写按classId查询

public ArrayList findItem(String classId)

图片说明:也就是对book表的增、删、改、查的操作

对于其他表也建立相应的两个类,类的内容也是类似,可能有些有点小小的不同!!随着项目的深入,在用到的地方再讨论

mysql中全部的model具体操作的源码下载链接:https://github.com/mp2930696631/visualization-neo4j-using-java/tree/master/model

3、neo4j相对应的model层

一、节点model

代码段

public class NodeBeanDBA {

1、public void addNode(String nodeType,String[] nodeAttributesName,String[][] nodeAttributesValue)

2、//这里是针对(sdu.zehuape@qq.com)所写的一个方法,这样的话,形参一个就可以了

//标准格式match (n:XXX) return n;

public Map getNodeAttrs(String nodeType)

}

图片说明:这里可能现在还有点看不懂,没关系,以后会慢慢详细说明

neo4j节点model源码下载链接:https://github.com/mp2930696631/visualization-neo4j-using-java/blob/master/model2/NodeBeanDBA.java

二、关系model

代码段

public class RelationshipBeanDBA {

1、//标准格式

//match (n1:XXX1),(n2:XXX2)

//merge (n1)-[:RRR]-(n2);

public void addRelationship(String fromNodeType,String relType,String toNodeType,String[] someParametersName,String[][] someParapetersValue)

2、//这里是针对(sdu.zehuape@qq.com)所写的一个方法,这样的话,形参一个就可以了

public Map getRelAttrs(String relType)

3、//写入json文件,查找

public String lookInto(String nodeType, String nodeName)

4、//针对的是多条查询语句

public String lookIntos(ArrayList cypherArrayList)

}

图片说明:可以发现,关系model类中前两个方法与节点model的方法相似,作用也相似!关系model类中后两个方法是用于查询使用的,返回json文件,好传入前台显示

neo4j关系model源码下载链接:https://github.com/mp2930696631/visualization-neo4j-using-java/blob/master/model2/RelationshipBeanDBA.java

4、该篇文章需要用到的链接

、对mysql的操作的代码链接:https://github.com/mp2930696631/visualization-neo4j-using-java/blob/master/MySqlJDBC.java

、对neo4j的操作的代码链接:https://github.com/mp2930696631/visualization-neo4j-using-java/blob/master/Neo4jRestAPI.java

、mysql中全部的model具体操作的源码下载链接:https://github.com/mp2930696631/visualization-neo4j-using-java/tree/master/model

、neo4j节点model源码下载链接:https://github.com/mp2930696631/visualization-neo4j-using-java/blob/master/model2/NodeBeanDBA.java

、neo4j关系model源码下载链接:https://github.com/mp2930696631/visualization-neo4j-using-java/blob/master/model2/RelationshipBeanDBA.java

d3.js可视化neo4j图数据库(正式篇)——4、两个数据库的操作以及与之相对应的model层的编写

标题

坚持努力,因为最后你会发现

努力了这么久

我怎么舍得放弃

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180731G1KBVD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券