第一次使用达梦数据库,发现该数据库对于习惯使用mysql和Navicat的我十分之不顺手。
23年的idea社区版中没有免费spring boot helper,需要下载早期设计的idea社区版。我下了22年的idea community,在网页端下载了spring boot helper。
用的是没配过环境和软件的电脑配置。在配置springboot中遇到了很多以前没遇到的问题,采取了诸多手段来让pom.xml能用,删除cache、reload maven、删除maven、clean 、install等等等等,不赘述。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.2.192</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
此处报红,至今没有解决。
删除application.properties,新建application.yml,配置如下
server:
port: 8080
# spring相关配置
spring:
datasource:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://localhost:5237/schema=TESTER
username: SYSDBA
password: SYSDBA
mybatis-plus:
configuration:
cache-enabled: false
local-cache-scope: statement
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
schema: TESTER
mapper-locations: classpath:mapper/*.xml
新建controller层、service层、entity层、mapper层,按照网上教程
mapper层
在application写入
出现报红
出现报错
dm.jdbc.driver.DMException:网络通信错误
查验后删除application.yml中5237后的东西
另一错误如下
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'locationMapper' defined in file
后检查locationMapper.xml为空,先删除该空文件后可以运行
测试类中原代码如下
运行测试类报错
java.lang.NullPointerException
at com.example.demo.DemoApplicationTests.contextLoads(DemoApplicationTests.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
查验后在测试类上方加入一行代码
该问题解决
重新运行
org.springframework.dao.DataIntegrityViolationException:
### Error querying database. Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误:
无效的表或视图名[LOCATION]
### The error may exist in com/example/demo/mapper/LocationMapper.java (best guess)
### The error may involve com.example.demo.mapper.LocationMapper.selectList
### The error occurred while executing a query
### SQL: SELECT date_time,xxxxxxxxx,id_number,xxxxxxxx FROM location
### Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误:
无效的表或视图名[LOCATION]
; ]; 第1 行附近出现错误:
无效的表或视图名[LOCATION]; nested exception is dm.jdbc.driver.DMException: 第1 行附近出现错误:
无效的表或视图名[LOCATION]
在dm管理工具中印证,发现出现的sql语句在dm管理工具中运行出错,提示找不到表,多方查证检验后,发现最初创建的dm数据库使用了大小写敏感,建立的数据库名和表名在查询插入等操作时都需要使用大写方式,同时表名前必须使用xx数据库名,即xx数据库.xx表。
例如
因此重新创建新数据库,将“大小写敏感”的选项取消,重新创建表
目前还有问题
①似乎使用mapper.xml文件无法映射到dm数据库中,这个数据库名要怎么处理
②mybatis-plus里面的函数是不是无法使用
③数据库时间怎么转化为时间戳
8.24更新——————————————————————————————————————
以上问题解决①②,③不重要
在application.yml中修改文件,url后的5237应该使用'?'而非'/'
重新加载即可运行成功