达梦数据库(五) -------- 达梦数据库+mybatisPlus+springboot

news2025/1/23 15:09:20

前言:安装完达梦数据库后,需要初始化实例,在初始化实例时,需要注意大小写敏感的设置。大小写敏感只能在初始化数据库的时候设置,默认为大小写敏感,一旦设置成功就无法修改,如果想要修改,只能重新初始化实例。因为mybatisPlus+springboot查询时会自动去转换大小写,其中字段会转成带有“”的“field”,不如然会报错;

查询‍‍‍‍‍‍‍达梦数据库大小写是否敏感:

结果为 1 是大小写敏感;结果为 0 是不敏感。
SELECT CASE_SENSITIVE();

一丶.创建idea项目

新建一个项目,使用Spring Initializr初始化一个SpringBoot项目

二丶添加POM依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
  <groupId>com.puwang</groupId>
  <artifactId>post-power-message</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>post-power-grid</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
	  <dependency>
		  <groupId>com.baomidou</groupId>
		  <artifactId>mybatis-plus-boot-starter</artifactId>
		  <version>3.2.0</version>
	  </dependency>
	  <dependency>
		  <groupId>org.apache.commons</groupId>
		  <artifactId>commons-lang3</artifactId>
	  </dependency>

	  <!--getter setter-->
	  <dependency>
		  <groupId>org.projectlombok</groupId>
		  <artifactId>lombok</artifactId>
		  <version>1.16.20</version>
		  <scope>provided</scope>
	  </dependency>
	  <!--連接池-->
	  <dependency>
		  <groupId>org.springframework.boot</groupId>
		  <artifactId>spring-boot-starter-jdbc</artifactId>
	  </dependency>

	  <dependency>
		  <groupId>com.dameng</groupId>
		  <artifactId>Dm8JdbcDriver18</artifactId>
		  <version>8.1.1.49</version>
	  </dependency>

	  <dependency>
		  <groupId>com.alibaba</groupId>
		  <artifactId>fastjson</artifactId>
		  <version>1.2.83</version>
	  </dependency>

	  <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

  </dependencies>
  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>

             
        </plugins>
	<resources>
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.xml</include>
			</includes>
		</resource>
		<resource>
			<directory>src/main/resources</directory>
			<includes>
				<include>**/*</include>
			</includes>
		</resource>
	</resources>
    </build>
</project>

三丶修改application.yml配置文件

server:
  port: 12001
spring:
  datasource:
    driver-class-name: dm.jdbc.driver.DmDriver
    url: jdbc:dm://127.0.0.1:5236?schema=PERSON&compatibleMode=mysql&characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
    username: SYSDBA
    password: SYSDBA
mybatis-plus:
  configuration:
    # 驼峰转换 从数据库列名到Java属性驼峰命名的类似映射
    map-underscore-to-camel-case: false
    # 是否开启缓存
    cache-enable: false
    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
    #call-setters-on-nulls: true
    # 打印sql
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

四丶编写entity,注意TableName 把模式名称加上

@TableName(value = "AIJOB.PRODUCT")
@Data
public class Product implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableId(value = "ID", type = IdType.AUTO)
    private Integer id;
    private String productName;
    private String bigData;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    
}

五丶这个模式下分页可能会失效,加上分页的配置

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

六丶添加业务代码



/**
 * @author xy丶
 * @version 1.0.0
 * @Date 2024/05/23 15:40
 **/
@RestController
@RequestMapping("/content/aiGlobalRate")
public class ProductController {
    @Autowired
    private ProductService productService;


    /**
     * 查询所有
     */
    @GetMapping("/selectAll")
    public List<Product> selectAll() {
        return productService.selectAll();
    }


    /**
     * 添加
     */
    @GetMapping("/addProduct")
    public Boolean addProduct() {
        Product product = new Product();
        product.setProductName("我是产品!!!");
        product.setBigData("我是产品!fdgfjgjkbdshjfgldfnkknsfbndsknfdknsfhjdsm xzmn,hjzm cnbzgjcnqwklguasknfnasgud abjasjgdsal;kdiofgsfhdisufjs,bjbvm,kaskkn!!");
        product.setCreateTime(new Date());
        product.setBigData(JSONObject.valueToString(product));
        return productService.addProduct(product);
    }


