达梦数据库(DM Database)是武汉达梦数据库股份有限公司研发的新一代大型通用关系型国产数据库,全面支持 SQL 标准和主流编程语言接口/开发框架。行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应用场景。
在公司项目开发过程中,项目要求使用dm数据库,在用spring boot集成mytatis+dm数据库时,遇到了一些问题,现将成功的示例分享给大家,望大家少走一些弯路。
示例包架构如下图所示
controller:示例接口
db:实体
mapper:数据库交互接口
DmDemoApp:项目启动类
maven引入相关jar包
<dependencies>
<!-- 引入 springboot start -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 引入web支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加dm8 jdbc jar 包依赖-->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.2.141</version>
</dependency>
<!-- 引入阿里druid工具 包依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<!-- 引入lombok工具 包依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
<!-- mybatis-plus的依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
</dependencies>
设置下数据库配置信息
server:
port: 8080
servlet:
context-path: /
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://172.16.3.90:5236/
username: SYSDBA
password: SYSDBA
druid:
validation-query: select 1
test-on-borrow: false
请根据自己部署的dm数据库实际情况,调整数据库连接的相关配置,如url、username、password
示例代码详解
- 实体
@TableName("THC.ALARM_STRATEGY")
@Data
public class AlarmStrategy {
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
private String strategyName;
private String alarmType;
private String alarmKeyword;
private String keywordType;
private String alarmStartTime;
private String alarmEndTime;
private Date createTime;
private Date updateTime;
}
需要注意@TableName赋值的问题,在表名的前面加上schema;其次是id自增,需要建表时将id设置为“ID INT IDENTITY(1,1) NOT NULL”。
- 数据库交互接口
@Mapper
public interface AlarmStrategyMapper extends BaseMapper<AlarmStrategy> {
}
- 示例接口
@RequestMapping("/strategy")
@RestController
public class DbController {
@Autowired
private AlarmStrategyMapper alarmStrategyMapper;
@PostMapping(value = "/list")
public List<AlarmStrategy> listAlarmStrategy() {
return alarmStrategyMapper.selectList(null);
}
@PostMapping(value = "/add")
public String addAlarmStrategy() {
AlarmStrategy alarmStrategy = new AlarmStrategy();
alarmStrategy.setStrategyName("测试策略1");
alarmStrategy.setCreateTime(new Date());
alarmStrategy.setUpdateTime(new Date());
alarmStrategyMapper.insert(alarmStrategy);
return "ok";
}
}
- 建表语句
CREATE TABLE THC.ALARM_STRATEGY (
ID INT IDENTITY(1,1) NOT NULL,
STRATEGY_NAME VARCHAR(100) NULL,
ALARM_TYPE VARCHAR(100) NULL,
ALARM_KEYWORD VARCHAR(100) NULL,
KEYWORD_TYPE VARCHAR(100) NULL,
ALARM_START_TIME VARCHAR(100) NULL,
ALARM_END_TIME VARCHAR(100) NULL,
CREATE_TIME VARCHAR(100) NULL,
UPDATE_TIME VARCHAR(100) NULL
);
需要注意schema名称,这里使用的时THC。
最后将整个示例提供给大家参考。
如果对你有所帮助,请点赞支持一下。