当前位置: 首页 > article >正文

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=123456

spring.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=60000

spring.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 {

    @Autowired
    private 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{

    @Autowired
    private OrderMapper orderMapper;
    @Override
    public 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;
    }

    @Override
    public 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;
    }

    @Override
    public List<Orders> list() {
        return orderMapper.list();
    }

    @Override
    public List<Orders> pageList(int offset, int pageSize) {
       return orderMapper.pageList(offset,pageSize);
    }

    @Override
    public Integer delete(String date) {
        return orderMapper.delete(date);
    }

    @Override
    public 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 orders
        WHERE 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 orders
        WHERE id = #{id}
    </select>

    <select id="pageList" resultMap="BaseResultMap">
        SELECT <include refid="Base_Column_List" />
        FROM orders
        LIMIT  #{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>

http://www.kler.cn/news/367450.html

相关文章:

  • 【C语言】预处理(预编译)详解(上)(C语言最终篇)
  • <Tauri>tauri2.0框架下,基于qwik(前端)和rust(后端)结合的桌面程序体验
  • 深度优先算法(DFS)洛谷P1683-入门
  • 【Linux学习】(5)软件包管理器yum|编辑器vim
  • 模型 支付矩阵
  • 流媒体协议.之(RTP,RTCP,RTSP,RTMP,HTTP)(一)
  • 标准版增加订单导出的字段
  • Go encoding/json库
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day6
  • CodeQL学习笔记(1)-QL语法(逻辑连接词、量词、聚合词、谓词和类)
  • 守护灯杆安全的智能卫士 —— 灯杆倾斜检测传感器
  • 【AIGC】AI如何匹配RAG知识库:混合检索
  • 【CTF】文件包含漏洞-php://filter 流包装器 【详】
  • acwing排列数字
  • 一个和v-html功能一样且能防止xss攻击的插件
  • Java多线程详解②(全程干货!!!)Thread Runnable
  • 本地docker-compose仓库搭建以及推送docker镜像到仓库
  • 音视频入门基础:AAC专题(11)——AudioSpecificConfig简介
  • 【ChatGPT】在多轮对话中引导 ChatGPT 保持一致性
  • 【Qt6聊天室项目】 主界面功能实现
  • 基于SpringBoot的酒店管理系统的设计与实现
  • echarts5.2.2实现 水球图表
  • pdf表格读取和筛选
  • Git process for submit and download
  • 传输层TCP
  • Flutter鸿蒙next 中如何实现 WebView【跳、显、适、反】等一些基础问题