    /**
     * 批量添加  有问题
     */
    @GetMapping("/batchAdd")
    public Boolean batchAdd() {
        List<Product> products = new ArrayList<>();
        for (int i=0;i<=10;i++){
            Product product = new Product();
            product.setProductName("dsgdsg"+i+"放假时间!!!");
            products.add(product);
        }
        return productService.batchAdd(products);
    }


    /**
     * 查询单条
     */
    @GetMapping("/getProductById")
    public Product getProductById() {
        return productService.getProductById(34);
    }

    /**
     * 查询目标数据
     */
    @GetMapping("/getTargetProduct")
    public List<Product> getTargetProduct() {
        List<Integer> integers = Arrays.asList(23, 34, 5, 6, 7);
        return productService.getTargetProduct(integers);
    }

    /**
     * 条件查询数据
     */
    @GetMapping("/findProduct")
    public List<Product> findProduct(String name) {
        return productService.findProduct(name);
    }

    /**
     * 分页查询
     */
    @GetMapping("/productPage")
    public IPage<Product> productPage(Page page, String name) {
        return productService.productPage(page,name);
    }

    /**
     * 删除单条
     */
    @GetMapping("/delById")
    public Boolean delById(Integer id) {
        return productService.delById(id);
    }

    /**
     * 批量删除
     */
    @GetMapping("/batchDelById")
    public Boolean batchDelById(String ids) {
        List<String> strings = Arrays.asList(ids.split(","));
        return productService.batchDelById(strings);
    }
    //====增删改查 分页查询条件查询

    /**
     * 更新单条
     */
    @GetMapping("/updateProduct")
    public Boolean updateProduct(Integer id,String name) {
        Product product = new Product();
        product.setId(id);
        product.setProductName(name);
        return productService.updateProduct(product);
    }

    /**
     * 批量更新
     */
    @GetMapping("/batchUpdateProduct")
    public Boolean batchUpdateProduct() {
        List<Product> products = new ArrayList<>();
        Product product = new Product();
        product.setId(4);
        product.setProductName("dsjfds看难顶你是");
        Product product2 = new Product();
        product2.setId(5);
        product2.setProductName("大飞冠的返回");
        products.add(product);
        products.add(product2);
        return productService.batchUpdateProduct(products);
    }
}

public interface ProductService extends IService<Product> {
 
    List<Product> selectAll();


    Boolean addProduct(Product product);

    Boolean batchAdd(List<Product> products);

    Product getProductById(Integer i);

    List<Product> getTargetProduct(List<Integer> integers);

    List<Product> findProduct(String name);

    IPage<Product> productPage(Page page, String name);

    Boolean delById(Integer id);

    Boolean batchDelById(List<String> strings);

    Boolean updateProduct(Product product);

    Boolean batchUpdateProduct(List<Product> products);
}
@Service
@Slf4j
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
    @Autowired
    private ProductMapper productMapper;
    @Override
    public List<Product> selectAll() {
        return productMapper.selectList(Wrappers.lambdaQuery());
    }

    @Override
    public Boolean addProduct(Product product) {
        boolean save = save(product);
        log.info("current id====>"+product.getId());
        return save;
    }

    @Override
    public Boolean batchAdd(List<Product> products) {
        boolean b = false;
        for (Product product : products) {
            b = save(product);
            log.info("current id====>"+product.getId());
        }
        return b;
    }

    @Override
    public Product getProductById(Integer i) {
        return getById(i);
    }

    @Override
    public List<Product> getTargetProduct(List<Integer> integers) {
        List<Product> products = list(Wrappers.<Product>lambdaQuery().in(Product::getId,integers));
        return products;
    }

    @Override
    public List<Product> findProduct(String name) {
        List<Product> products = list(Wrappers.<Product>lambdaQuery().like(Strings.isNotBlank(name), Product::getProductName, name));
        return products;
    }

    @Override
    public IPage<Product> productPage(Page page,String name) {

        IPage pageList = page(page, Wrappers.<Product>lambdaQuery().like(Strings.isNotBlank(name), Product::getProductName, name));
        return pageList;
    }

    @Override
    public Boolean delById(Integer id) {
        return removeById(id);
    }

    @Override
    public Boolean batchDelById(List<String> strings) {
        return removeByIds(strings);
    }

    @Override
    public Boolean updateProduct(Product product) {
        return updateById(product);
    }

    @Override
    public Boolean batchUpdateProduct(List<Product> products) {
        return updateBatchById(products);
    }

}
@Mapper
public interface ProductMapper extends BaseMapper<Product> {
 
}
 

