소스 검색

demo提交1

yuchengwei 5 달 전
부모
커밋
155175d371

+ 5 - 5
pom.xml

@@ -62,11 +62,11 @@
             <version>2.1.1</version>
         </dependency>
 
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
-            <version>3.0.0</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.baomidou</groupId>-->
+<!--            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>-->
+<!--            <version>3.0.0</version>-->
+<!--        </dependency>-->
 
         <dependency>
             <groupId>mysql</groupId>

+ 1 - 1
src/main/java/com/qizhen/healsphere/config/MybatisPlusConfigurer.java

@@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
  */
 @EnableTransactionManagement
 @Configuration
-@MapperScan("com.qizhen.healsphere.mapper*")//这个注解,作用相当于下面的@Bean MapperScannerConfigurer,2者配置1份即可
+@MapperScan("com.qizhen.healsphere.repository.mapper*")//这个注解,作用相当于下面的@Bean MapperScannerConfigurer,2者配置1份即可
 public class MybatisPlusConfigurer {
 
     /**

+ 33 - 0
src/main/java/com/qizhen/healsphere/config/MysqlConfig.java

@@ -0,0 +1,33 @@
+package com.qizhen.healsphere.config;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan(basePackages = "com.qizhen.healsphere.repository.mapper")
+public class MysqlConfig {
+
+    @Bean(name = "mysqlDataSource")
+    @ConfigurationProperties(prefix = "spring.datasource")
+    public DataSource dataSource() {
+        return DataSourceBuilder.create().build();
+    }
+
+    @Bean
+    public SqlSessionFactory sqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {
+        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
+        sqlSessionFactoryBean.setDataSource(dataSource);
+        // 设置MyBatis的XML映射文件路径
+        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/mysql/*.xml"));
+        return sqlSessionFactoryBean.getObject();
+    }
+}

+ 30 - 23
src/main/java/com/qizhen/healsphere/repository/mapper/KgMapper.java

@@ -1,23 +1,30 @@
-package com.qizhen.healsphere.repository.mapper;
-
-import com.qizhen.healsphere.web.dto.GraphDTO;
-import com.qizhen.healsphere.web.param.KgQuery;
-
-import java.util.List;
-
-/**
- * <p>
- * Mapper 接口
- * </p>
- *
- * @author gaodm
- * @since 2018-08-02
- */
-public interface KgMapper {
-
-    List<GraphDTO> getGraph(KgQuery kgQuery);
-
-//    @Query("MATCH (n:`{0}`)-[r]->(m) where n.name = {1} RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName" +
-//            "        ORDER BY rType")
-//    List<GraphDTO> getGraphNew(String labelName, String inputStr);
-}
+//package com.qizhen.healsphere.repository.mapper;
+//
+//import com.qizhen.healsphere.web.dto.GraphDTO;
+//import com.qizhen.healsphere.web.param.KgQuery;
+//import org.springframework.data.neo4j.repository.Neo4jRepository;
+//
+//import java.util.List;
+//
+///**
+// * <p>
+// * Mapper 接口
+// * </p>
+// *
+// * @author gaodm
+// * @since 2018-08-02
+// */
+//public interface KgMapper extends Neo4jRepository<GraphDTO, Long> {
+//
+////    List<GraphDTO> getGraph(KgQuery kgQuery);
+//
+////    @Query("MATCH (n:`{0}`)-[r]->(m) where n.name = {1} RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName" +
+////            "        ORDER BY rType")
+////    List<GraphDTO> getGraphNew(String labelName, String inputStr);
+//
+//    // MATCH (n:${labelName})-[r]->(m)
+//    //        where n.name = #{inputStr}
+//    //        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["疾病","症状","药品通用名","手术和操作","实验室检查","辅助检查"]
+//    //        RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName, count(p) as pCount
+//    //        ORDER BY rType
+//}

+ 9 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/BaseNodeRepository.java

@@ -0,0 +1,9 @@
+package com.qizhen.healsphere.repository.neo4j;
+
+import com.qizhen.healsphere.repository.neo4j.entity.Zz;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.repository.CrudRepository;
+
+public interface BaseNodeRepository extends Neo4jRepository<Zz, Long> {
+
+}

+ 1 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/DiseaseRepository.java

@@ -3,6 +3,7 @@ package com.qizhen.healsphere.repository.neo4j;
 
 import com.qizhen.healsphere.repository.neo4j.entity.Disease;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.neo4j.repository.query.Query;
 import org.springframework.stereotype.Repository;
 
 @Repository

+ 0 - 2
src/main/java/com/qizhen/healsphere/service/PresetInfoService.java

@@ -1,6 +1,5 @@
 package com.qizhen.healsphere.service;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qizhen.healsphere.repository.mapper.entity.PresetInfo;
 
@@ -12,7 +11,6 @@ import com.qizhen.healsphere.repository.mapper.entity.PresetInfo;
  * @author gaodm
  * @since 2020-03-31
  */
-@DS("mysql")
 public interface PresetInfoService extends IService<PresetInfo> {
 
 }

+ 20 - 3
src/main/java/com/qizhen/healsphere/service/impl/KgServiceImpl.java

@@ -1,13 +1,18 @@
 package com.qizhen.healsphere.service.impl;
 
 import com.qizhen.healsphere.web.dto.GraphDTO;
-import com.qizhen.healsphere.repository.mapper.KgMapper;
+//import com.qizhen.healsphere.repository.mapper.KgMapper;
 import com.qizhen.healsphere.service.KgService;
 import com.qizhen.healsphere.web.param.KgQuery;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.neo4j.core.Neo4jOperations;
+import org.springframework.data.neo4j.core.Neo4jTemplate;
+import org.springframework.data.neo4j.repository.query.QueryFragmentsAndParameters;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -19,11 +24,23 @@ import java.util.List;
  */
 @Service
 public class KgServiceImpl implements KgService {
+//    @Autowired
+//    private KgMapper kgMapper;
+
     @Autowired
-    private KgMapper kgMapper;
+    private Neo4jTemplate neo4jTemplate;
 
     @Override
     public List<GraphDTO> getGraph(KgQuery kgQuery){
-        return kgMapper.getGraph(kgQuery);
+        Map<String,Object> map = new HashMap<>();
+        map.put("inputStr",kgQuery.getInputStr());
+        String cypherQuery = "MATCH (n:" + kgQuery.getLabelName() + ")-[r]->(m)\n" +
+                "            where n.name = $inputStr\n" +
+                "            OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in [\"疾病\",\"症状\",\"药品通用名\",\"手术和操作\",\"实验室检查\",\"辅助检查\"]\n" +
+                "            RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName, count(p) as pCount\n" +
+                "            ORDER BY rType";
+        QueryFragmentsAndParameters parameters = new QueryFragmentsAndParameters(cypherQuery,map);
+
+        return neo4jTemplate.toExecutableQuery(GraphDTO.class,parameters).getResults();
     }
 }

+ 20 - 16
src/main/resources/application.yml

@@ -9,20 +9,24 @@ swagger:
 
 spring:
   datasource:
-    dynamic:
-      primary: neo4j
-      # 数据库配置
-      datasource:
-        neo4j:
-          driver-class-name: org.neo4j.jdbc.Driver
-          url: jdbc:neo4j:http://173.18.12.194:7474
-          username: neo4j
-          password: 12345678
-        mysql:
-          driver-class-name: com.mysql.cj.jdbc.Driver
-          url: jdbc:mysql://173.18.12.194:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
-          username: root
-          password: dsYun8!@#
+#    dynamic:
+#      primary: neo4j
+#      # 数据库配置
+#      datasource:
+#        neo4j:
+#          driver-class-name: org.neo4j.jdbc.Driver
+#          url: jdbc:neo4j:http://173.18.12.194:7474
+#          username: neo4j
+#          password: 12345678
+#        mysql:
+#          driver-class-name: com.mysql.cj.jdbc.Driver
+#          url: jdbc:mysql://173.18.12.194:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+#          username: root
+#          password: dsYun8!@#
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://173.18.12.194:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+    username: root
+    password: dsYun8!@#
   neo4j:
     uri: bolt://172.16.8.59:7687
     authentication:
@@ -31,14 +35,14 @@ spring:
 
 #mybatis
 mybatis:
-  type-aliases-package: com.qizhen.healsphere.repository.entity
+  type-aliases-package: com.qizhen.healsphere.repository.mapper.entity
   mapper-locations: classpath:mapper/*.xml
 
 #mybatis-plus
 mybatis-plus:
   mapper-locations: classpath:/mapper/*Mapper.xml
   #实体扫描,多个package用逗号或者分号分隔
-  typeAliasesPackage: com.qizhen.healsphere.entity
+  typeAliasesPackage: com.qizhen.healsphererepository.mapper.entity
   global-config:
     #刷新mapper 调试神器
     db-config:

+ 0 - 27
src/main/resources/mapper/KgMapper.xml

@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.qizhen.healsphere.repository.mapper.KgMapper">
-
-    <resultMap id="GraphResultMap" type="com.qizhen.healsphere.web.dto.GraphDTO">
-        <result column="sName" property="name"/>
-        <result column="sLabel" property="label"/>
-        <collection property="eNodeRSDTOS" ofType="com.qizhen.healsphere.web.dto.BaseNodeRSDTO">
-            <result column="rType" property="rType"/>
-            <collection property="eNodeDTOS" ofType="com.qizhen.healsphere.web.dto.NextNodeDTO">
-                <result column="eName" property="name"/>
-                <result column="eLabel" property="label"/>
-                <result column="pCount" property="pCount"/>
-            </collection>
-        </collection>
-    </resultMap>
-
-    <select id="getGraph" parameterType='com.qizhen.healsphere.web.param.KgQuery' resultMap="GraphResultMap">
-        MATCH (n:${labelName})-[r]->(m)
-        where n.name = #{inputStr}
-        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["疾病","症状","药品通用名","手术和操作","实验室检查","辅助检查"]
-        RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName, count(p) as pCount
-        ORDER BY rType
-    </select>
-
-</mapper>

src/main/resources/mapper/PresetInfoMapper.xml → src/main/resources/mapper/mysql/PresetInfoMapper.xml


+ 27 - 0
src/main/resources/mapper/neo4j/KgMapper.xml

@@ -0,0 +1,27 @@
+<!--<?xml version="1.0" encoding="UTF-8"?>-->
+<!--<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"-->
+<!--        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">-->
+<!--<mapper namespace="com.qizhen.healsphere.repository.mapper.KgMapper">-->
+
+<!--    <resultMap id="GraphResultMap" type="com.qizhen.healsphere.web.dto.GraphDTO">-->
+<!--        <result column="sName" property="name"/>-->
+<!--        <result column="sLabel" property="label"/>-->
+<!--        <collection property="eNodeRSDTOS" ofType="com.qizhen.healsphere.web.dto.BaseNodeRSDTO">-->
+<!--            <result column="rType" property="rType"/>-->
+<!--            <collection property="eNodeDTOS" ofType="com.qizhen.healsphere.web.dto.NextNodeDTO">-->
+<!--                <result column="eName" property="name"/>-->
+<!--                <result column="eLabel" property="label"/>-->
+<!--                <result column="pCount" property="pCount"/>-->
+<!--            </collection>-->
+<!--        </collection>-->
+<!--    </resultMap>-->
+
+<!--    <select id="getGraph" parameterType='com.qizhen.healsphere.web.param.KgQuery' resultMap="GraphResultMap">-->
+<!--        MATCH (n:${labelName})-[r]->(m)-->
+<!--        where n.name = #{inputStr}-->
+<!--        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["疾病","症状","药品通用名","手术和操作","实验室检查","辅助检查"]-->
+<!--        RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName, count(p) as pCount-->
+<!--        ORDER BY rType-->
+<!--    </select>-->
+
+<!--</mapper>-->

+ 5 - 0
src/test/java/com/qizhen/healsphere/DiseaseTests.java

@@ -14,6 +14,8 @@ import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.data.neo4j.core.Neo4jTemplate;
+import org.springframework.stereotype.Component;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
@@ -62,6 +64,9 @@ public class DiseaseTests {
     @Autowired(required = false)
     ZzRepository zzRepository;
 
+    @Autowired
+    Neo4jTemplate neo4jTemplate;
+
 
     @Test
     public void contextLoads() {}