(接上一篇文章: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层的编写
标题
坚持努力,因为最后你会发现
努力了这么久
我怎么舍得放弃
领取专属 10元无门槛券
私享最新 技术干货