springboot使用达梦数据库(DM8)整合MybatisPlus

标题springboot使用达梦数据库(DM8)整合MybatisPlus

一、目的:

在idea中开发spring boot项目,用到的数据库是达梦数据库,想要使用 MybatisPlus 自动生成实体类和服务,并且通过 MybatisPlus 完成一些简单的数据库CRUD

二、配置:

ps:这里的 MybatisPlus 版本必须要是3.0以上

2.1、pom

<!-- 添加数据库驱动安装包(达梦) -->
<dependency>
    <groupId>dm.jdbc</groupId>
    <artifactId>DmJdbcDriver18</artifactId>
    <version>1.8</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/DmJdbcDriver18.jar</systemPath>
</dependency>

<!-- mybatis-plus的依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.2</version>
</dependency>

ps:其中需要将达梦数据库的依赖添加到指定目录下,不然达梦的依赖无法生效。至于该 jar包 的位置在达梦数据库安装的文件目录中可以找到

在这里插入图片描述

位置参考:
在这里插入图片描述

2.2、逆向工程工具类

package com.xxxx;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import org.junit.jupiter.api.Test;

/**
 * @className: MybatisPlusGeneraotr
 * @description: mybatis plus代码生成器
 **/
public class MybatisPlusGeneraotr {

    @Test
    void mybatisPlusGenerator() {
        FastAutoGenerator
                // 数据源配置
                .create(
                        "jdbc:dm://localhost:5236/SYSDBA?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8",
                        "SYSDBA",     // 达梦数据库模式名
                        "xyz123..."		// 密码
                )
                // 全局配置
                .globalConfig(
                        builder -> {
                            builder
                                    .author("xxx")              // 作者
                                    .outputDir(System.getProperty("user.dir") + "/src/main/java")    // 指定输出目录
                                    .commentDate("yyyy-MM-dd")                                // 注释的日期
                                    // 修改Date类型为LocalDateTime
                                    //.dateType(DateType.ONLY_DATE)
                                    .enableSwagger()
                                    .disableOpenDir();                                            // 禁止打开输出目录,默认:true
                        }
                )
                // 包配置
                .packageConfig(
                        builder -> {
                            builder
                                  //.moduleName(System.getProperty("user.dir").substring(System.getProperty("user.dir").lastIndexOf("\\") + 1))   // 设置父包模块名
                                    .parent(this.getClass().getPackageName() + ".base")           // 父包名
                                    .entity("pojo.entity")                                          // 实体类包名
                                    //.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper"))   // 设置 mapperXml 生成路径
                                    .other("utils");                                                // 自定义文件包名
                        }
                )
                // 策略配置
                .strategyConfig(
                        builder -> {
                            builder
                                    // 在这里添加数据库表名
                                    .addInclude("BBZQ_ROLE")                       // 设置需要生成的表名,多个表之间可以用逗号隔开
                                    // .addExclude("BBZQ_USER","BBZQ_USER_LOG")
                                    .controllerBuilder().enableRestStyle()          // controller配置策略
                                    .serviceBuilder().formatServiceFileName("%sService")            // service配置策略
                                    .mapperBuilder().enableBaseColumnList().enableBaseResultMap().enableMapperAnnotation()     // mapper配置策略
                                    .entityBuilder().enableLombok().enableRemoveIsPrefix().disableSerialVersionUID().enableTableFieldAnnotation()       // 实体配置策略
                                    .logicDeleteColumnName("is_deleted")        		  // 逻辑删除字段名
                                    .naming(NamingStrategy.underline_to_camel)            // 数据库表映射到实体的命名策略,下划线转驼峰
                                    .columnNaming(NamingStrategy.underline_to_camel)      // 数据库表字段映射的命名策略,下划线转驼峰
                                    .addTableFills(    // 添加表字段填充,"create_time"自动填充为插入时间,"update_time"自动填充为修改时间
                                            new Column("create_time", FieldFill.INSERT),
                                            new Column("update_time", FieldFill.INSERT_UPDATE)
                                    )
                                    .idType(IdType.AUTO);
                        }
                )
                // 模板配置
                .templateEngine(new VelocityTemplateEngine())    // 使用的是默认的 Velocity 引擎模板
                // 执行
                .execute();
    }
}

2.3、数据库连接部分

server:
  port: 7069

spring:
  config:
    activate:
      on-profile: xx


  # 达梦数据库连接配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: dm.jdbc.driver.DmDriver
    #    url: jdbc:dm://127.0.0.1:5236/SYSDBA?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
    url: jdbc:dm://localhost:5236/SYSDBA?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
    username: SYSDBA
    password: xyz123...

2.4、达梦数据库的一些要求

这里想要实现,需要保证达梦数据库的表名和字段名全部都是大写,因为如果是小写的话,在查询的时候需要加上双引号,而 MybatisPlus 生成 sql 的过程中是不会自动添加双引号的,这样就会出问题,如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qqTDcdUd-1685441611387)(C:\Users\NG-PC\AppData\Roaming\Typora\typora-user-images\image-20230530175626863.png)]

三、实现效果:

3.1、执行逆向工程方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FQEefl8W-1685441611388)(C:\Users\NG-PC\AppData\Roaming\Typora\typora-user-images\image-20230530180048697.png)]

3.2、效果:

这里的效果图是我执行了多个表之后的结果
在这里插入图片描述

3.3、测试 mybatisPlus 是否可用

测试前数据库数据:
在这里插入图片描述

执行测试工具类:

package com.xx;

import com.xx.base.mapper.BbzqRoleMapper;
import com.xx.base.pojo.entity.BbzqRole;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

@SpringBootTest(classes = ApiApplication.class)
public class dmTest {

    @Autowired
    private BbzqRoleMapper bbzqRoleMapper;


    @Test
    public void teacher() throws ParseException {
        List<BbzqRole> teachers = bbzqRoleMapper.selectList(null);
        teachers.forEach(System.out::println);

        System.out.println("==================================");

        BbzqRole bbzqRole = new BbzqRole();
        bbzqRole.setId("566666666");
        bbzqRole.setRoleName("zhouzhou");
        bbzqRole.setRoleCode("8858");

        String createTime = "2022-02-02 02:02:02";
        String updateTime = "2023-03-03 03:03:03";

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


        bbzqRole.setCreateTime(formatter.parse(createTime));
        bbzqRole.setUpdateTime(formatter.parse(updateTime));

        bbzqRoleMapper.insert(bbzqRole);

        teachers = bbzqRoleMapper.selectList(null);
        teachers.forEach(System.out::println);
    }

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vPQAxbUa-1685441611391)(C:\Users\NG-PC\AppData\Roaming\Typora\typora-user-images\image-20230530180839068.png)]

测试后数据库数据:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y88MUeQk-1685441611392)(C:\Users\NG-PC\AppData\Roaming\Typora\typora-user-images\image-20230530180904030.png)]

至此,成功!

再次在提一次: 达梦数据库中的表和字段都必须大写 不过好像听说在创建或迁移数据的工程中设置达梦数据库不区分大小写也可以,不过没有尝试过

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值