TDengine数据库整合MyBatis实现SpringBoot项目CRUD
TDengine数据库整合MyBatis实现SpringBoot项目CRUD
官网: https://docs.taosdata.com/
引入依赖
<!-- mybatis版本必须与druid版本兼容,否则无法创建DataSource --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version></dependency><dependency><groupId>com.taosdata.jdbc</groupId><artifactId>taos-jdbcdriver</artifactId><version>3.0.0</version></dependency>
修改配置文件
spring.datasource.driver-class-name=com.taosdata.jdbc.rs.RestfulDriver
spring.datasource.url=jdbc:TAOS-RS://124.220.26.176:6041/power?charset=UTF-8&locale=en_US.UTF-8&timezone=UTC-8
spring.datasource.username=test
spring.datasource.password=123456spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=5
# max wait time for get connection, ms
spring.datasource.druid.max-wait=60000spring.datasource.druid.validation-query=select server_status();
spring.datasource.druid.validation-query-timeout=5000
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=600000
spring.datasource.druid.max-evictable-idle-time-millis=900000# mybatis
mybatis.mapper-locations=classpath:mapper/*.xml
创建普通表
CREATE TABLE power.orders (ts TIMESTAMP NOT NULL,id INT,name VARCHAR(64),email VARCHAR(64),age INT,CONSTRAINT ts PRIMARY KEY (ts)
);
实体类
@Data
public class Orders {@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")Timestamp ts;Integer id;String name;Integer age;String email;}
Controller
@RestController
public class UserController {@Autowiredprivate OrderService orderService;@GetMapping("/list")public List<Orders> list(){return orderService.list();}@GetMapping("/pageList")public List<Orders> pageList(int offset, int pageSize){return orderService.pageList(offset,pageSize);}/*** 时间戳一样的时候 只能插入一条数据* @return*/@PostMapping("/addOrder")public Integer addOrder(){return orderService.addOrder();}@PostMapping("/insertOne")public Integer insertOne(){return orderService.insertOne();}/***可选参数,指定删除数据的过滤条件,不指定过滤条件则为表中所有数据,请慎重使用。特别说明,这里的 where 条件中只支持对第一列时间列的过滤。* @param date* @return*/@GetMapping("/delete")public Integer delete(String date){return orderService.delete(date);}/*** 更新* 可以通过写入重复时间戳的一条数据来更新时序数据* @return*/@GetMapping("/update")public Integer update(){return orderService.update();}}
service
public interface OrderService {Integer addOrder();Integer insertOne();List<Orders> list();List<Orders> pageList(int offset, int pageSize);Integer delete(String date);Integer update();
}
ServiceImpl
@Service
public class OrderServiceImpl implements OrderService{@Autowiredprivate OrderMapper orderMapper;@Overridepublic Integer addOrder() {Orders order=new Orders();order.setTs(new Timestamp(new Date().getTime()));order.setAge(11);order.setId(2);order.setName("张三");order.setEmail("12345");
// for (int i=0;i<10;i++){
// orderMapper.insert(order);
// }orderMapper.addOrder(order);return 1;}@Overridepublic Integer insertOne() {Orders order=new Orders();order.setTs(new Timestamp(new Date().getTime()));order.setAge(11);order.setId(2);order.setName("张三");order.setEmail("12345");
// for (int i=0;i<10;i++){
// orderMapper.insert(order);
// }orderMapper.insertOne(order);return 1;}@Overridepublic List<Orders> list() {return orderMapper.list();}@Overridepublic List<Orders> pageList(int offset, int pageSize) {return orderMapper.pageList(offset,pageSize);}@Overridepublic Integer delete(String date) {return orderMapper.delete(date);}@Overridepublic Integer update() {Orders order=new Orders();order.setTs(new Timestamp(new Date().getTime()));order.setAge(222);order.setId(333);order.setName("张3333");order.setEmail("12345");int update = orderMapper.update(order);return update;}
}
OrderMapper
public interface OrderMapper {/*** 新增* @author BEJSON* @date 2024/10/22**/@Insert("insert into orders (ts,id, name,email,age) values(#{ts},#{id},#{name},#{email},#{age})")int insert(Orders order);void insertOne(Orders order);void addOrder(Orders order);/*** 刪除* @author BEJSON* @date 2024/10/22**/int delete(String date);/*** 更新* @author BEJSON* @date 2024/10/22**/int update(Orders order);/*** 查询 根据主键 id 查询* @author BEJSON* @date 2024/10/22**/Orders load(int id);/*** 查询 分页查询* @author BEJSON* @date 2024/10/22**/List<Orders> pageList(@Param("offset") int offset,@Param("pageSize") int pageSize);/*** 查询 分页查询 count* @author BEJSON* @date 2024/10/22**/int pageListCount(int offset,int pagesize);List<Orders> list();
}
mapper.xml
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.OrderMapper"><resultMap id="BaseResultMap" type="com.example.domain.Orders" ><result column="id" property="id" /><result column="name" property="name" /><result column="age" property="age" /><result column="email" property="email" /></resultMap><sql id="Base_Column_List">ts,id,name,email,age</sql><insert id="insertOne" parameterType="com.example.domain.Orders">insert into orders (ts,id, name,email,age) values(#{ts},#{id},#{name},#{email},#{age})</insert><insert id="addOrder" parameterType="com.example.domain.Orders">insert into orders(<if test="ts != null ">ts,</if><if test="id != null ">id,</if><if test="name != null and name != ''">name,</if><if test="email != null and email != ''">email,</if><if test="age != null ">age</if>)values(<if test="ts != null ">#{ts},</if><if test="id != null ">#{id},</if><if test="name != null and name != ''">#{name},</if><if test="email != null and email != ''">#{email},</if><if test="age != null ">#{age}</if>)</insert><delete id="delete" >DELETE FROM ordersWHERE ts > #{date}</delete><update id="update" parameterType="com.example.domain.Orders">UPDATE orders<set><if test="null != name and '' != name">name = #{name},</if><if test="null != age ">age = #{age},</if><if test="null != email and '' != email">email = #{email}</if></set>WHERE id = #{id}</update><select id="load" resultMap="BaseResultMap">SELECT <include refid="Base_Column_List" />FROM ordersWHERE id = #{id}</select><select id="pageList" resultMap="BaseResultMap">SELECT <include refid="Base_Column_List" />FROM ordersLIMIT #{offset}, #{pageSize}</select><select id="list" resultMap="BaseResultMap">SELECT <include refid="Base_Column_List" />FROM orders</select><select id="pageListCount" resultType="java.lang.Integer">SELECT count(1)FROM orders</select></mapper>
相关文章:
TDengine数据库整合MyBatis实现SpringBoot项目CRUD
TDengine数据库整合MyBatis实现SpringBoot项目CRUD 官网: https://docs.taosdata.com/引入依赖 <!-- mybatis版本必须与druid版本兼容,否则无法创建DataSource --><dependency><groupId>com.alibaba</groupId><artifactId&…...
1493. 删除一个元素以后全为1的最长子数组 - 题解
> Problem: 1493. 删掉一个元素以后全为 1 的最长子数组 1493. 删除一个元素以后全为1的最长子数组 - 题解 问题描述 给定一个二进制数组 nums,你需要从中删除一个元素。请你在删掉元素后返回最长的且只包含 1 的非空子数组的长度。如果不存在这样的子数组&…...
密钥管理方法DUKPT的OpenSSL代码实现Demo
目录 1 DUKPT简介 2 基本概念 2.1 BDK 2.2 KSN 2.3 IPEK 2.4 FK 2.5 TK 3 工作流程 3.1 密钥注入过程 3.2 交易过程 3.3 BDK派生IPEK过程 3.4 IPEK计算FK过程 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 5 在线工具 6 标准下载 1 DUKPT简介 DUKPT&a…...
计算机视觉中的坐标变换
1.概述 高级驾驶辅助系统(ADAS)领域,存在多种常用的坐标系:LiDAR 坐标系、车辆坐标系、相机坐标系、图像坐标系等。因为和这些坐标系频繁打交道,本文对点的旋转与坐标系旋转等变换给出直观推导与说明。 2.坐标点平移…...
C++——NetWork
1.network.h #include <iostream> #include <winsock2.h> #include <cstring>class NetWork {int type; // 通信协议类型int sock_fd; // socket 描述符sockaddr_in addr; // 通信地址int addrlen; // 通信地址字节数bool issvr; …...
iOS -- 代码优化
目录 1. filter 优化2. return 优化案例1案例2 3. for循环优化案例1案例2 4. 枚举 优化5. 未完待续…… 1. filter 优化 原代码 if var vcs vcs {for vc in vcs {if vc is XXLoginViewController {if let index vcs.firstIndex(of: vc) {vcs.remove(at: index)}} }修改后 v…...
docker配置普通用户访问
文章目录 🌕方法一:让所有用户都可以使用docker🌙创建docker用户组🌙把当前用户加入docker用户组🌙单独把某个用户加入docker用户组🌙更新激活docker用户组🌙验证不需要sudo执行docker命令&…...
php后端学习,Java转php
遇到前后端跨域 php解决跨域问题可以加上下面的代码: header(“Access-Control-Allow-Origin:*”); 并且查看自己的数据库信息是否连接成功。 从Java转php 个人感受php跟偏向前端, 写后端逻辑时没有像java又springboot工具方便。 但是和前端联调很方便…...
Elasticsearch 中管道介绍
Elasticsearch 中管道 文章目录 Elasticsearch 中管道1、管道( Ingest Pipeline)1.**管道描述**2.**处理器(Processors)**(1)**`attachment`处理器**(2)**`remove`处理器**3.**整体流程**4.**应用场景**示例:如何使用该管道总结2、如何设置`attachment`处理器取出`指定…...
将jinjia2后端传到前端的字典数据转化为json
后端代码 from flask import Flask, render_template, jsonifyapp Flask(__name__)app.route(/) def index():data {key: value, number: 123}return render_template(index.html, datadata)if __name__ __main__:app.run(debugTrue) 前端代码 使用tojson过滤器即可 <!…...
Linux中如何理解一切皆文件
根据之前的学习我们会有一些少许的疑惑,我们的stdin ,stdout,stderr访问的是键盘显示器,然而键盘显示器等他们都有一个共同的特点就是他们都是外设,那么这些外设是怎么被看成是文件的呢? 看图可以知道硬件的…...
【贪心算法】(第十一篇)
目录 坏了的计算器(medium) 题目解析 讲解算法原理 编写代码 合并区间(medium) 题目解析 讲解算法原理 编写代码 坏了的计算器(medium) 题目解析 1.题目链接:. - 力扣(Leet…...
React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode
文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用:注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…...
深入解析 Jenkins 自动化任务链:三大方法实现任务间依赖与状态控制
文章目录 前言1. 使用 “Build Trigger”(构建触发器)2. 使用 Jenkins Pipeline 实现任务触发3. 使用 Jenkins 的 “Parameterized Trigger Plugin” 插件例子1:任务 A 成功后自动执行任务 B例子2:任务 A 成功后自动执行 Pipeline…...
无人机飞手执照培训为什么需要脱产学习?
无人机飞手执照培训需要脱产学习的原因主要基于以下几个方面: 一、知识体系的系统性与复杂性 无人机飞手培训涵盖的内容广泛且深入,包括无人机基础知识、飞行原理、气象学、法律法规等多个方面。这些知识体系相互关联,需要学员进行系统的学…...
PostgreSQL(十三)pgcrypto 扩展实现 AES、PGP 加密,并自定义存储过程
目录 一、pgcrypto 简介1.1 安装 pgcrypto 扩展1.2 pgcrypto 包含的函数 二、用法①:对称加密(使用 AES、Blowfish 算法)2.1 密钥2.2 密钥偏移量 三、用法②:PGP加解密3.1 什么是PGP算法?3.2 使用 GPG 生成密钥对3.3 列…...
uniapp使用webView打开的网页有缓存如何解决(APP,微信小程序)
1、给webView的url增加时间戳 this.webviewUrl ${url}?t${new Date().getTime()}; // 添加时间戳 2、在nginx服务器上添加响应头,告诉浏览器不可以使用缓存 location / {root /opt/webs/lcdp-client/dist;index index.html index.htm;try_files $uri $uri/ /…...
HarmonyOS 模块化设计
1.HarmonyOS 模块化设计 模块化设计文档 应用程序包开发与使用文档 1.1. 概述 组件化一直是移动端比较流行的开发方式,有着编译运行快,业务逻辑分明,任务划分清晰等优点,HarmonyOs组件化的使用,有利于模块之间的解…...
解决docker拉取readeck镜像报Error response from daemon: toomanyrequests问题
readeck 是一个内容中心,目前已支持中文翻译 这是本地化部署后的效果: 原命令为: docker run --rm -ti -p 8000:8000 -v readeck-data:/readeck codeberg.org/readeck/readeck:latest Unable to find image codeberg.org/readeck/readeck:la…...
duilib的应用 在双屏异分辨率的显示器上 运行显示不出来
背景:win11,duilib应用,双显示器,两台分辨率相同,分别设置不同的缩放以后,应用运行以后,程序闪一下消失或者程序还在,但是UI显示不出来。 原因 窗口风格设置不合理,所以…...
零代码快速开发智能体 |甘肃旅游通
在互联网信息爆炸的时代,寻找一处让人心动的旅游胜地往往需要花费大量的时间和精力。而今天,我要向大家介绍一款能够帮助你轻松规划甘肃之行的智能体——“甘肃旅游通”。这款智能体通过低代码开发,集合了丰富的旅游信息和个性化推荐功能&…...
【MATLAB源码-第187期】基于matlab的人工蜂群优化算法(ABC)机器人栅格路径规划,输出做短路径图和适应度曲线。
操作环境: MATLAB 2022a 1、算法描述 Artificial Bee Colony(ABC)算法是一种模仿蜜蜂觅食行为的优化算法,它通过模拟蜜蜂群体的社会结构和行为来解决数学优化问题。本文将详细介绍ABC算法的基本原理、算法流程、以及在实际应用…...
qt获取本地语言
获取本地语言 #define QSTRING_TO_UTF8(str) std::string(str.toUtf8()) enum LanguageType {kLanguageTypeChinese,kLanguageTypeTradition,kLanguageTypeEnglish };QLocale qlLanguage;QString qstrLangCode qlLanguage.languageToString(qlLanguage.language());LOG(INFO)…...
【Spring篇】Spring中的Bean管理
🧸安清h:个人主页 🎥个人专栏:【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯Spring IOC容器 Ὢ…...
UV灯 VS LED灯,LED美甲灯是紫外线灯吗?
美甲灯是使甲油胶固化的重要工具,目前最常用的美甲灯一般是UV灯、LED灯以及CCFL灯。 一、不同的灯之间到底有什么区别呢?这次让我们好好看一下 UV灯: UV灯是紫外线灯管的简称。UV灯属于热阴极荧光灯,发出UVA(长波紫…...
得物App3D博物馆亮相“两博会”,正品保障助力消费体验升级
近日,2024中国体育文化博览会、中国体育旅游博览会(以下简称“两博会”)在苏州国际展览中心盛大开幕。本次展会汇聚了众多国内外体育文化、体育旅游领域的顶尖企业和品牌,共同展示体育产业的发展成果和最新趋势。在C展馆C21展位&a…...
rancher安装并快速部署k8s 管理集群工具
主机准备 准备4台主机 3台用于k8s集群 ,1台用于rancher 每台服务器新增配置文件 vi etc/sysctl.confnet.ipv4.ip_forward 1 刷新生效 sysctl –p 安装docker 安装的时候可以去github上检索rancher看看最新版本适配那个版本的docker,这里安装23.0.1…...
NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置
国标GB28181视频平台EasyCVR视频融合平台可拓展性强、视频能力灵活,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析接入等功能。其中,在语音对讲方面,NVR接入录像回放平台目前…...
八、Linux 系统安全:守护你的数字堡垒
Linux 系统安全:守护你的数字堡垒 在当今数字化时代,Linux 系统因其稳定性、高效性和开源性而被广泛应用于服务器、工作站以及各种嵌入式设备中。然而,随着网络攻击的日益频繁和复杂,确保 Linux 系统的安全变得至关重要。本文将深…...
PTA数据库编程练习合集
10-1 查询重量在[40,65]之间的产品信息 本题目要求编写SQL语句, 检索出product表中所有符合40 < Weight < 65的记录。 提示:请使用SELECT语句作答。 表结构: CREATE TABLE product (Pid varchar(20), --商品编号PName varchar(50), --商品名…...
2017年做网站维护总结/软文营销定义
分享第一份Java基础-中级-高级面试集合 Java基础(对象线程字符接口变量异常方法) Java中级开发(底层Spring相关Redis分布式设计模式MySQL高并发锁线程) Java高级“程序猿”(高并发Redis缓存分布式消息队列高可用微服务…...
国家示范院校建设网站/企业网站营销
问题描述: 脚本中做了crop和resize的操作。然后save as 。结果出现了灰蒙蒙的图片 上图是“看不清”、下图是“灰蒙蒙”。 因为图片出现这种情况后,导致之前训练好的模型就都不能用。所以,我必须解决这个bug。 debug记录: &am…...
个人建设网站流程/网上营销的平台有哪些
MyBatis核心组件 持久层的概念和MyBatis的特点 持久层可以将业务数据存储到磁盘,具备长期存储能力。一般执行持久化任务的都是数据库系统,缺点是比较慢。Java互联网应用可以通过MyBatis框架访问数据库,其优势在于: 不屏蔽SQL&a…...
2_试列出网站开发建设的步骤/网页设计模板素材图片
计算机辅助制造 UG CAM培训内容UGNX6是当前最新版本的UG系列软件,是目前市场上功能最为齐全的产品设计工具之一。它以功能丰富、效率高、可靠性高而著称,是适合进行数控加工的工具软件。UGNX CAM的数控加工功能非常强大,加工方法的多样性和操…...
门户网站做啥/网络营销运营公司
java绘图坐标体系 像素:计算机屏幕上显示的内容都是屏幕上的每一个像素组成。例如:计算机显示器的分辨率是800*600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。像素是一个密度…...
南川网站建设/自媒体平台大全
今天突然磁盘满了,查看了一下,都是k8s、docker关联的目录占用太大(/var/lib/docker/overlay2和/data/registry/docker/registry/v2/blobs/sha256),使用第一种方式删除了悬空镜像,清理了19G的空间࿰…...