Spingboot + MybatisPlus连接达梦数据库(DM8)

安装达梦数据库(windows操作系统)

打开.iso文件
在这里插入图片描述
打开setup安装程序

开始一直点下一步


如果没有Key文件可以不指定直接下一步。

选完路径等信息点击安装。

在这里插入图片描述
在这里插入图片描述

此时(下图)如果没有勾选【初始化数据库】后面就要使用【DM数据库配置助手】初始化一个数据库实例。

在这里插入图片描述
然后点击开始,查看安装完成的达梦数据库:

在这里插入图片描述

如果刚才没有勾选【初始化数据库】此时点击【DM数据库配置助手】初始化一个数据库实例(一直点下一步即可)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成后再点击取消按钮关闭数据库配置工具。

如果想要将其他数据库比如MySQL的数据库迁移到达梦数据库中,就使用DM数据迁移工具。

通常使用DM管理工具去对数据库进行管理。

Java 项目连接达梦数据库

使用【DM管理工具】创建一个模式:DATA_MANAGER,这个就是数据库名。**在达梦数据库中不论是数据库名、数据表名、还是字段名,最好一律都用大写字母。**因为达梦数据库的jdbc可以自动将实体类的字段转换成大写字母的,如果达梦数据库中有的表名或字段名存在小写字母就有可能会出bug(亲身经历!)。

添加依赖,我是在https://mvnrepository.com/官方仓库中搜索DmJdbcDriver,我用的是maven构建项目,直接将xml内容粘贴到项目的pom.xml中,更新依赖。
这里需要注意用8.1.3.140的版本,我先用了一个最早版本的,发现会有报错,太早的版本对于java项目的驼峰命名法识别有问题,无法识别为数据库表,会报错无效的模式名(其实就是数据库名)。

<!-- 达梦数据库jdbc -->
<!-- https://mvnrepository.com/artifact/com.dameng/DmJdbcDriver18 -->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmJdbcDriver18</artifactId>
    <version>8.1.3.140</version>
</dependency>

可以看到更新完依赖,就已经将该依赖下载到本地仓库了。
在这里插入图片描述

配置项目的applicaiton.yml:

#数据库配置
server:
  servlet:
    context-path: /xxx

spring:
  application:
    name: sanyuan
  datasource:
      # 达梦数据库 dm8 测试
      driver-class-name: ${db.driver}
      url: ${db.url}
      username: ${db.username}
      password: ${db.password}
  profiles:
    active: dev

application-dev.yml:

# 开发环境
server:
  port: 8088
  host: localhost
db:
  host: localhost
  # 达梦数据库 dm8
  port: 5236
  dbName: DATA_MANAGER
  username: SYSDBA
  password: 123456789
  driver: dm.jdbc.driver.DmDriver
  url: jdbc:dm://${db.host}:${db.port}/${db.dbName}

模式名为DATA_MANAGER,这个是我们要连接的数据库。写好配置文件后,开始写Pojo、Controller、Service、ServiceImpl、Mapper。

下面是以一个管理设备的数据管理系统为例,写的一个实体的分页查询。

Equipment.java

@Data
@TableName("EQUIPMENT")
public class Equipment {

    @ApiModelProperty(value = "id")
    private String id;

    @NotNull
    @ApiModelProperty(value = "设备名称", required = true)
    private String name;

    @ApiModelProperty(value = "介绍")
    private String introduction;

    @ApiModelProperty(value = "修改时间", required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "Asia/Shanghai")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date modifyTime;

    @TableField(exist = false)
    private Integer dataSize;
}

EquipmentMapper.java

@Mapper
public interface ExperimentMapper extends BaseMapper<Experiment> {
}

EquipmentService.java

public interface EquipmentService extends IService<Equipment> {
}

EquipmentServiceImpl.java

@Service
public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper,Equipment> implements EquipmentService
{
}

EquipmentController.java

@RestController
@Api(tags = "equipment接口")
@RequestMapping("/equipment")
public class EquipmentController {

    @Autowired
    private EquipmentService equipmentService;

    // 获取所有装备数据
    @RequestMapping(value = "/selectByPage", method = RequestMethod.POST)
    @ApiOperation("分页获取所有数据")
    @ResponseBody
    public Result getAllEquipment(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size) {
        Page<Equipment> queryPage = new Page<>(page,size);
        Page<Equipment> resultPage = equipmentService.page(queryPage); // mybatis-plus已经写好的方法
        List<Equipment> res = resultPage.getRecords();
        res.sort(Comparator.comparing(Equipment::getModifyTime).reversed());

        return !res.isEmpty() ? ResponseData.success(res) : ResponseData.error();
    }
}

现在可以调用/selectByPage接口分页查询所有数据了~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