标题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 的过程中是不会自动添加双引号的,这样就会出问题,如下
三、实现效果:
3.1、执行逆向工程方法
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);
}
}
测试后数据库数据:
至此,成功!文章来源:https://www.toymoban.com/news/detail-601240.html
再次在提一次: 达梦数据库中的表和字段都必须大写 , 不过好像听说在创建或迁移数据的工程中设置达梦数据库不区分大小写也可以,不过没有尝试过 文章来源地址https://www.toymoban.com/news/detail-601240.html
到了这里,关于springboot使用达梦数据库(DM8)整合MybatisPlus的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!