GAE Java中用SQL操作Datastore

GAE支持Java对很多java开发者来说是一个非常令人兴奋的消息。做应用存储是少不了的,Google给的答案是Datastore。它和我们以往使用的关系型数据库有很大不同,你不需要创建表,可以直接进行添加、修改、删除等操作。Googledatastore是分布式的,可以提供很好的伸缩性,易于扩展。

Googledatastorejavaapi有三种:JDOJPALowApiJDOJPA是建立在LowApi之上的。这api功能比较有限,我们不能像使用关系型数据库一样用SQL操作datastore中的内容。

HGSQL是一个虚拟数据库引擎,它提供了强大的SQL处理能力。它针对Google Datastore发布了一个接口API,该API也是建立在LowApi之上。http://hgsql4gae.appspot.com/是该API的演示,你可以在上面输入SQL语句进行操作里面存储的数据。

1、插入测试数据

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0001', '王东', '职员', '0013', '1980-02-05', '800', '0', '20');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0002', '李海卫', '销售', '0006', '1979-08-15', '1600', '300', '30');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0003', '张空', '销售', '0006', '1982-08-07', '1250', '500', '30');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0004', '孔兵', '经理', '0009', '1982-03-01', '2975', '0', '20');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0005', '刘龙维', '销售', '0006', '1982-10-13', '1250', '1400', '30');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0006', '张云', '经理', '0009', '1977-02-14', '2850', '0', '30');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0008', '王芳', '主管', '0004', '1981-10-18', '3000', '0', '20');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0010', '张凯', '销售', '0006', '1979-07-29', '1500', '200', '30');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0011', '宋建', '职员', '0008', '1980-01-23', '1100', '0', '20');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0012', '李保', '职员', '0006', '1982-04-11', '950', '0', '30');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0013', '刘海星', '主管', '0004', '1978-01-30', '3000', '0', '20');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0015', '刘固', '顾问', '0009', '1980-01-22', '3000', '0', '10');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0007', '关心', '经理', '0009', '1978-07-27', '2450', '0', '10');

insert into 员工 (编号, 姓名, 职位, 上级, 出生日期, 工资, 奖金, 部门) values ('0009', '刘程飞', '总经理', '', '1982-01-17', '5000', '0', '10');

2、执行一个简单查询

select * from 员工 order by 编号

3、执行一个比较复杂查询

select *

  from (select *

          from (select 编号,姓名, 部门, 职位, 工资

                  from 员工

                union all

                select '', '', 部门, 职位, sum(工资)

                  from 员工

                 group by rollup(部门, 职位)))

 order by nvl(部门, char(65535)),

          nvl(职位, char(65535))

4、删除数据

delete from 员工

HGSQL forGoogle Datastore的使用非常简单,首先从http://hgsql4gae.appspot.com/中下载接口程序包hggds.jar,然后加入到你的GAE项目中,调用类com.hg.gds.HgGds中的queryexecute方法就可以了。语法参考:http://www.hgsql.com/down/SQL参考手册.pdf

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值