暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

play编程 2018-07-31
418

(接上一篇文章: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<String,String> executeFindNodeCypher(String cypher)

5、//relation

    public static Map<String,String> 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<String> cypherArrayList)

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

    执行多条cypher语句

    public static StringBuffer executeFindRelationNodesCyphers(ArrayList<String> cypherArrayList)


   代码说明:

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

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

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


3、mysql相对应的model层

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

        <1>、所有表名

       

         book表

       

        class表

        

       faculty表

        

       grade表

        

       major表

        

       user表

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

        

       userClass表

        

       userInfoConfig表

    

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

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

        <1>、model变量

代码段

public class BookBean {


    private String bookId;

    private String bookName;

    private String classId;


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

        

        <2>、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方法即可,所以这里就不给出这部分的源码下载链接了!!


        <3>、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<BookBean> 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{xxx:"yyy"}) return n;

    public Map<String,String> 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{yyy1:"xxx1"}),(n2:XXX2{yyy2:"xxx2"})

    //merge (n1)-[:RRR{sss:"rrr"}]-(n2);

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

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

    public Map<String,String> getRelAttrs(String relType)

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

    public String lookInto(String nodeType, String nodeName)

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

    public String lookIntos(ArrayList<String> cypherArrayList)

}


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

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


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

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

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

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

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

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


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


标题




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

努力了这么久

我怎么舍得放弃



文章转载自play编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论