標(biāo)題springboot使用達(dá)夢數(shù)據(jù)庫(DM8)整合MybatisPlus
一、目的:
在idea中開發(fā)spring boot項(xiàng)目,用到的數(shù)據(jù)庫是達(dá)夢數(shù)據(jù)庫,想要使用 MybatisPlus 自動(dòng)生成實(shí)體類和服務(wù),并且通過 MybatisPlus 完成一些簡單的數(shù)據(jù)庫CRUD
二、配置:
ps:這里的 MybatisPlus 版本必須要是3.0以上
2.1、pom
<!-- 添加數(shù)據(jù)庫驅(qū)動(dòng)安裝包(達(dá)夢) -->
<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:其中需要將達(dá)夢數(shù)據(jù)庫的依賴添加到指定目錄下,不然達(dá)夢的依賴無法生效。至于該 jar包 的位置在達(dá)夢數(shù)據(jù)庫安裝的文件目錄中可以找到
位置參考:
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
// 數(shù)據(jù)源配置
.create(
"jdbc:dm://localhost:5236/SYSDBA?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8",
"SYSDBA", // 達(dá)夢數(shù)據(jù)庫模式名
"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(); // 禁止打開輸出目錄,默認(rèn):true
}
)
// 包配置
.packageConfig(
builder -> {
builder
//.moduleName(System.getProperty("user.dir").substring(System.getProperty("user.dir").lastIndexOf("\\") + 1)) // 設(shè)置父包模塊名
.parent(this.getClass().getPackageName() + ".base") // 父包名
.entity("pojo.entity") // 實(shí)體類包名
//.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper")) // 設(shè)置 mapperXml 生成路徑
.other("utils"); // 自定義文件包名
}
)
// 策略配置
.strategyConfig(
builder -> {
builder
// 在這里添加數(shù)據(jù)庫表名
.addInclude("BBZQ_ROLE") // 設(shè)置需要生成的表名,多個(gè)表之間可以用逗號(hào)隔開
// .addExclude("BBZQ_USER","BBZQ_USER_LOG")
.controllerBuilder().enableRestStyle() // controller配置策略
.serviceBuilder().formatServiceFileName("%sService") // service配置策略
.mapperBuilder().enableBaseColumnList().enableBaseResultMap().enableMapperAnnotation() // mapper配置策略
.entityBuilder().enableLombok().enableRemoveIsPrefix().disableSerialVersionUID().enableTableFieldAnnotation() // 實(shí)體配置策略
.logicDeleteColumnName("is_deleted") // 邏輯刪除字段名
.naming(NamingStrategy.underline_to_camel) // 數(shù)據(jù)庫表映射到實(shí)體的命名策略,下劃線轉(zhuǎn)駝峰
.columnNaming(NamingStrategy.underline_to_camel) // 數(shù)據(jù)庫表字段映射的命名策略,下劃線轉(zhuǎn)駝峰
.addTableFills( // 添加表字段填充,"create_time"自動(dòng)填充為插入時(shí)間,"update_time"自動(dòng)填充為修改時(shí)間
new Column("create_time", FieldFill.INSERT),
new Column("update_time", FieldFill.INSERT_UPDATE)
)
.idType(IdType.AUTO);
}
)
// 模板配置
.templateEngine(new VelocityTemplateEngine()) // 使用的是默認(rèn)的 Velocity 引擎模板
// 執(zhí)行
.execute();
}
}
2.3、數(shù)據(jù)庫連接部分
server:
port: 7069
spring:
config:
activate:
on-profile: xx
# 達(dá)夢數(shù)據(jù)庫連接配置
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、達(dá)夢數(shù)據(jù)庫的一些要求
這里想要實(shí)現(xiàn),需要保證達(dá)夢數(shù)據(jù)庫的表名和字段名全部都是大寫,因?yàn)槿绻切懙脑?,在查詢的時(shí)候需要加上雙引號(hào),而 MybatisPlus 生成 sql 的過程中是不會(huì)自動(dòng)添加雙引號(hào)的,這樣就會(huì)出問題,如下
三、實(shí)現(xiàn)效果:
3.1、執(zhí)行逆向工程方法
3.2、效果:
這里的效果圖是我執(zhí)行了多個(gè)表之后的結(jié)果
3.3、測試 mybatisPlus 是否可用
測試前數(shù)據(jù)庫數(shù)據(jù):
執(zhí)行測試工具類:
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);
}
}
測試后數(shù)據(jù)庫數(shù)據(jù):
至此,成功!文章來源:http://www.zghlxwxcb.cn/news/detail-601240.html
再次在提一次: 達(dá)夢數(shù)據(jù)庫中的表和字段都必須大寫 , 不過好像聽說在創(chuàng)建或遷移數(shù)據(jù)的工程中設(shè)置達(dá)夢數(shù)據(jù)庫不區(qū)分大小寫也可以,不過沒有嘗試過 文章來源地址http://www.zghlxwxcb.cn/news/detail-601240.html
到了這里,關(guān)于springboot使用達(dá)夢數(shù)據(jù)庫(DM8)整合MybatisPlus的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!