首页 > 数据库 >java之手搓简单ORM框架--SQL的DELETE

java之手搓简单ORM框架--SQL的DELETE

时间:2023-08-12 10:33:13浏览次数:40  
标签:aClass java -- SQL where id DELETE

1.手搓简单SQL增删改查框架-删除

1.1创建简单类,并使用泛型类,这里可能使用到之间写的三篇知识的内容,如果不了解的小伙伴可以去

java高级之泛型

java高级之映射

java高级之反射

当然,前提是必须要把数据库相关连接弄好,这里会专门出一篇 java之jdbc

现在咱们继续手搓框架开始叭!

1.2 前期的准备工作

这里已经在【手搓简单SQL增删改查框架-插入】的时候准备完成,如果没有准备的小伙伴可以去瞅瞅

并且这次依然延续用前两篇文章的模板,及dao、userdao、自定义接口、测试类文件

1.3 手搓!!!

删除的就很简单

直接开搓就完事了

就是干!!!

public int del(T t) throws Exception{
    //以下代码依然要拼接一条删除sql语句 DELETE FROM user WHERE id=88
    StringBuffer delete = new StringBuffer("DELETE FROM ");
    //通过反射获取类对象
    Class<?> aClass = t.getClass();
    //获取表名,前提是要判断类名与表名是否一致
    String simpleName = aClass.getSimpleName();
    TableName annotation = aClass.getAnnotation(TableName.class);
    if (annotation != null){
        simpleName = annotation.value();
    }
    //拼接表名
    delete.append(simpleName);

    //拿到id列名与列值
    String where = " where ";
    Field[] declaredFields = aClass.getDeclaredFields();
    for (Field declaredField : declaredFields) {
        declaredField.setAccessible(true);
        //通过注解获取id值
        TableId annotation1 = declaredField.getAnnotation(TableId.class);
        //判断id值,通过注解主要功能为判断id是否为主键,判断id是否与列名id一致
        if(annotation1 != null){
            String id = annotation1.value();
            Object o = declaredField.get(t);
            //拼接where
            where= where + id + "=" + o;
        }
    }
    delete.append(where);
    //        调用jdbc数据库运行sql语句
    Connection connection = DButils.getConnection();
    PreparedStatement preparedStatement = connection.prepareStatement(delete.toString());
    int i = preparedStatement.executeUpdate();
    return i;
}

1.3.1 猜想

这里有个猜想,如果可以的话,我感觉把对象传入直接换成id传入,可以更简便,要不然每次调用DELETE方法还要创建对象进去,属实麻烦。

如果可以直接传入id,万能id

感觉有可能

--------

 以上便是ORM框架中的SQL语句删除,如有漏缺请在下方留言告知,我会及时补充

 

标签:aClass,java,--,SQL,where,id,DELETE
From: https://www.cnblogs.com/9--1/p/17624466.html

相关文章

  • 冒泡排序
    #include<iostream>usingnamespacestd;intmain(){intt,a[4];for(inti=1;i<=3;i++){cin>>a[i];}for(inti=1;i<=2;i++){for(intj=1;j<=3-i;j++){if(a[j]<a[j+1]){t......
  • SpringBoot复习:(21)自定义ImportBeanDefinitionRegistrar
    要达到的目的:将某个包下使用了某个自定义注解(比如@MyClassMapper)的类注册到Spring容器。一、自定义注解:packagecom.example.demo.service;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)publ......
  • SpringBoot复习:(20)如何把bean手动注册到容器?
    可以通过实现BeanDefinitionRegistryPostProcessor接口,它的父接口是BeanFactoryPostProcessor.步骤:一、自定义一个组件类:packagecom.example.demo.service;publicclassMusicService{publicMusicService(){System.out.println("musicserviceconstructed!......
  • SpringBoot复习:(19)Condition接口和@Conditional注解
    Condition接口代码如下:publicinterfaceCondition{ booleanmatches(ConditionContextcontext,AnnotatedTypeMetadatametadata);}它是一个函数式接口,只有一个方法matches用来表示条件是否满足。matches方法中的ConditionContext类对象context可以通过getEnvironment方法获......
  • 11 外观模式 -- go语言设计模式
    外观模式又称为门面模式,它是一种结构型模式。引入外观模式后调用方与多个子系统的通信必须通过一个统一的外观对象进行,外观模式为子系统中的功能接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这些子系统更加容易使用。外观模式的实现代码packagemainimport"......
  • 简单工厂模式
     目录前言导语代码部分总结前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语简单工厂模式编辑......
  • 二分板子
    1.求最大值最小while(l<=r){  mid=(l+r)>>1;  if(check(mid))ans=mid,r=mid-1;    elsel=mid+1; }例题洛谷p3853路标设置code#include<bits/stdc++.h>usingnamespacestd;intl,n,k,a[100010],r,ll,mid,ans,cnt;boolcheck......
  • 产品代码都给你看了,可别再说不会DDD(一):DDD入门
    这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云(https://www.mryqr.com)为例,系统性地讲解DDD在落地实施过程中的各种典型实践,以及在面临实际业务场景时的诸多取舍。本系列包含以下文章:DDD入门(本......
  • Postman基础
    Postman基础参考博客:如何使用postman做接口测试常用的接口测试工具主要有以下几种:Postman:简单方便的接口调试工具,便于分享和协作。具有接口调试,接口集管理,环境配置,参数化,断言,批量执行,录制接口,MockServer,接口文档,接口监控等功能;JMeter:开源接口测试及压测工具,支持Lin......
  • quarkus依赖注入之十三:其他重要知识点大串讲(终篇)
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览本篇是《quarkus依赖注入》系列的终篇,前面十二篇已覆盖quarkus依赖注入的大部分核心内容,但依然漏掉了一些知识点,今天就将剩下的内容汇总,来个一锅端,轻松愉快的结......