简体   繁体   English

我该如何解决这个问题,它说的是 &#39;queryForObject(java.lang.String, java.lang.Object[], java.lang.Class<T> )&#39; 已弃用

[英]How do I fix this problem it say's 'queryForObject(java.lang.String, java.lang.Object[], java.lang.Class<T>)' is deprecated

I'm not sure how to fix this since I just started doing spring boot project last Thursday.我不知道如何解决这个问题,因为我上周四才开始做 Spring Boot 项目。 Unfortunately today is the deadline of my project so frankly I'm quite panicking right now :/不幸的是,今天是我项目的截止日期,所以坦率地说,我现在很恐慌:/

Here is my sample problem code:这是我的示例问题代码:

@Override
public Integer getCountByEmail(String email) {
    return jdbcTemplate.queryForObject(SQL_COUNT_BY_EMAIL, new Object[]{email}, Integer.class);
}

@Override
public User findById(Integer userId) {
    return null;
}

Here is the overall code of the Java Class:下面是Java类的整体代码:

package com.example.Spring.boot.Repositories;

import com.example.Spring.boot.Entity.User;
import com.example.Spring.boot.Exceptions.EtAuthException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;

import java.sql.PreparedStatement;
import java.sql.Statement;

@Repository
public class UserRepositoryImpl implements UserRepository {

private static final String SQL_CREATE = "INSERT INTO SB_USERS(USER_ID, 
FIRST_NAME, LAST_NAME, EMAIL," +`"PASSWORD) VALUES(NEXTVAL('SB_USERS_SEQ'), ?, ?, ?, ?)";`
private static final String SQL_COUNT_BY_EMAIL = "SELECT COUNT(*) FROM SB_USERS WHERE EMAIL = ?";
private static final String ID = "SELECT USER_ID, FIRST_NAME, LAST_NAME, EMAIL, PASSWORD " +`"FROM SB_USERS WHERE USER_ID = ?";`
       
@Autowired
JdbcTemplate jdbcTemplate;

@Override
public Integer create(String firstName, String lastName, String email, String password) throws EtAuthException {
    try {
        KeyHolder keyHolder = new GeneratedKeyHolder();
        jdbcTemplate.update(connection -> {
            PreparedStatement ps = connection.prepareStatement(SQL_CREATE, Statement.RETURN_GENERATED_KEYS);
            ps.setString(1, firstName);
            ps.setString(2, lastName);
            ps.setString(3, email);
            ps.setString(4, password);
            return ps;
        }, keyHolder);
        return (Integer) keyHolder.getKeys().get("USER_ID");
    }catch (Exception e) {
        throw new EtAuthException("Invalid details. Failed to create account");
    }
}

@Override
public User findByEmailAndPassword(String email, String password) throws EtAuthException {
    return null;
}

@Override
public Integer getCountByEmail(String email) {
    return jdbcTemplate.queryForObject(SQL_COUNT_BY_EMAIL, new Object[]{email}, Integer.class);
}

@Override
public User findById(Integer userId) {
    return null;
}

} }

The following method has been deprecated and must not be used:以下方法已被弃用,不得使用:

public <T> T queryForObject(String sql, @Nullable Object[] args, Class<T> requiredType)

Use the following equivalent method instead:请改用以下等效方法:

 <T> T queryForObject(String sql, Class<T> requiredType, @Nullable Object... args)

Example:例子:

return jdbcTemplate.queryForObject(SQL_COUNT_BY_EMAIL, Integer.class, email);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Eclipse jdk 11问题:java.lang.String类型无法解析。 它是从 required.class 文件中间接引用的 - Eclipse jdk 11 problem: The type java.lang.String cannot be resolved. It is indirectly referenced from required .class files AWS Lambda 无法从 START_OBJECT 令牌中反序列化“java.lang.String”的实例 - AWS Lambda Cannot deserialize instance of `java.lang.String` out of START_OBJECT token Talend Open Studio - 错误(sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain)) - Talend Open Studio - an error (sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain)) 知道如何解决这个问题吗? 线程“WindowsNativeRunloopThread”中的异常 java.lang.NoSuchMethodError - Any idea how to fix this? Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMethodError 如何使用JDK11防止java.lang.IllegalAccessError? - How to prevent java.lang.IllegalAccessError with JDK11? 如何解决 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException - How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 设置的 addAll 抛出 java.lang.UnsupportedOperationException - addAll for Set throws java.lang.UnsupportedOperationException 如何解决 java.lang.UnsupportedClassVersionError 错误? 我在哪里可以找到正确的 JRE 版本? - How to solve java.lang.UnsupportedClassVersionError error? Where can I found the right JRE version? 如何解决异常 java.lang.NoSuchFieldError: NOT_ISSUE - How I can resolve exception java.lang.NoSuchFieldError: NOT_ISSUE 修补java.base会导致java.lang.LinkageError - Patching java.base results in java.lang.LinkageError
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM