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!"');
    
  • 相关阅读:
    parent.relativePath' points at wrong local POM
    'cmd' 不是内部或外部命令,也不是可运行的程序 或批处理文件.
    解析xml文件的几种技术与Dom4j与sax之间的对比
    html/js/css资源
    HTML编码规范
    CSS编码规范
    PCB标识说明
    sama5d3 环境检测 gpio--yk测试
    sama5d3 环境检测 gpio--yx测试
    ad7888 linux driver
  • 原文地址:https://www.cnblogs.com/moilioncircle/p/4266745.html
Copyright © 2011-2022 走看看