栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

MyBatis框架连接neo4j数据库查询

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis框架连接neo4j数据库查询

MyBatis框架连接neo4j数据库查询

在尚硅谷学完了mybatis框架,于是想试试用mybatis框架连接neo4j数据库,也给和我一样的小白做个参考。

具体流程
  • 搭建maven环境,在pom.xml文件中引入neo4j,mybatis,junit的依赖,写好后记得刷新maven
  • 配置mybatis核心配置文件:mybatis-config.xml
  • 配置neo4j.properties , log4j.xml(日志,非必须)
  • 在java的pojo包下创建要映射数据库表的实体类Person
  • 在java的mapper包下创建PersonMapper接口,写操作的抽象方法
  • 在resources的mapper包下创建PersonMapper.xml , 写具体的查询语句
  • 在java的utils包下创建工具类SqlSessionUtil
  • 在test的包下创建测试类MyTest
按流程一个个完成

先贴上我的目录结构

  1. pom.xml文件如下


    4.0.0

    com.atguigu.neo4j
    neo4j-demo1
    1.0-SNAPSHOT
    
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    8
                    8
                
            
        
    
    jar

    
        
            io.thorntail
            neo4j
            2.7.0.Final
        
        
            org.neo4j
            neo4j-jdbc-driver
            3.1.0
        
        
            org.mybatis
            mybatis
            3.5.6
        
        
            junit
            junit
            4.12
            test
        
    



  1. 在resources文件夹下创建mybatis-config.xml
 


    
    

    
        
        
        
        
    
    
        
    
    
        
            
            
                
                
                
                
            
        
    
    
        
    

  1. 在resources文件下创建neo4j.properties,username和password用自己的替换
neo4j.driver=org.neo4j.jdbc.Driver
neo4j.url=jdbc:neo4j:http://localhost:7474/
neo4j.username=neo4j
neo4j.password=neo4jsunjiaqi
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000

  1. 在resources文件夹下创建log4j.xml
 

    
        
        
            
        
    
    
        
    
    
        
    
    
        
        
    

  1. 在java的pojo包下创建要映射数据库表的实体类Person
package com.atguigu.mybatis.pojo;


public class Person {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;

    public Person() {
    }

    public Person(Integer id, String name, Integer age, String sex) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", age=" + age +
                ", sex='" + sex + ''' +
                '}';
    }
}

  1. 在java的mapper包下创建PersonMapper接口,写操作的抽象方法
package com.atguigu.mybatis.mapper;

import com.atguigu.mybatis.pojo.Person;

import java.util.List;


public interface PersonMapper {
    List getAllPerson ();
}

  1. 在resources的mapper包下创建PersonMapper.xml , 写具体的查询语句
 

    
    

8.在java的utils包下创建工具类SqlSessionUtil

package com.atguigu.mybatis.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;


public class SqlSessionUtil {
    public static SqlSession getSqlSession () {
        SqlSession sqlSession = null;
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
            sqlSession = sessionFactory.openSession();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return sqlSession;
    }
}

9.在test的包下创建测试类MyTest

package com.atguigu.mybatis.test;

import com.atguigu.mybatis.mapper.PersonMapper;
import com.atguigu.mybatis.pojo.Person;
import com.atguigu.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.List;


public class MtTest {
    SqlSession sqlSession;
    @Before
    public void openSession () {
        sqlSession = SqlSessionUtil.getSqlSession();
    }
    @After
    public void closeSqlSession () {
        sqlSession.close();
    }
    @Test
    public void testSelect () {
        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
        List allPerson = mapper.getAllPerson();
        allPerson.forEach(person -> System.out.println(person));
    }
}

查询后结果

neo4j数据库中Person节点图

这里因为我数据库中Person表的数据只有一个name属性,所以查出来就是这样了,虽然查出来了,却报错了java.lang.StackOverflowError,我还不知道怎么解决,也没有死循环,不知道为什么栈溢出。emm,目前还没想好节点之间的关系该怎么映射,因为Person是用python读取csv文件,手动指定两列之间的关系存进去的,还得继续学,大兄弟们加油!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号