idea社区版使用springboot整合maven,mybatis-plus和达梦数据库踩坑之路

第一次使用达梦数据库,发现该数据库对于习惯使用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应该使用'?'而非'/'

 重新加载即可运行成功

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值