zoukankan      html  css  js  c++  java
  • 002.测验.Java之拼装SQL


    题图:两脚站在同一根高压电线上,电流基本上不从小鸟身上流过,小鸟是不会被电到的。

    002.测验.Java之拼装SQL

    这是一个十分简单但不实用的编程练习,拼装SQL。
    select一个表,where很多单纯的and条件。

    作者:史荣久 日期:2014-11-26 许可:CC BY-SA 3.0

    任务说明

    实现以下接口,完成练习目标。

    package com.moilioncircle.kiss;
    
    public interface Sql {
    
        public Sql select(String... fields);
    
        public Sql from(String table);
    
        public Sql where(String fieldAndOperator, Object value);
    
        public Sql and(String fieldAndOperator, Object value);
    
        public String build();
    }
    

    任务目标

    (1) 以下6个build()得出的sql,在MySql上执行,都返回1条记录。

    Sql sql = new <your-Sql-impl>();
    sql.select("id","birthday","homedir","description")
       .from("sqltest")
       .where("homedir=", "d:\jonny\")
       .build();
    
    sql.select("count(*)")
       .from("sqltest")
       .where("id>", Integer.valueOf(1))
       .and("birthday=", Date.valueOf("1971-01-01"))
       .build();
    
    sql.select("count(*)")
       .from("sqltest")
       .build();
    
    sql.select("1").build();
    
    sql.select("count(*)")
       .from("sqltest")
       .where("description=", "jonny's pet")
       .build();
    
    sql.select("count(*)")
       .from("sqltest")
       .where("description=", "ben said "hi tom!"")
       .build();
    

    (2) 以下3个build(),抛出异常(选择舒服的异常类型)

    sql.select("").build();
    
    sql.select(null).build();
    
    sql.select("count(*)")
       .where("description=", "jonny's pet")
       .build();
    

    测试数据

    通过以下SQL创建表和数据。

    CREATE TABLE `sqltest` (
    `id` INT NOT NULL,
    `birthday` DATE NULL,
    `homedir` VARCHAR(45) NULL,
    `description` VARCHAR(45) NULL,
    PRIMARY KEY (`id`));
    
    insert into sqltest(id,birthday,homedir,description) values
    (1,'1971-01-01','d:\jonny\','jonny''s pet'),
    (2,'1971-02-01','d:\tom','tom is good'),
    (3,'1972-03-01','d:\ben','ben said "hi tom!"');
    
  • 相关阅读:
    SqlServer触发器的创建与使用
    SqlServer存储过程的创建与使用
    SqlServer视图的创建与使用
    U盘重装系统:手把手教你怎么使用U盘重装系统、清除登录密码
    附034.Kubernetes_v1.21.0高可用部署架构二
    附032.Kubernetes实现蓝绿发布
    CKS考试心得分享
    001.IT运维面试问题-Linux基础
    附031.Kubernetes_v1.20.4高可用部署架构二
    深入Netty逻辑架构,从Reactor线程模型开始
  • 原文地址:https://www.cnblogs.com/moilioncircle/p/4266745.html
Copyright © 2011-2022 走看看