tp5 使用DB新增修改方法,详细注解

TP5数据库操作:新增与修改详解
本文介绍使用ThinkPHP5(TP5)框架进行数据库表数据的新增和修改方法,通过DB助手类详细注解,帮助理解操作过程。

一个tp5 简单新增修改表数据方法

 //tp5 使用DB新增修改方法
    public function studentSave(){
        //第一种用户提交的信息
        $data=[
            'name'=>input('name'),
            'sex'=>input('sex'),
            'student_id'=>input('student_id')
        ];
        //第二种用户提交的信息 $data=input();
        //第三种用户提交的信息 $data = Request::param();
        $id=input('id'); //获取id

        //如果id存在,就根据id进行修改操作,如果不存在就进行新增操作。
        if ($id){
            $i=Db::table('student')->where('id',$id)->update($data);
        }else{
            $i=Db::table('student')->insert($data);
        }
        //前面已经完成了新增或者修改操作 $i是执行完成这一系列操作后的返回值
        //如果$i有值,就是操作成功,如果没有就是操作失败
        if ($i){
            //返回json数据格式
            return json([
                'code'=>$i, //$i如果更新成功则为1,反之为空或0.
                'msg'=>'更新成功',
            ]);
        }else{
            return json([
                'code'=>$i,
                'msg'=>'更新失败',
            ]);
        }
    }
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.tplink.nbu.demo.basicspringboot.DelayConsume$1 and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.tplink.smb.eventcenter.port.kafka.delay.DelayEvent["eventFuture"]) at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1300) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:46) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:29) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4568) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3821) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.tplink.smb.eventcenter.api.util.JsonUtils.bean2Json(JsonUtils.java:62) ~[eventcenter.api-1.4.5002-test-SNAPSHOT.jar:1.4.5002-test-SNAPSHOT] at com.tplink.smb.eventcenter.port.kafka.KafkaEventCenter.sendGenerically(KafkaEventCenter.java:825) [eventcenter.kafka-1.4.5002-test-SNAPSHOT.jar:1.4.5002-test-SNAPSHOT] at com.tplink.smb.eventcenter.port.kafka.KafkaEventCenter.sendGenerically(KafkaEventCenter.java:770) [eventcenter.kafka-1.4.5002-test-SNAPSHOT.jar:1.4.5002-test-SNAPSHOT] at com.tplink.smb.eventcenter.port.kafka.KafkaEventCenter.sendDelay(KafkaEventCenter.java:346) [eventcenter.kafka-1.4.5002-test-SNAPSHOT.jar:1.4.5002-test-SNAPSHOT] at com.tplink.nbu.demo.basicspringboot.DelayConsume.run(DelayConsume.java:53) [classes/:na] at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) [spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) [spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) [spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) [spring-boot-2.7.8.jar:2.7.8] at com.tplink.nbu.demo.basicspringboot.DelayConsume.main(DelayConsume.java:46) [classes/:na] 2025-10-14 10:33:13.914 WARN 27616 --- [ main] c.t.s.e.port.kafka.KafkaEventCenter : event is null, please send nonnull message 2025-10-14 10:33:13.950 INFO 27616 --- [_consumer_group] o.a.kafka.common.utils.AppInfoParser : Kafka version: 2.8.0 2025-10-14 10:33:13.950 INFO 27616 --- [_consumer_group] o.a.kafka.common.utils.AppInfoParser : Kafka commitId: ebb1d6e21cc92130 2025-10-14 10:33:13.950 INFO 27616 --- [_consumer_group] o.a.kafka.common.utils.AppInfoParser : Kafka startTimeMs: 1760409193949 2025-10-14 10:33:13.951 INFO 27616 --- [llo-topic_delay] o.a.kafka.common.utils.AppInfoParser : Kafka version: 2.8.0 2025-10-14 10:33:13.951 INFO 27616 --- [_consumer_group] c.t.s.e.p.k.c.GenericKafkaConsumerTask : start to consumer kafka topic: delay_topic_level_2 2025-10-14 10:33:13.951 INFO 27616 --- [llo-topic_delay] o.a.kafka.common.utils.AppInfoParser : Kafka commitId: ebb1d6e21cc92130 2025-10-14 10:33:13.951 INFO 27616 --- [llo-topic_delay] o.a.kafka.common.utils.AppInfoParser : Kafka startTimeMs: 1760409193949 2025-10-14 10:33:13.951 INFO 27616 --- [_consumer_group] c.t.s.e.p.k.c.AbstractTaskService : KafkaConsumerTask is running! topic:delay_topic_level_2 2025-10-14 10:33:13.951 INFO 27616 --- [llo-topic_delay] c.t.s.e.p.k.consumer.KafkaConsumerTask : start to consumer kafka topic: vms_dlq_hello-topic 2025-10-14 10:33:13.951 INFO 27616 --- [llo-topic_delay] c.t.s.e.p.k.c.AbstractTaskService : KafkaConsumerTask is running! topic:vms_dlq_hello-topic 2025-10-14 10:33:13.951 INFO 27616 --- [_consumer_group] o.a.k.clients.consumer.KafkaConsumer : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Subscribed to topic(s): delay_topic_level_2 2025-10-14 10:33:13.951 INFO 27616 --- [llo-topic_delay] o.a.k.clients.consumer.KafkaConsumer : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Subscribed to topic(s): vms_dlq_hello-topic 2025-10-14 10:33:14.106 INFO 27616 --- [llo-topic_delay] org.apache.kafka.clients.Metadata : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Cluster ID: Cp8MopI8TC6QJ8pHpIkP9A 2025-10-14 10:33:14.106 INFO 27616 --- [_consumer_group] org.apache.kafka.clients.Metadata : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Cluster ID: Cp8MopI8TC6QJ8pHpIkP9A 2025-10-14 10:33:14.106 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Discovered group coordinator admin1-virtual-machine:9092 (id: 2147483647 rack: null) 2025-10-14 10:33:14.106 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Discovered group coordinator admin1-virtual-machine:9092 (id: 2147483647 rack: null) 2025-10-14 10:33:14.529 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] (Re-)joining group 2025-10-14 10:33:14.529 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] (Re-)joining group 2025-10-14 10:33:14.542 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] (Re-)joining group 2025-10-14 10:33:14.542 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] (Re-)joining group 2025-10-14 10:33:14.544 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Successfully joined group with generation Generation{generationId=1, memberId='consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357-2e8c69d8-3a94-4c59-a012-08f1b57ea12b', protocol='cooperative-sticky'} 2025-10-14 10:33:14.544 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Successfully joined group with generation Generation{generationId=73, memberId='consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc-0a62b905-9bd4-4718-9dda-6580e630d9d9', protocol='cooperative-sticky'} 2025-10-14 10:33:14.545 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Finished assignment for group at generation 1: {consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357-2e8c69d8-3a94-4c59-a012-08f1b57ea12b=Assignment(partitions=[delay_topic_level_2-0])} 2025-10-14 10:33:14.545 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Finished assignment for group at generation 73: {consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc-0a62b905-9bd4-4718-9dda-6580e630d9d9=Assignment(partitions=[vms_dlq_hello-topic-0])} 2025-10-14 10:33:14.548 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Successfully synced group in generation Generation{generationId=73, memberId='consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc-0a62b905-9bd4-4718-9dda-6580e630d9d9', protocol='cooperative-sticky'} 2025-10-14 10:33:14.548 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Updating assignment with Assigned partitions: [vms_dlq_hello-topic-0] Current owned partitions: [] Added partitions (assigned - owned): [vms_dlq_hello-topic-0] Revoked partitions (owned - assigned): [] 2025-10-14 10:33:14.548 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Notifying assignor about the new Assignment(partitions=[vms_dlq_hello-topic-0]) 2025-10-14 10:33:14.549 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Adding newly assigned partitions: vms_dlq_hello-topic-0 2025-10-14 10:33:14.549 INFO 27616 --- [llo-topic_delay] com.tplink.smb.eventcenter.api.Handler : ending rebalance! 2025-10-14 10:33:14.551 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Found no committed offset for partition vms_dlq_hello-topic-0 2025-10-14 10:33:14.553 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Found no committed offset for partition vms_dlq_hello-topic-0 2025-10-14 10:33:14.564 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Successfully synced group in generation Generation{generationId=1, memberId='consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357-2e8c69d8-3a94-4c59-a012-08f1b57ea12b', protocol='cooperative-sticky'} 2025-10-14 10:33:14.565 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Updating assignment with Assigned partitions: [delay_topic_level_2-0] Current owned partitions: [] Added partitions (assigned - owned): [delay_topic_level_2-0] Revoked partitions (owned - assigned): [] 2025-10-14 10:33:14.565 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Notifying assignor about the new Assignment(partitions=[delay_topic_level_2-0]) 2025-10-14 10:33:14.565 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Adding newly assigned partitions: delay_topic_level_2-0 2025-10-14 10:33:14.565 INFO 27616 --- [_consumer_group] com.tplink.smb.eventcenter.api.Handler : ending rebalance! 2025-10-14 10:33:14.566 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Found no committed offset for partition delay_topic_level_2-0 2025-10-14 10:33:14.566 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Found no committed offset for partition delay_topic_level_2-0 2025-10-14 10:33:14.574 INFO 27616 --- [_consumer_group] o.a.k.c.c.internals.SubscriptionState : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Resetting offset for partition delay_topic_level_2-0 to position FetchPosition{offset=344, offsetEpoch=Optional.empty, currentLeader=LeaderAndEpoch{leader=Optional[admin1-virtual-machine:9092 (id: 0 rack: null)], epoch=absent}}. 2025-10-14 10:33:14.574 INFO 27616 --- [llo-topic_delay] o.a.k.c.c.internals.SubscriptionState : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Resetting offset for partition vms_dlq_hello-topic-0 to position FetchPosition{offset=0, offsetEpoch=Optional.empty, currentLeader=LeaderAndEpoch{leader=Optional[admin1-virtual-machine:9092 (id: 0 rack: null)], epoch=absent}}. 2025-10-14 10:33:14.575 INFO 27616 --- [_consumer_group] o.a.k.clients.consumer.KafkaConsumer : [Consumer clientId=consumer_10.13.35.30_c4db0115-18e7-456f-b4d5-740d02400357, groupId=delay_consumer_group] Seeking to offset 344 for partition delay_topic_level_2-0 2025-10-14 10:33:14.576 INFO 27616 --- [llo-topic_delay] o.a.k.clients.consumer.KafkaConsumer : [Consumer clientId=consumer_10.13.35.30_aef0f87e-328a-4228-b205-2c2452e3a9fc, groupId=delay] Seeking to offset 0 for partition vms_dlq_hello-topic-0 public void registerDelayConsumer(String delayTopic, ExecutorService executorService) { String delayGroupId = "delay_consumer_group"; // 构造延迟处理器时,注入已有scheduledExecutorService DelayHandler delayHandler = new DelayHandler(this, scheduledExecutorService); // 调用原始注册逻辑,注册延迟主题的消费者 registerUnicastGenerically( delayTopic, // 监听的延迟主题(支持通配或具体前缀) delayGroupId, // 延迟消费者固定组ID delayHandler, executorService, DelayEvent.class// 使用延迟处理器 ); }public void sendDelay(@Nonnull String topic, String key, Integer partition, @Nonnull Event event, long delayMs, @Nonnull DelayQueueStrategy strategy, EventFuture eventFuture) { int level = strategy.getTargetDelayLevel(delayMs); String delayTopic = String.format("delay_topic_level_%d", level); event.setTimeStamp(System.currentTimeMillis()); long expirationTime = event.getTimeStamp() + FIXED_DELAY_LEVELS.get(level); DelayEvent delayEvent = new DelayEvent(topic,key,partition,event,eventFuture,expirationTime); sendGenerically(delayTopic,delayEvent); }@Slf4j @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class}) @ComponentScan(basePackages = { "com.tplink.nbu.demo.basicspringboot", "com.tplink.smb.eventcenter.port.kafka.deadletter", "com.tplink.smb.eventcenter.api.config" }) public class DelayConsume implements CommandLineRunner { @Autowired private KafkaEventCenter eventCenter; @Autowired private DLQConfig deadLetterConfig; private static final String EVENT_TOPIC = "delay_topic_level_2"; public static void main(String[] args) { SpringApplication.run(DelayConsume.class, args); } @Override public void run(String... args) throws Exception { registerDelayConsumer(); registerEventConsumer(); eventCenter.sendDelay("vms_dlq_hello-topic", "key1", 0, new Event("key1", "延迟触发消息"), 2000, new ForceMatchStrategy(), new EventFuture() { @Override public void onSuccess(EventCenterSendResult eventCenterSendResult) { } @Override public void onFailure(Throwable throwable) { } }); } private void registerDelayConsumer() { eventCenter.registerDelayConsumer(EVENT_TOPIC, Executors.newSingleThreadExecutor()); } private void registerEventConsumer() { EventHandler eventHandler = event -> { // 打印消息内容和消费时间戳,明确消费时机 log.info("[消费时间:{}] 触发消费,消息内容:{}", LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME), event.getMessage()); }; eventCenter.registerUnicast( "vms_dlq_hello-topic", "delay", eventHandler, Executors.newSingleThreadExecutor() ); } } 请分析并解决
最新发布
10-15
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值