求助,大佬帮忙解答一下,感谢。

## 题目内容

阅读getCondition方法,找出其中的错误点并修复

- 要求不能使用第三方包,只能用JDK中的方法
- 要求对修复之后的方法进行测试,并打印结果

## 代码片段

```Java
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;

public class SQLConstructor {
    
    public static void main(String[] args) {
        System.out.println("阅读getCondition方法,找出其中的错误点并修复");
        System.out.println("要求不能使用第三方包,只能用JDK中的方法");
        System.out.println("要求对修复之后的方法进行测试,并打印结果");
    }

    /**
     * 构造查询SQL语句
     * @param searchParams
     * @param values
     * @return 返回SQL
     */
    private static String getCondition(Map<String, Object> searchParams, List<Object> values) {

        StringBuilder sb = new StringBuilder();

        for (String s : searchParams.keySet()) {
            if ("startTime".equals(s)) {
                if (String.valueOf(searchParams.get("startTime")).contains(":")) {
                    throw new RuntimeException("请使用时间进行查询!");
                } else {
                    sb.append("UPDATE_TIME >= ? AND ");
                    values.add(paseDateFromLongStr(searchParams.get(s).toString()));
                }
            } else if (s.equals("DIC_TYPE")) {
                sb.append(" DIC_TYPE IN (?,?,?) AND ");
                String[] split = String.valueOf(searchParams.get(s)).split(",");
                if (split.length == 3) {
                    values.addAll(Arrays.asList(split));
                } else if (split.length < 3) {
                    // TODO 处理非3的情况
                }
            } else if ("ITEM_ID".equals(s)) {
                sb.append("ITEM_ID =? AND ");

            } else if ("ORG_ID".equals(s) || "COMPANY_ID".equals(s)) {
                sb.append(s + " =? AND ");
                values.add(searchParams.get(s));
            }

        }
        if (!searchParams.keySet().contains("DIC_CODE")) {
            sb.append(" DIC_CODE IN ('JOB_DUTY','GROUP_JOB_DUTY','USER_POST') AND ");
        }
        return sb.toString();

    }

    public static Date paseDateFromLongStr(String dateStr) {
        Date date = null;
        try {
            Long timestamp = Long.parseLong(dateStr);
            date = new Timestamp(timestamp);
        } catch (Exception e) {
            throw new RuntimeException(
                    "请检查日期格式(需使用时间戳格式的时间)");
        }
        return date;
    }
}
```

#Java找工作#
全部评论
有朋友找到哪里错了嘛,麻烦指出一下,感激不尽
点赞 回复 分享
发布于 2022-03-28 13:10

相关推荐

头像
昨天 13:17
已编辑
苏州大学 Java
面试官真的很有耐心,人非常nice,但问得也是真的很细。面完半小后约HR面。有没有人说说HR面会问啥?【希望能过吧,以前真没想到面个试这么耗精力,这一周感觉都被掏空了】1.请做一下自我介绍。2.你掌握的数据结构有哪些?3.请讲一下一致性哈希的原理和解决的问题。4.请讲一下Ring&nbsp;buffer(环形缓冲区)的相关内容。5.请讲解一下HTTP状态码的相关分类和含义(如2xx、3xx、4xx、5xx)。6.请讲解一下四层网络负载均衡和七层网络负载均衡的区别,以及各自的应用场景。7.请讲一下反向代理的原理和常用工具,以及正向代理的相关内容。8.进程间通信的方式有哪些?哪种方式效率更高,为什么?9.请讲一下MySQL主从复制的实现原理(基于binlog、redolog相关)。10.多个从节点之间出现数据不一致的问题该如何解决?11.你了解的消息中间件有哪些?RabbitMQ、RocketMQ、Kafka这三种消息中间件的区别是什么?12.Redis中最常用的数据结构有哪些?13.请讲一下Redis中Zset(sorted&nbsp;set)的底层实现和优化策略。14.什么是小哈希和大哈希,二者在查找、插入性能上有什么区别?15.请讲一下TCC分布式事务算法的相关内容,以及它和2PC、3PC的区别。16.你在项目中使用的服务发现组件是什么,它的实现原理是什么?17.你在项目中使用的序列化协议是什么,为什么选择该协议?18.长连接的适用场景是什么?哪些场景不适合使用长连接,原因是什么?19.请设计一个评论系统(包括数据库表设计、数据结构、关联关系等)。20.【反问】想具体知道会做哪些模块的工作?有没有导师?
查看78道真题和解析
点赞 评论 收藏
分享
小浪_Coding:1. 个人技能排版太乱, 写的技术栈太浅了, 跟测试,自动化相关的太少; 2. 项目开发类的太简单没有亮点, 算法类的项目建议只放一个,最好有自动化,CI/CD, pipline的项目, 需要更换; 3.整体排版需要优化, SOOB打招呼都需要注意等.
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务