七丶测试

八丶采坑,使用mybatis-plus批量插入保存报错

解决办法:当前程序使用DmJdbc驱动包版本比较旧(8.1.1.49),更换为较新版本(2021年下半年以后的驱动包版本)解决。

结尾:喜欢的朋友点个赞加收藏吧谢谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1718881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

景源畅信:抖音的爆款视频怎么选?

在短视频风起云涌的今天&#xff0c;抖音作为其中的佼佼者&#xff0c;每天都有无数视频在这里诞生。但如何在内容海洋中脱颖而出&#xff0c;成为人们茶余饭后谈论的焦点&#xff0c;是许多创作者和品牌思考的问题。选择爆款视频&#xff0c;不仅需要对平台规则有深刻理解&…

汾阳王发布T系列新品,百亿之路始于山西

执笔 | 文 清 编辑 | 古利特 山西汾阳王酒业董事长王再武提出要把握汾阳王发展的春天之后&#xff0c;其首个大动作来了。 随着汾阳王T系列新品上市&#xff0c;锚定清香第二大中高端品牌的汾阳王开启了山西市场改革&#xff0c;吹响了山西省内市场决胜之战的号角。 在对品牌…

Web前端复习二(期末考试考到了一部分)

第一章测试 选项中加粗的为答案 1.图片的边框可以通过( )设定宽度。 A.width B.height C.border D.align 2.关于超链接&#xff0c;( )属性用于规定在何处打开链接文档。 A.href . B.target C.title D.onclick 3.( )是在新窗口打开网页文档。 A _blank B_self C_…

TiDB学习9:Ti Cloud简介

目录 1. 为什么选择TiDB 2. 多租户 3. TiDB架构 4. 什么是TiDB Cloud 5. TiDB Cloud Provider Region 6. TiDB Cloud 入门 6.1 在浏览器中打开TiDB Cloud 6.2 创建您的账户 6.3 Developer Tier 与Dedicated Tier 6.3.1 Developer Tier 6.3.2 Dedicated Tier 6.3.2.…

IntelliJ IDEA,PyCharm,GoLand全家桶激活码(资源是从官网购买,仅供学习和交流)

全家桶激活码(资源是从官网购买,仅供学习和交流) 激活之前先设置一下代理 第一步:选择代理设置 第二步:选择 Manual proxy configuration 第三步:输入配置,第三步不要漏 下面为复制红框内容,直接复制进去就好!!! Host Name:localhost No proxy for: *.github.c…

2024新版二开微信发卡小程序源码卡密系统流支持量主

2024新版二开微信发卡小程序源码卡密系统流支持量主。裂变扩展多种领取模式二次开发的发卡小程序源码&#xff0c;其后台采用PHP编写&#xff0c;支持用户通过付费购卡或者观看视频广告领取卡密&#xff0c;该小程序还支持流量主&#xff0c;因为功能需要&#xff0c;我就进行了…

【Word】调整列表符号与后续文本的间距

1. 默认的列表格式&#xff1a; 2. 修改间距&#xff1a; ************************************************** 分割线 ************************************************************ 3. 效果

如何使用Cloudways搭建WordPress网站(附最新Cloudways优惠码)

如今&#xff0c;搭建网站已经变得非常简单&#xff0c;这主要得益于开源的CMS建站系统的兴起。即使是不懂编程的人也能轻松搭建自己的网站&#xff0c;这些CMS系统提供了丰富的主题模板和插件&#xff0c;使用户可以通过简单的拖放和配置操作来建立自己的网站。 WordPress是目…

SAP Build引言

前言 SAP Build 似乎是一个整合了很多低代码或无代码产品的平台&#xff0c;最早的时候应该都是各自分开的几个产品&#xff0c;近年合并到一块上了SAP Build平台 现在看官网的介绍应该是有三四个产品被集成进来了&#xff0c;分别是SAP IRPA&#xff0c;SAP Workflow&#xf…

uniapp使用一键登录(前后端两种实现全过程、附代码)

1.开通uni一键登录、开通服务空间uni-app官网 开通流程(业务开通 | uniCloud) 2. 开发:一键登录代码 & 云函数代码 3.排查报错 官方给出三种方式 本人使用了调试了第一种(前端调用)与第三种(后端调用,安全性好) 第一种(前端) 1.关联服务空间、创建云函数名…

大模型算法办备案全网最详细说明(+附件)

已成功备案产品&#xff08;近130家&#xff0c;不包括审核中的&#xff09; 一、大模型算法备案的强制性 二、生成式人工智能(大语言模型)安全评估要点 三、大模型备案必备材料重点说明 四、大模型备案填报流程 五、大模型备案时间成本对比 六、备案建议 附录、过程性材料 一…

# Mybatis 高级用法和tk.mybatis使用

Mybatis 高级用法和tk.mybatis使用 文章目录 Mybatis 高级用法和tk.mybatis使用使用SelectProvider、InsertProvider、UpdateProvider、DeleteProviderSelectProvider使用例子 tk.mybatis引入依赖查询实现实体映射类实体类规范 dao层调用dao 使用SelectProvider、InsertProvide…

使用CS抓取WIN2012明文密码

目录 实验概述&#xff1a; 开始实验&#xff1a; 实验准备&#xff1a; 打开CS&#xff1a; 生成木马控制wind2012&#xff1a; 抓取明文密码&#xff1a; 实验概述&#xff1a; win2012及win10版本是不允许将明文密码储存在内存中的&#xff0c;此时我们…

测试基础08:测试文档的编写(测试计划方案用例报告)

测试大纲 一、测试计划 1 概述 1.1 目的 简述本计划的目的&#xff0c;旨在说明各种测试阶段任务、人员分配和时间安排、工作规范等。测试计划包含足够的信息使测试人员明白项目需要做什么&#xff0c;是如何运作的。另外&#xff0c;清晰的文档结构能使任何一个读者在浏览…

如何利用向量数据库来弥补 LLM 的弱点

向量数据库使企业能够以经济且可持续的方式调整通用大型语言模型以供组织特定使用。 译自 How to Cure LLM Weaknesses with Vector Databases&#xff0c;作者 Naren Narendran。 多年来&#xff0c;人们一直在猜测人工智能对企业产生的潜在影响。现在&#xff0c;我们看到来自…

Ansible04-Ansible Vars变量详解

目录 写在前面6 Ansible Vars 变量6.1 playbook中的变量6.1.1 playbook中定义变量的格式6.1.2 举例6.1.3 小tip 6.2 共有变量6.2.1 变量文件6.2.1.1 变量文件编写6.2.1.2 playbook编写6.2.1.3 运行测试 6.2.2 根据主机组使用变量6.2.2.1 groups_vars编写6.2.2.2 playbook编写6.…

美国RAKsmart海外大带宽服务器的显著特点

美国RAKsmart海外大带宽服务器在当前的互联网服务领域中备受瞩目&#xff0c;其显著特点主要体现在以下几个方面&#xff1a; 高带宽资源&#xff1a;RAKsmart服务器拥有充足的带宽资源&#xff0c;最低提供100M独享带宽&#xff0c;并支持升级至G口、10G口大带宽方案。这种高带…

【验证码识别】Yolov8入门到实战点选验证码数据集分类训练,孪生训练,导出onnx,搭建部署接口

【验证码识别】Yolov8入门到实战点选验证码数据集分类训练&#xff0c;孪生训练&#xff0c;导出onnx&#xff0c;搭建部署接口 文章目录 【验证码识别】Yolov8入门到实战点选验证码数据集分类训练&#xff0c;孪生训练&#xff0c;导出onnx&#xff0c;搭建部署接口声明一、标…

C++ vector的使用和简单模拟实现(超级详细!!!)

目录 前言 1.STL是什么 2.vector使用 2.1 vector简介 2.2 常用接口函数 1. 构造函数 2.operator[ ]和size&#xff0c;push_back 3. 用迭代器进行访问和修改 4. 范围for遍历 5.修改类型函数 pop_back find insert erase 6. 容量相关函数capacity resize reserve 3.…

知识图谱抽取实战

相关代码见文末 1.知识图谱应用场景 知识图谱是一种先进的数据组织形式,它通过图数据结构来表示实体(如人、地点、概念)及其之间的复杂关系,便于机器理解和处理。这种结构化知识库允许高效的信息检索、推理和知识发现,尤其适用于处理高度关联且需要深度理解的领域,如医学…