用sql查询姓名和身份证_查询,更新和身份

本系列第一篇文章中,我讨论了RDBMS作为Java™对象存储解决方案的失败。 正如我所解释的那样,在当今的面向对象的世界中,像db4o这样的对象数据库可以为面向对象的开发人员提供更多的功能,而不仅仅是关系数据库。

在本文和以后的文章中,我将继续介绍对象数据库。 我将使用示例来展示存储系统的强大功能,该存储系统针对您在选择的面向对象编程语言(在本例中为Java语言)中使用的相同“形状”实体进行了优化。 特别是,我将介绍各种可用于将对象检索,修改和还原回db4o的机制。 正如您将学到的,一旦您摆脱了SQL的约束,您可以做的事实际上令人惊讶。

如果尚未这样做,则可能要立即下载db4o 。 您需要它来编译示例。

实例查询

示例查询(QBE)是一种数据库查询语言,它允许您通过设计要进行比较的“模板”来创建查询,而不是使用谓词条件的语言(如SQL)。 我上次演示了使用db4o的QBE引擎进行数据检索,但是在这里我将快速回顾一下。 首先看一下我公认的原始数据库。 它由一种类型组成,其定义如清单1所示:

清单1. Person类
package com.tedneward.model;

public class Person
{
    public Person()
    { }
    public Person(String firstName, String lastName, int age)
    {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }
    
    public String getFirstName() { return firstName; }
    public void setFirstName(String value) { firstName = value; }
    
    public String getLastName() { return lastName; }
    public void setLastName(String value) { lastName = value; }
    
    public int getAge() { return age; }
    public void setAge(int value) { age = value; }

    public String toString()
    {
        return 
            "[Person: " +
            "firstName = " + firstName + " " +
            "lastName = " + lastName + " " +
            "age = " + age + 
            "]";
    }
    
    public boolean equals(Object rhs)
    {
        if (rhs == this)
            return true;
        
        if (!(rhs instanceof Person))
            return false;
        
        Person other = (Person)rhs;
        return (this.firstName.equals(other.firstName) &&
                this.lastName.equals(other.lastName) &&
                this.age == other.age);
    }
    
    private String firstName;
    private String lastName;
    private int age;
}

随着POJO的发展, Person几乎不是一个复杂的野兽。 它由三个字段和一些支持类似于POJO的活动的基本方法组成,即toString()equals() 。 (约书亚·布洛赫(Joshua Bloch)的《 有效Java》的精明读者会注意到,我省略了hashCode()实现,这明显违反了规则8。在经典的作者看来,我将hashCode()留为“对读者的一种练习, “这通常意味着作者要么不想打扰它,要么认为手头的例子不必要。我也把它留给读者作为练习,以决定在这里是哪种情况。”

在清单2中,我创建了六个对象,将它们放入文件中,然后使用QBE调用名字与模式“ Brian”匹配的两个对象。 这种查询风格使用原型对象(传递给get()调用的原型对象)来确定数据库中的对象是否匹配,并返回那些符合条件的对象的ObjectSet (本质上是一个集合)。

清单2.通过示例查询
import com.db4o.*;

import com.tedneward.model.*;

public class Hellodb4o
{
    public static void main(String[] args)
        throws Exception
    {
        ObjectContainer db = null;
        try
        {
            db = Db4o.openFile("persons.data");

            Person brian = new Person("Brian", "Goetz", 39);
            Person jason = new Person("Jason", "Hunter", 35);
            Person brians = new Person("Brian", "Sletten", 38);
            Person david = new Person("David", "Geary", 55);
            Person glenn = new Person("Glenn", "Vanderberg", 40);
            Person neal = new Person("Neal", "Ford", 39);
            
            db.set(brian);
            db.set(jason);
            db.set(brians);
            db.set(dav
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值