• 1、同一个数据库实例。同用户,多表创建视图
  • 2、同一个数据库实例,不同用户下。多表创建视图
  • 3、同一个数据库,不同数据库实例,多表创建视图
  • 4、不同类型数据库,多表创建视图

  • 1、同一个数据库实例。同用户,多表创建视图

    暂缺。!

  • 2、同一个数据库实例,不同用户下,多表创建视图

    步骤一、创建实例,创建两个用户的sql:

    -- 创建实例 : Database Configuration Assistant 创建数据库  
    
    -- 查询表SYSTEM表空间的数据文件的物理路径
    -- SELECT FILE_NAME FROM DBA_DATA_FILES WHERE (TABLESPACE_NAME = 'SYSTEM') -- 创建门户系统的表空间 TBS_ORCL_TEMPLETE1_0 -- 遵循表空间命名规范 TBS_Servername_Function_SerialNumber
    -- TBS是必需具备的,表示该对象为表空间。 -- ServerName是数据库物理server的名称或名称简写。
    -- Function是表示该表空间的作用 -- SerialNumber是具有该作用的数据库表空间的序列号
    --------------------------------------------------------- --设置表空间自己主动扩容
    CREATE TABLESPACE HY_02C DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TBS_ORCL_DEMO.DBF' size 200M AUTOEXTEND on next 50M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL ; -- 假设存在HY_02C用户 先删除
    -- DROP USER "HY_02C" CASCADE; -- 创建用户
    CREATE USER HY_02C
    IDENTIFIED BY HY_02C DEFAULT TABLESPACE HY_02C
    QUOTA UNLIMITED
    ON HY_02C
    QUOTA 100000 K
    ON USERS
    ACCOUNT UNLOCK ; -- 设置用户权限
    GRANT CONNECT,RESOURCE,DBA TO HY_02C;
    GRANT CREATE SESSION TO HY_02C;
    GRANT CREATE PROCEDURE TO HY_02C; --导入数据
    $imp file=F:\user09.dmp full=y; ------測试同一个数据库实例下的不同用户,新建用户 --设置表空间自己主动扩容
    CREATE TABLESPACE DOPD DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TBS_ORCL_DOPD.DBF' size 200M AUTOEXTEND on next 50M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL ;
    --删除表空间
    --DROP TABLESPACE DOPD INCLUDING CONTENTS AND DATAFILES; -- 假设存在USER_DEMO用户 先删除
    -- DROP USER "DOPD" CASCADE; -- 创建用户
    CREATE USER DOPD
    IDENTIFIED BY DOPD DEFAULT TABLESPACE TBS_ORCL_DOPD
    QUOTA UNLIMITED
    ON TBS_ORCL_DEMO
    QUOTA 100000 K
    ON USERS
    ACCOUNT UNLOCK ; -- 设置用户权限
    GRANT CONNECT,RESOURCE,DBA TO DOPD;
    GRANT CREATE SESSION TO DOPD;
    GRANT CREATE PROCEDURE TO DOPD; --导入数据
    $imp file=F:\user09.dmp full=y;

    第一个用户:



    备注:採用的2张表:

    TB_BAS_CKYX

    TB_BAS_META_BLOB

    第二个用户:



    备注:採用的3张表:

    TB_BAS_YGYX

    TB_BAS_HEADTABLE

    TB_BAS_YXZZCP

步骤二、数据库表设计:

用户HY_02C下:

1、TB_BAS_CKYX

sql:
-- Create table
create table TB_BAS_CKYX
(
id VARCHAR2(40) not null,
source_data_id NUMBER(38),
image_no VARCHAR2(50),
image_handling_no VARCHAR2(40),
satellite_code VARCHAR2(50),
sensor_code VARCHAR2(50),
image_rr_value NUMBER(38,8),
image_scale_code VARCHAR2(4),
image_bands VARCHAR2(40),
projection_code VARCHAR2(20),
central_meridian NUMBER(38,8),
locator_unit VARCHAR2(10),
zone_code VARCHAR2(10),
zone_no NUMBER(38),
es_code VARCHAR2(10),
es_value NUMBER(38,8),
cloudcover_code NUMBER(38,8),
tl_lon NUMBER(38,8),
tl_lat NUMBER(38,8),
tr_lon NUMBER(38,8),
tr_lat NUMBER(38,8),
br_lon NUMBER(38,8),
br_lat NUMBER(38,8),
bl_lon NUMBER(38,8),
bl_lat NUMBER(38,8),
tl_x NUMBER(38,8),
tl_y NUMBER(38,8),
tr_x NUMBER(38,8),
tr_y NUMBER(38,8),
br_x NUMBER(38,8),
br_y NUMBER(38,8),
bl_x NUMBER(38,8),
bl_y NUMBER(38,8),
product_ar_code VARCHAR2(10),
product_category_code VARCHAR2(20),
product_ownership_unit VARCHAR2(50),
production_unit VARCHAR2(50),
product_grade_code VARCHAR2(4),
product_quality VARCHAR2(4),
product_security_code VARCHAR2(4),
product_format_code VARCHAR2(4),
product_archive_date TIMESTAMP(6),
product_time_phase DATE,
product_size_measure VARCHAR2(4),
product_size NUMBER(38),
product_quality_report VARCHAR2(500),
product_order_no VARCHAR2(40),
product_storage_path VARCHAR2(500),
create_date TIMESTAMP(6),
used_count NUMBER(38),
status VARCHAR2(4),
remarks VARCHAR2(400),
product_file_list BLOB,
envelope LONG,
source_table_name VARCHAR2(100),
cs_code VARCHAR2(10),
data_name VARCHAR2(400),
sjsj DATE
)
tablespace GF_GXFW
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128K
minextents 1
maxextents unlimited
);
-- Add comments to the columns
comment on column TB_BAS_CKYX.id
is '记录编号';
comment on column TB_BAS_CKYX.source_data_id
is '源数据ID';
comment on column TB_BAS_CKYX.image_no
is '图幅号';
comment on column TB_BAS_CKYX.image_handling_no
is '图处理关联编号';
comment on column TB_BAS_CKYX.satellite_code
is '卫星类别';
comment on column TB_BAS_CKYX.sensor_code
is '传感器类别';
comment on column TB_BAS_CKYX.image_rr_value
is '影像分辨率';
comment on column TB_BAS_CKYX.image_scale_code
is '影像比例尺';
comment on column TB_BAS_CKYX.image_bands
is '影像波段信息';
comment on column TB_BAS_CKYX.projection_code
is '投影方式';
comment on column TB_BAS_CKYX.central_meridian
is '中央子午线';
comment on column TB_BAS_CKYX.locator_unit
is '坐标单位';
comment on column TB_BAS_CKYX.zone_code
is '分带类型';
comment on column TB_BAS_CKYX.zone_no
is '投影带号';
comment on column TB_BAS_CKYX.es_code
is '高程基准';
comment on column TB_BAS_CKYX.es_value
is '高程基准值';
comment on column TB_BAS_CKYX.cloudcover_code
is '云量';
comment on column TB_BAS_CKYX.tl_lon
is '左上经度';
comment on column TB_BAS_CKYX.tl_lat
is '左上纬度';
comment on column TB_BAS_CKYX.tr_lon
is '右上经度';
comment on column TB_BAS_CKYX.tr_lat
is '右上纬度';
comment on column TB_BAS_CKYX.br_lon
is '右下经度';
comment on column TB_BAS_CKYX.br_lat
is '右下纬度';
comment on column TB_BAS_CKYX.bl_lon
is '左下经度';
comment on column TB_BAS_CKYX.bl_lat
is '左下纬度';
comment on column TB_BAS_CKYX.tl_x
is '左上x坐标';
comment on column TB_BAS_CKYX.tl_y
is '左上y坐标';
comment on column TB_BAS_CKYX.tr_x
is '右上x坐标';
comment on column TB_BAS_CKYX.tr_y
is '右上y坐标';
comment on column TB_BAS_CKYX.br_x
is '右下x坐标';
comment on column TB_BAS_CKYX.br_y
is '右下y坐标';
comment on column TB_BAS_CKYX.bl_x
is '左下x坐标';
comment on column TB_BAS_CKYX.bl_y
is '左下y坐标';
comment on column TB_BAS_CKYX.product_ar_code
is '行政区';
comment on column TB_BAS_CKYX.product_category_code
is '产品分类';
comment on column TB_BAS_CKYX.product_ownership_unit
is '产品全部权单位';
comment on column TB_BAS_CKYX.production_unit
is '产品生产单位';
comment on column TB_BAS_CKYX.product_grade_code
is '产品等级';
comment on column TB_BAS_CKYX.product_quality
is '产品质检';
comment on column TB_BAS_CKYX.product_security_code
is '产品秘密等级';
comment on column TB_BAS_CKYX.product_format_code
is '产品行式';
comment on column TB_BAS_CKYX.product_archive_date
is '产品归档日期';
comment on column TB_BAS_CKYX.product_time_phase
is '产品时相';
comment on column TB_BAS_CKYX.product_size_measure
is '产品大小单位';
comment on column TB_BAS_CKYX.product_size
is '产品大小';
comment on column TB_BAS_CKYX.product_quality_report
is '产品质量报告';
comment on column TB_BAS_CKYX.product_order_no
is '产品任务单编号';
comment on column TB_BAS_CKYX.product_storage_path
is '产品存储位置';
comment on column TB_BAS_CKYX.create_date
is '记录创建时间';
comment on column TB_BAS_CKYX.used_count
is '使用次数';
comment on column TB_BAS_CKYX.status
is '记录状态';
comment on column TB_BAS_CKYX.remarks
is '备注';
comment on column TB_BAS_CKYX.product_file_list
is '产品文件清单';
comment on column TB_BAS_CKYX.envelope
is '产品数据时间(2014年5月27日)';
comment on column TB_BAS_CKYX.source_table_name
is '来源表名';
comment on column TB_BAS_CKYX.cs_code
is '坐标系(2014年5月27日)';
comment on column TB_BAS_CKYX.data_name
is '产品名称(2014年5月27日)';
comment on column TB_BAS_CKYX.sjsj
is '数据范围';
-- Create/Recreate primary, unique and foreign key constraints
alter table TB_BAS_CKYX
add constraint PK_CKYX_ID primary key (ID)
using index
tablespace GF_GXFW
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Grant/Revoke object privileges
grant select on TB_BAS_CKYX to DOPD;

2、TB_BAS_META_BLOB

sql:
-- Create table
create table TB_BAS_META_BLOB
(
f_dataid NUMBER not null,
f_metadata BLOB,
f_quickimage1 BLOB,
f_quickimage2 BLOB,
f_quickimage3 BLOB,
f_quickimage4 BLOB,
f_thumimage BLOB,
f_shapeimage BLOB
)
tablespace HY_02C
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128M
minextents 1
maxextents unlimited
);
-- Create/Recreate indexes
create index INDEX_TB_BAS_META_BLOB_DATAID on TB_BAS_META_BLOB (F_DATAID)
tablespace HY_02C
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 10M
minextents 1
maxextents unlimited
);

用户DOPD下:

1、TB_BAS_META_YGYX

sql:
-- Create table
create table TB_BAS_META_YGYX
(
dataid NUMBER,
catalogid VARCHAR2(50),
satelliteid VARCHAR2(50),
sensorid VARCHAR2(50),
recstationid VARCHAR2(50),
subscenemode VARCHAR2(100) not null,
imagingmode VARCHAR2(50),
productdate DATE,
productlevel VARCHAR2(100),
pixelspacing NUMBER,
bands VARCHAR2(255),
scenecount NUMBER,
overallquality NUMBER,
resampletechnique VARCHAR2(100),
productorientation VARCHAR2(100),
trackid NUMBER,
satpath NUMBER,
satrow NUMBER,
satpathbias VARCHAR2(100),
satrowbias VARCHAR2(100),
sunelevation NUMBER,
sunazimuthelevation NUMBER not null,
scenedate DATE,
imagingstarttime VARCHAR2(100),
imagingstoptime VARCHAR2(100),
satoffnadir NUMBER,
cloudamount VARCHAR2(100),
wkt VARCHAR2(255),
scenecenterlat NUMBER,
scenecenterlong NUMBER,
dataupperleftlat NUMBER,
dataupperleftlong NUMBER,
dataupperrightlat NUMBER,
dataupperrightlong NUMBER,
datalowerleftlat NUMBER,
datalowerleftlong NUMBER,
datalowerrightlat NUMBER,
datalowerrightlong NUMBER,
productupperleftlat NUMBER,
productupperleftlong NUMBER,
productupperrightlat NUMBER,
productupperrightlong NUMBER,
productlowerleftlat NUMBER,
productlowerleftlong NUMBER,
productlowerrightlat NUMBER,
productlowerrightlong NUMBER,
scenepath NUMBER,
scenerow NUMBER,
f_datatypename VARCHAR2(100),
f_mapprojection NVARCHAR2(50),
id VARCHAR2(40),
cloud_amount NUMBER,
receive_time DATE,
available VARCHAR2(50)
)
tablespace GF_GXFW
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 192M
minextents 1
maxextents unlimited
);
-- Add comments to the columns
comment on column TB_BAS_META_YGYX.dataid
is '数据唯一标识';
comment on column TB_BAS_META_YGYX.catalogid
is '分类编码';
comment on column TB_BAS_META_YGYX.satelliteid
is '卫星标识 ZY3';
comment on column TB_BAS_META_YGYX.sensorid
is '谱段模式 PAN MS';
comment on column TB_BAS_META_YGYX.recstationid
is '接收站标识 MY HS SY OS';
comment on column TB_BAS_META_YGYX.subscenemode
is '分景模式 N(注:标准景) d(注:双倍景) t(注:三倍景) s(注: 条带影像)';
comment on column TB_BAS_META_YGYX.imagingmode
is '成像模式 N F B L R';
comment on column TB_BAS_META_YGYX.productdate
is '生产日期 YYYYMMDDHHMMSS';
comment on column TB_BAS_META_YGYX.productlevel
is '产品级别 SC GEC eGEC GTC DOM';
comment on column TB_BAS_META_YGYX.pixelspacing
is '空间分辨率(像元间距) ';
comment on column TB_BAS_META_YGYX.bands
is '波段号列表(以逗号分隔) 波段号以逗号隔开。波段取值范围:如。CCD:1。2,3,4,5';
comment on column TB_BAS_META_YGYX.scenecount
is '条带景数 ';
comment on column TB_BAS_META_YGYX.overallquality
is '质量评价结果 取值范围:0-9';
comment on column TB_BAS_META_YGYX.resampletechnique
is '几何处理方式';
comment on column TB_BAS_META_YGYX.productorientation
is '辐射处理方式 ';
comment on column TB_BAS_META_YGYX.trackid
is '轨道号';
comment on column TB_BAS_META_YGYX.satpath
is '星下点PATH 1-457';
comment on column TB_BAS_META_YGYX.satrow
is '星下点ROW 1~480';
comment on column TB_BAS_META_YGYX.satpathbias
is '星下点PATH偏离值 A、B、C、D、E(由东向西)';
comment on column TB_BAS_META_YGYX.satrowbias
is '星下点ROW偏离值 1、2、3、4、5(由北向南)';
comment on column TB_BAS_META_YGYX.sunelevation
is '太阳高度角';
comment on column TB_BAS_META_YGYX.sunazimuthelevation
is '太阳方位角';
comment on column TB_BAS_META_YGYX.scenedate
is '景的日期(图像採集日期) YYYYMMDDHHMMSS';
comment on column TB_BAS_META_YGYX.imagingstarttime
is '该景各波段起始採集时间 YYYYMMDDHHMMSS';
comment on column TB_BAS_META_YGYX.imagingstoptime
is '该景各波段结束採集时间 YYYYMMDDHHMMSS';
comment on column TB_BAS_META_YGYX.satoffnadir
is '卫星側摆角度 -90~+90度';
comment on column TB_BAS_META_YGYX.cloudamount
is '云盖量 ';
comment on column TB_BAS_META_YGYX.wkt
is '坐标系PROJCS["Transverse Mercator",GEOGCS["China2000",DATUM["China2000",SPHEROID["GRS80",6378137,298.257222101],TOWGS84[0, 0, 0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],
//UNIT["meters",1],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",75],PARAMETER["scale_factor",1],PARAMETER["false_easting",500000],PARAMETER["false_northing",0]]';
comment on column TB_BAS_META_YGYX.scenecenterlat
is '景中心纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.scenecenterlong
is '景中心经度 -180~+180度';
comment on column TB_BAS_META_YGYX.dataupperleftlat
is '图像左上角纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.dataupperleftlong
is '图像左上角经度 -180~+180度';
comment on column TB_BAS_META_YGYX.dataupperrightlat
is '图像右上角纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.dataupperrightlong
is '图像右上角经度 -180~+180度';
comment on column TB_BAS_META_YGYX.datalowerleftlat
is '图像左下角纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.datalowerleftlong
is '图像左下角经度 -180~+180度';
comment on column TB_BAS_META_YGYX.datalowerrightlat
is '图像右下角纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.datalowerrightlong
is '图像右下角经度 -180~+180度';
comment on column TB_BAS_META_YGYX.productupperleftlat
is '产品左上角纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.productupperleftlong
is '产品左上经度 -180~+180度';
comment on column TB_BAS_META_YGYX.productupperrightlat
is '产品右上角纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.productupperrightlong
is '产品右上角经度 -180~+180度';
comment on column TB_BAS_META_YGYX.productlowerleftlat
is '产品左下角纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.productlowerleftlong
is '产品左下角经度 -180~+180度';
comment on column TB_BAS_META_YGYX.productlowerrightlat
is '产品右下角纬度 -90~+90度';
comment on column TB_BAS_META_YGYX.productlowerrightlong
is '产品右下角经度 -180~+180度';
comment on column TB_BAS_META_YGYX.scenepath
is '星下点PATH 1-457';
comment on column TB_BAS_META_YGYX.scenerow
is '星下点ROW 1~480';
comment on column TB_BAS_META_YGYX.f_datatypename
is '产品类型';
comment on column TB_BAS_META_YGYX.f_mapprojection
is '地图投影';
comment on column TB_BAS_META_YGYX.id
is 'guid';
comment on column TB_BAS_META_YGYX.cloud_amount
is '判别后云量';
comment on column TB_BAS_META_YGYX.receive_time
is '接受时间(採集时间都用这个)';
comment on column TB_BAS_META_YGYX.available
is '0 、2 不可用 1 是可用(BOLB)-1 未判定';
-- Create/Recreate indexes
create index INDEX_TB_BAS_META_YGYX_DATAID on TB_BAS_META_YGYX (DATAID)
tablespace GF_GXFW
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 17M
minextents 1
maxextents unlimited
);

2、TB_BAS_HEADTABLE

sql:
-- Create table
create table TB_BAS_HEADTABLE
(
f_dataid NUMBER(10) not null,
f_productname VARCHAR2(255),
f_productid NUMBER(10),
f_productdate DATE,
f_geographicidentifier VARCHAR2(64),
f_dataformatdes VARCHAR2(50),
f_productunit VARCHAR2(255),
f_importuser VARCHAR2(50),
f_importdate DATE,
f_importway VARCHAR2(20),
f_datasource VARCHAR2(255),
f_getdate DATE,
f_datasize NUMBER(10),
f_dataunit VARCHAR2(50),
f_datadesc VARCHAR2(255),
f_keyword VARCHAR2(100),
f_isfile NUMBER(4),
f_location VARCHAR2(255),
f_flag NUMBER(4),
f_hassdelayer NUMBER(4),
f_hastable NUMBER(4),
f_shape MDSYS.SDO_GEOMETRY,
f_catalogcode VARCHAR2(100),
f_filelist VARCHAR2(2000),
f_dirid NUMBER(10),
f_release NUMBER(2),
f_title VARCHAR2(255),
f_ismark NUMBER,
id VARCHAR2(40)
)
tablespace GF_GXFW
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 104M
minextents 1
maxextents unlimited
);
-- Create/Recreate indexes
create index INDEX_HEADTABLEDATA_DATAID on TB_BAS_HEADTABLE (F_DATAID)
tablespace GF_GXFW
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 17M
minextents 1
maxextents unlimited
);

3、TB_BAS_YXZZCP

sql:
-- Create table
create table TB_BAS_YXZZCP
(
id VARCHAR2(40),
source_data_id NUMBER(38),
image_no VARCHAR2(50),
image_handling_no VARCHAR2(40),
satellite_code VARCHAR2(10),
sensor_types VARCHAR2(10),
image_rr_value NUMBER(38,8),
image_color_values VARCHAR2(4),
image_bands NUMBER(38),
image_pixelbits NUMBER(38),
width_pixels NUMBER(38),
height_pixels NUMBER(38),
cs_code VARCHAR2(4),
projection_desc VARCHAR2(500),
resample_method VARCHAR2(4),
tl_lon NUMBER(38,8),
tl_lat NUMBER(38,8),
tr_lon NUMBER(38,8),
tr_lat NUMBER(38,8),
br_lon NUMBER(38,8),
br_lat NUMBER(38,8),
bl_lon NUMBER(38,8),
bl_lat NUMBER(38,8),
tl_x NUMBER(38,8),
tl_y NUMBER(38,8),
tr_x NUMBER(38,8),
tr_y NUMBER(38,8),
br_x NUMBER(38,8),
br_y NUMBER(38,8),
bl_x NUMBER(38,8),
bl_y NUMBER(38,8),
product_ar_code VARCHAR2(10),
product_category_code VARCHAR2(20),
product_ownership_unit VARCHAR2(50),
production_unit VARCHAR2(50),
product_grade_code VARCHAR2(4),
product_quality VARCHAR2(4),
product_security_code VARCHAR2(4),
product_format_code VARCHAR2(4),
product_archive_date TIMESTAMP(6),
production_date TIMESTAMP(6),
product_size_measure VARCHAR2(4),
product_size NUMBER(38),
product_quality_report VARCHAR2(500),
product_order_no VARCHAR2(40),
product_storage_path VARCHAR2(500),
create_date TIMESTAMP(6),
used_count NUMBER(38),
status VARCHAR2(4),
remarks VARCHAR2(400),
product_file_list BLOB,
envelope LONG,
source_table_name VARCHAR2(100),
image_frame_code VARCHAR2(10),
data_name VARCHAR2(400)
)
tablespace HY_02C
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 3M
minextents 1
maxextents unlimited
);
-- Add comments to the columns
comment on column TB_BAS_YXZZCP.id
is '记录编号';
comment on column TB_BAS_YXZZCP.source_data_id
is '源数据ID';
comment on column TB_BAS_YXZZCP.image_no
is '图幅号';
comment on column TB_BAS_YXZZCP.image_handling_no
is '图处理关联编号';
comment on column TB_BAS_YXZZCP.satellite_code
is '卫星类别';
comment on column TB_BAS_YXZZCP.sensor_types
is '传感器类型';
comment on column TB_BAS_YXZZCP.image_rr_value
is '影像分辨率';
comment on column TB_BAS_YXZZCP.image_color_values
is '影像色彩模式';
comment on column TB_BAS_YXZZCP.image_bands
is '影像波段数';
comment on column TB_BAS_YXZZCP.image_pixelbits
is '像素位数';
comment on column TB_BAS_YXZZCP.width_pixels
is '行像素数';
comment on column TB_BAS_YXZZCP.height_pixels
is '列像素数';
comment on column TB_BAS_YXZZCP.cs_code
is '坐标系';
comment on column TB_BAS_YXZZCP.projection_desc
is '投影信息描写叙述';
comment on column TB_BAS_YXZZCP.resample_method
is '重採样方法';
comment on column TB_BAS_YXZZCP.tl_lon
is '左上经度';
comment on column TB_BAS_YXZZCP.tl_lat
is '左上纬度';
comment on column TB_BAS_YXZZCP.tr_lon
is '右上经度';
comment on column TB_BAS_YXZZCP.tr_lat
is '右上纬度';
comment on column TB_BAS_YXZZCP.br_lon
is '右下经度';
comment on column TB_BAS_YXZZCP.br_lat
is '右下纬度';
comment on column TB_BAS_YXZZCP.bl_lon
is '左下经度';
comment on column TB_BAS_YXZZCP.bl_lat
is '左下纬度';
comment on column TB_BAS_YXZZCP.tl_x
is '左上x坐标';
comment on column TB_BAS_YXZZCP.tl_y
is '左上y坐标';
comment on column TB_BAS_YXZZCP.tr_x
is '右上x坐标';
comment on column TB_BAS_YXZZCP.tr_y
is '右上y坐标';
comment on column TB_BAS_YXZZCP.br_x
is '右下x坐标';
comment on column TB_BAS_YXZZCP.br_y
is '右下y坐标';
comment on column TB_BAS_YXZZCP.bl_x
is '左下x坐标';
comment on column TB_BAS_YXZZCP.bl_y
is '左下y坐标';
comment on column TB_BAS_YXZZCP.product_ar_code
is '行政区代码';
comment on column TB_BAS_YXZZCP.product_category_code
is '产品分类';
comment on column TB_BAS_YXZZCP.product_ownership_unit
is '产品全部权单位';
comment on column TB_BAS_YXZZCP.production_unit
is '产品生产单位';
comment on column TB_BAS_YXZZCP.product_grade_code
is '产品等级';
comment on column TB_BAS_YXZZCP.product_quality
is '产品质检';
comment on column TB_BAS_YXZZCP.product_security_code
is '产品秘密等级';
comment on column TB_BAS_YXZZCP.product_format_code
is '产品行式';
comment on column TB_BAS_YXZZCP.product_archive_date
is '产品归档日期';
comment on column TB_BAS_YXZZCP.production_date
is '产品生产时间';
comment on column TB_BAS_YXZZCP.product_size_measure
is '产品大小单位';
comment on column TB_BAS_YXZZCP.product_size
is '产品大小';
comment on column TB_BAS_YXZZCP.product_quality_report
is '产品质量报告';
comment on column TB_BAS_YXZZCP.product_order_no
is '产品任务单编号';
comment on column TB_BAS_YXZZCP.product_storage_path
is '产品存储位置';
comment on column TB_BAS_YXZZCP.create_date
is '记录创建时间';
comment on column TB_BAS_YXZZCP.used_count
is '使用次数';
comment on column TB_BAS_YXZZCP.status
is '记录状态';
comment on column TB_BAS_YXZZCP.remarks
is '备注';
comment on column TB_BAS_YXZZCP.product_file_list
is '产品文件清单';
comment on column TB_BAS_YXZZCP.envelope
is '产品名称';
comment on column TB_BAS_YXZZCP.source_table_name
is '来源表名';
comment on column TB_BAS_YXZZCP.image_frame_code
is '影像分幅类别';
comment on column TB_BAS_YXZZCP.data_name
is '数据范围';

步骤三、创建视图:

用户:HY_02C(表TB_BAS_CKYX与TB_BAS_META_BLOB)

用户:DOPD(TB_BAS_META_YGYX、TB_BAS_HEADTABLE、TB_BAS_YXZZCP)

在用户DOPD中创建视图:

1、首先得给DOPD授予HY_02C用户下表的查询权限:

PL/SQL登陆HY_02C用户,给DOPD用户授权
grant select any table to DOPD;

2、创建视图

sql:
create or replace view view_same_ins_multi_user
(dataid, satellite, sensor, cloudcover_amount, upper_leftlong, upper_leftlat, upper_rightlong, upper_rightlat, lower_rightlong, lower_rightlat, lower_leftlong, lower_leftlat, receive_date, product_level, datasize, productname, tb_flag)
as
select
DATAID fid,
SATELLITEID,
SENSORID,
CLOUD_AMOUNT,
DATAUPPERLEFTLONG,
DATAUPPERLEFTLAT,
DATAUPPERRIGHTLONG,
DATAUPPERRIGHTLAT,
DATALOWERRIGHTLONG,
DATALOWERRIGHTLAT,
DATALOWERLEFTLONG,
DATALOWERLEFTLAT,
RECEIVE_TIME,
PRODUCTLEVEL,
F_DATASIZE,
F_PRODUCTNAME,
'tb_bas_meta_ygyx' tb_flag
from DOPD.TB_BAS_META_YGYX ygyx,DOPD.TB_BAS_HEADTABLE head
where ygyx.dataid = head.f_dataid and rownum<=1000
union all
select
SOURCE_DATA_ID fid ,
SATELLITE_CODE,
SENSOR_CODE,
CLOUDCOVER_CODE,
TL_LON,
TL_LAT,
TR_LON,
TR_LAT,
BR_LON,
BR_LAT,
BL_LON,
BL_LAT,
SJSJ,
PRODUCT_GRADE_CODE,
PRODUCT_SIZE,
DATA_NAME,
'tb_bas_ckyx' tb_flag
from HY_02C.TB_BAS_CKYX
union all
select
SOURCE_DATA_ID,
SATELLITE_CODE,
SENSOR_TYPES,
0 CLOUDCOVER_AMOUNT,
TL_LON,
TL_LAT,
TR_LON,
TR_LAT,
BR_LON,
BR_LAT,
BL_LON,
BL_LAT,
to_date('','yyyy/MM/dd hh24:mi:ss') RECEIVE_TIME,
'0' PRODUCTLEVEL,
PRODUCT_SIZE,
DATA_NAME,
'tb_bas_yxzzcp' tb_flag
from DOPD.TB_BAS_YXZZCP
order by fid desc;

上面的基础准备工作完毕之后,上代码:

公司框架採用SSH

1、用hibernate完毕ORM映射

參考资料: 连接

2、spring整合

3、Java后台代码实现及測试结果

1、在hibernate.properties中配置两个用户



“ 1、在hibernate.properties中配置两个用户”有误,请忽略。!

!!(不删除是为了追溯历史版本号,同一时候留个记号以防下次出错,

PS:假设须要实现:不同数据库下不同用户。或者不同数据库类型下不同用户才须要在hibernate.properties中配置多个用户.

1、仅仅需在hibernate.properties中配置一个用户



PS:下面在applicationContext-Hibernate.xml加入的“数据源配置”以及“SessionFactory”配置都仅仅须要一个即可!。(假设须要实现:不同数据库下不同用户。或者不同数据库类型下不同用户才须要加入多个数据源的配置项以及多个SessionFactory配置项)

2、spring整合配置,在applicationContext-Hibernate.xml加入

1)配置数据源DataSource,加入例如以下代码:

这里使用的是DBCP连接池。

<!-- 数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property> <!-- 数据库驱动类 -->
<property name="driverClassName">
<value>${jdbc.driverClassName}</value>
</property>
<!-- 连接池的最大数据库连接数。设为0表示无限制。 -->
<property name="maxActive">
<value>${maxActive}</value>
</property>
<!-- 最大的空暇连接数。这里取值为30,表示即使没有数据库连接时依旧能够保持30个空暇的连接。而不被清除。随时处于待命状态。设为0表示无限制。-->
<property name="maxIdle">
<value>${maxIdle}</value>
</property>
<!-- 最大建立连接等待时间(毫秒)。假设超过此时间将接到异常。设为-1表示无限制-->
<property name="maxWait">
<value>${maxWait}</value>
</property>
<!--指定数据库的默认自己主动提交-->
<property name="defaultAutoCommit">
<value>${defaultAutoCommit}</value>
</property>
<!--是否自己主动回收超时连接-->
<property name="removeAbandoned">
<value>${removeAbandoned}</value>
</property>
<!--超时时间(以秒数为单位)-->
<property name="removeAbandonedTimeout">
<value>${removeAbandonedTimeout}</value>
</property>
<property name="logAbandoned">
<value>${logAbandoned}</value>
</property>
</bean> <!--配置第二个数据源(同一个数据库同一个实例下,不同用户) -->
<bean id="dataSource_sec" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="url">
<value>${jdbc.url_sec}</value>
</property>
<property name="username">
<value>${jdbc.username_sec}</value>
</property>
<property name="password">
<value>${jdbc.password_sec}</value>
</property>
<!-- 数据库驱动类 -->
<property name="driverClassName">
<value>${jdbc.driverClassName_sec}</value>
</property>
<!-- 连接池的最大数据库连接数。设为0表示无限制。 -->
<property name="maxActive">
<value>${maxActive}</value>
</property>
<!-- 最大的空暇连接数,这里取值为30。表示即使没有数据库连接时依旧能够保持30个空暇的连接,而不被清除。随时处于待命状态。设为0表示无限制。 -->
<property name="maxIdle">
<value>${maxIdle}</value>
</property>
<!-- 最大建立连接等待时间(毫秒)。 假设超过此时间将接到异常。设为-1表示无限制-->
<property name="maxWait">
<value>${maxWait}</value>
</property>
<!--指定数据库的默认自己主动提交-->
<property name="defaultAutoCommit">
<value>${defaultAutoCommit}</value>
</property>
<!--是否自己主动回收超时连接-->
<property name="removeAbandoned">
<value>${removeAbandoned}</value>
</property>
<!--超时时间(以秒数为单位)-->
<property name="removeAbandonedTimeout">
<value>${removeAbandonedTimeout}</value>
</property>
<property name="logAbandoned">
<value>${logAbandoned}</value>
</property>
</bean>

注:id不能反复,所以后面的使用了dataSource_sec和dataSource以差别,这样才干区分使用的是那一个数据库。假设上面的driverClassName配置一样。你能够不用配置jdbc_sec.driverClassName,都用jdbc.driverClassName即可。

3、配置sessionFactory

 <!-- sessionFactory1-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<!-- 处理CLOB对象 -->
<property name="lobHandler" ref="lobHandler" />
<property name="mappingDirectoryLocations">
<list>
<value>classpath:org/hdht/</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
<prop key="Hibernate.cache.use_query_cache">${Hibernate.cache.use_query_cache}</prop>
<prop key="Hibernate.cache.query_cache_factory">${Hibernate.cache.query_cache_factory}</prop>
</props>
</property>
</bean> <!-- sessionFactory2-->
<bean id="sessionFactory_sec" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource_sec"/>
</property>
<!-- 处理CLOB对象 -->
<property name="lobHandler" ref="lobHandler" />
<property name="mappingDirectoryLocations">
<list>
<value>classpath:org/hdht/</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
<prop key="Hibernate.cache.use_query_cache">${Hibernate.cache.use_query_cache}</prop>
<prop key="Hibernate.cache.query_cache_factory">${Hibernate.cache.query_cache_factory}</prop>
</props>
</property>
</bean>

3、Java后台代码实现及測试结果

1)实体类Bean: TestSameInsMultiUserView

package org.hdht.business.test.bean;

/**
* Station.java
*
* 监測站实体类
*
* @author 付建波
*/ import java.io.Serializable;
import java.util.Date; public class TestSameInsMultiUserView implements Serializable{ private static final long serialVersionUID = 2985240370584424720L; private Long dataid;
private java.lang.String satellite;//卫星
private java.lang.String sensor;//传感器
private Long cloudCoverAmount ;//云覆盖量
private Float upperLeftLat ;//图像左上角纬度 -90~+90度
private Float upperLeftLong ;//图像左上角经度 -180~+180度
private Float upperRightLat ;//图像右上角纬度 -90~+90度
private Float upperRightLong ;//图像右上角经度 -180~+180度
private Float lowerLeftLat ;//图像左下角纬度 -90~+90度
private Float lowerLeftLong ;//图像左下角经度 -180~+180度
private Float lowerRightLat ;//图像右下角纬度 -90~+90度
private Float lowerRightLong ;//图像右下角经度 -180~+180度
private java.util.Date receiveDate;//接收日期
private String productLevel ;//产品级别 SC GEC eGEC GTC DOM
private Long dataSize; //数据大小
private String productName; //产品名称
private java.lang.String tb_flag; //表标识
public Long getDataid() {
return dataid;
}
public void setDataid(Long dataid) {
this.dataid = dataid;
}
public java.lang.String getSatellite() {
return satellite;
}
public void setSatellite(java.lang.String satellite) {
this.satellite = satellite;
}
public java.lang.String getSensor() {
return sensor;
}
public void setSensor(java.lang.String sensor) {
this.sensor = sensor;
}
public Long getCloudCoverAmount() {
return cloudCoverAmount;
}
public void setCloudCoverAmount(Long cloudCoverAmount) {
this.cloudCoverAmount = cloudCoverAmount;
}
public Float getUpperLeftLat() {
return upperLeftLat;
}
public void setUpperLeftLat(Float upperLeftLat) {
this.upperLeftLat = upperLeftLat;
}
public Float getUpperLeftLong() {
return upperLeftLong;
}
public void setUpperLeftLong(Float upperLeftLong) {
this.upperLeftLong = upperLeftLong;
}
public Float getUpperRightLat() {
return upperRightLat;
}
public void setUpperRightLat(Float upperRightLat) {
this.upperRightLat = upperRightLat;
}
public Float getUpperRightLong() {
return upperRightLong;
}
public void setUpperRightLong(Float upperRightLong) {
this.upperRightLong = upperRightLong;
}
public Float getLowerLeftLat() {
return lowerLeftLat;
}
public void setLowerLeftLat(Float lowerLeftLat) {
this.lowerLeftLat = lowerLeftLat;
}
public Float getLowerLeftLong() {
return lowerLeftLong;
}
public void setLowerLeftLong(Float lowerLeftLong) {
this.lowerLeftLong = lowerLeftLong;
}
public Float getLowerRightLat() {
return lowerRightLat;
}
public void setLowerRightLat(Float lowerRightLat) {
this.lowerRightLat = lowerRightLat;
}
public Float getLowerRightLong() {
return lowerRightLong;
}
public void setLowerRightLong(Float lowerRightLong) {
this.lowerRightLong = lowerRightLong;
}
public java.util.Date getReceiveDate() {
return receiveDate;
}
public void setReceiveDate(java.util.Date receiveDate) {
this.receiveDate = receiveDate;
}
public String getProductLevel() {
return productLevel;
}
public void setProductLevel(String productLevel) {
this.productLevel = productLevel;
}
public Long getDataSize() {
return dataSize;
}
public void setDataSize(Long dataSize) {
this.dataSize = dataSize;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public java.lang.String getTb_flag() {
return tb_flag;
}
public void setTb_flag(java.lang.String tb_flag) {
this.tb_flag = tb_flag;
} }

2)Hibernate映射文件: TestSameInsMutilUserView.hbm.xml

<?

xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.hdht.business.test.bean.TestSameInsMultiUserView" table="DOPD.view_same_ins_multi_user">
<id name="dataid" type="java.lang.Long">
<column name="DATAID" precision="22" scale="0" />
</id>
<property name="satellite" type="java.lang.String">
<column name="satellite" length="50" ></column>
</property>
<property name="sensor" type="java.lang.String">
<column name="sensor" length="100"></column>
</property>
<property name="cloudCoverAmount" type="java.lang.Long">
<column name="cloudcover_amount" length="100"></column>
</property>
<property name="upperLeftLat" type="java.lang.Float">
<column name="upper_LeftLat" length="100"></column>
</property>
<property name="upperLeftLong" type="java.lang.Float">
<column name="upper_LeftLong" length="100">
</column>
</property>
<property name="upperRightLat" type="java.lang.Float">
<column name="upper_RightLat" length="100">
</column>
</property>
<property name="upperRightLong" type="java.lang.Float">
<column name="upper_RightLong" length="100">
</column>
</property>
<property name="lowerLeftLat" type="java.lang.Float">
<column name="lower_LeftLat" length="100">
</column>
</property>
<property name="lowerLeftLong" type="java.lang.Float">
<column name="lower_LeftLong" length="100">
</column>
</property>
<property name="lowerRightLat" type="java.lang.Float">
<column name="lower_RightLat" length="100">
</column>
</property>
<property name="lowerRightLong" type="java.lang.Float">
<column name="lower_RightLong" length="100"></column>
</property>
<property name="receiveDate" type="java.util.Date">
<column name="receive_date" length="200">
<comment>接收日期</comment>
</column>
</property>
<property name="productLevel" type="java.lang.String">
<column name="product_level"></column>
</property>
<property name="dataSize" type="java.lang.Long">
<column name="dataSize"></column>
</property>
<property name="productName" type="java.lang.String">
<column name="productName"></column>
</property>
<property name="tb_flag" type="java.lang.String">
<column name="TB_FLAG" length="5"></column>
</property>
</class>
</hibernate-mapping>

3)数据訪问对象DAO:TestSameInsMultiUserViewDAO

package org.hdht.business.test.dao;

/**
* 类名:StationDAO.java
* 功能:运输资源数据訪问类
* @author 付建波
* @version Ver 1.0 2010-01-26 初版
*/ import java.io.Serializable;
import java.sql.SQLException; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hdht.business.test.bean.TestSameInsMultiUserView;
import org.hdht.commonweb.basedao.BaseHibDAO;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate; public class TestSameInsMultiUserViewDAO extends BaseHibDAO<TestSameInsMultiUserView> implements Serializable { private static final long serialVersionUID = 1246807624187296626L; private final static Log log = LogFactory.getLog(TestSameInsMultiUserViewDAO.class); /**
* 构造方法
*/
public TestSameInsMultiUserViewDAO() {
super(TestSameInsMultiUserView.class, log, "id");
} /**
* 通过dataid取出元数据
* @param dataid
* @return
*/
public TestSameInsMultiUserView findById(final java.lang.Long dataid) {
log.info("getting TestSameInsMultiUserView instance with id: " + dataid);
try {
HibernateTemplate ht = getHibernateTemplate();
return (TestSameInsMultiUserView)ht.execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
TestSameInsMultiUserView testSameInsMultiUserView = (TestSameInsMultiUserView) session.get(TestSameInsMultiUserView.class, dataid);
return testSameInsMultiUserView;
}
});
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
} }

4)业务逻辑层Logic:TestSameInsMultiUserViewLogic

package org.hdht.business.test.logic;

/**
* 类名:StationLogic.java
* 功能:运输资源业务逻辑类
* @author 付建波
* @version Ver 1.0 2010-01-26 初版
*/ import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.hdht.business.test.bean.TestBlobView;
import org.hdht.business.test.bean.TestSameInsMultiUserView;
import org.hdht.business.test.dao.TestBlobViewDAO;
import org.hdht.business.test.dao.TestSameInsMultiUserViewDAO;
import org.hdht.commonweb.baselogic.GridLogic;
import org.hdht.commonweb.baselogic.GridSearchBean;
import org.hdht.map.spatial.bean.ParaProductQuery;
import org.hdht.map.spatial.logic.SpatialQuery; public class TestSameInsMultiUserViewLogic extends GridLogic implements Serializable{
private static final long serialVersionUID = 7424950578617734859L;
private SpatialQuery spatialQuery;
/**运输资源数据訪问对象*/
private TestSameInsMultiUserViewDAO testSameInsMultiUserViewDAO; public TestSameInsMultiUserViewDAO getTestSameInsMultiUserViewDAO() {
return testSameInsMultiUserViewDAO;
} public void setTestSameInsMultiUserViewDAO(
TestSameInsMultiUserViewDAO testSameInsMultiUserViewDAO) {
this.testSameInsMultiUserViewDAO = testSameInsMultiUserViewDAO;
} private TestBlobViewDAO testBlobViewDAO; public TestBlobViewDAO getTestBlobViewDAO() {
return testBlobViewDAO;
} public void setTestBlobViewDAO(TestBlobViewDAO testBlobViewDAO) {
this.testBlobViewDAO = testBlobViewDAO;
} public TestBlobView getTestBlobViewById(Long id){
TestBlobView testBlobView = new TestBlobView();
testBlobView = (TestBlobView)this.testBlobViewDAO.get(id);
return testBlobView;
} /***
* 查询基本卫星信息视图中列表记录
*
* @param currentPage 当前页码
* @param pageSize 页面最大行数
* @param map 查询条件键值对 key -> String, value -> Object
* @return
*/
@SuppressWarnings("unchecked")
private List listSpital = new ArrayList();
private List metaList = new ArrayList();
public Map listTestSameInsMultiUserView(int currentPage, int pageSize, Map map) {
StringBuffer dataHQL = new StringBuffer("from TestSameInsMultiUserView s ");
StringBuffer countHQL = new StringBuffer("select count(*) from TestSameInsMultiUserView s ");
Map<String,Object> smap = new HashMap<String,Object>();
String sat = null!=map.get("sat")?map.get("sat").toString(): "";
String sensor = null!=map.get("sensor")?map.get("sensor").toString():"";;
if(!"".equals(sat)&&!"".equals(sensor)){
smap.put("s.sat", sat);
smap.put("s.sensor",sensor);
}
GridSearchBean gsb = initGridSearchBean(smap);
String whereSql = gsb.getWhereSql().toString();
String starttime = null!=map.get("starttime")?map.get("starttime").toString():"";
String endttime = null!=map.get("endttime")? map.get("endttime").toString():"";
String geometryType = null!=map.get("geometryType")?map.get("geometryType").toString():"";//空间查询类型
boolean issearch = null!=map.get("issearch")&&map.get("issearch").toString().equals("false")?false:true;
if(!"".equals(starttime)) {
whereSql += " and receive_date >= to_date('"+starttime+"','yyyy-MM-dd HH24:mi:ss')";
}
if(!"".equals(endttime)) {
whereSql += " and receive_date <= to_date('"+endttime+"','yyyy-MM-dd HH24:mi:ss')";
}
dataHQL.append(whereSql);
countHQL.append(whereSql);
Map m = null;
if(!geometryType.equals("")){
if(currentPage==1&&issearch){
listSpital = this.searchSDE(map); //从fileGDB中查询出来的
List<TestSameInsMultiUserView> listProp = this.testSameInsMultiUserViewDAO.findByHQLQuery(dataHQL.toString());//从数据库中查询出来的
//属性查询结果
List newList = new ArrayList();
for (TestSameInsMultiUserView metaImg : listProp) {
String dataid = metaImg.getDataid().toString();
newList.add(dataid);
}
newList.retainAll(listSpital);//取交集,将fileGDB中查询出来的数据以及从数据库中查询出来的取交集
metaList = new ArrayList();//存放取完交集后的数据实体
int size = listProp.size();
for (int i = 0; i < size; i++) {
TestSameInsMultiUserView bf = listProp.get(i);
if(newList.contains(bf.getDataid().toString())){
metaList.add(bf);
}
}
}
m = this.getPageList(metaList, currentPage, pageSize);
}else{
m = this.search(dataHQL.toString(), gsb.getArgs(), countHQL.toString(), gsb.getArgs(), currentPage, pageSize);
}
return m;
} //開始分页
public Map getPageList(List list,int currentPage, int pageSize){
int countAll=list.size();
List pageResult=new ArrayList();
for(int i=(currentPage-1)*pageSize;i<currentPage*pageSize;i++){
if(i>=countAll){
break;
}
pageResult.add(list.get(i));
}
Map m = new HashMap();
m.put("list", pageResult);
m.put("all", countAll);
return m;
} /**
* 依据Id获取BasicSatInfo对象
* @param id
* @return
*/
public TestSameInsMultiUserView getInstanceById(Long id, String modelName) {
try {
TestSameInsMultiUserView instance = testSameInsMultiUserViewDAO.findByProperty("id", id);
return instance;
} catch(Exception ex) {
return new TestSameInsMultiUserView();
}
} /***
* SDE数据检索
* @param searchConditionMap 检索条件
* @return list = pids
* */
public List searchSDE(Map searchConditionMap){
String satelliteIdStr = null!=searchConditionMap.get("satelliteIdStr")?searchConditionMap.get("satelliteIdStr").toString():"";
String sensorCodeStr = null!=searchConditionMap.get("sensor_codeStr")?searchConditionMap.get("sensor_codeStr").toString():"";
String datatypenameStr = null!=searchConditionMap.get("datatypenameStr")?searchConditionMap.get("datatypenameStr").toString():"";
String productLevelStr = null!=searchConditionMap.get("productLevelStr")?searchConditionMap.get("productLevelStr").toString():"";
String cloudAmountStr = null!=searchConditionMap.get("cloudAmountStr")?searchConditionMap.get("cloudAmountStr").toString():"";
String begintime = null!=searchConditionMap.get("starttime")?searchConditionMap.get("starttime").toString():"";//採集開始时间
String endtime = null!=searchConditionMap.get("endttime")?searchConditionMap.get("endttime").toString():""; //採集開始时间//採集结束时间
String lowerRightLong = null!=searchConditionMap.get("lowerRightLong")? searchConditionMap.get("lowerRightLong").toString():""; //经纬度
String upperLeftLong = null!=searchConditionMap.get("upperLeftLong")?searchConditionMap.get("upperLeftLong").toString():"";
String lowerRightLat = null!=searchConditionMap.get("lowerRightLat")?searchConditionMap.get("lowerRightLat").toString():"";
String upperLeftLat = null!=searchConditionMap.get("upperLeftLat")?searchConditionMap.get("upperLeftLat").toString():"";
String geometryType = null!=searchConditionMap.get("geometryType")?searchConditionMap.get("geometryType").toString():"";
String distName = null!=searchConditionMap.get("distName")? searchConditionMap.get("distName").toString():"";
String rings = null!=searchConditionMap.get("rings")?searchConditionMap.get("rings").toString():"";
// String searchSpaceFlag = null!=searchConditionMap.get("searchSpaceFlag")?searchConditionMap.get("searchSpaceFlag").toString():"";
ParaProductQuery paraProductQuery = new ParaProductQuery();
paraProductQuery.setIsContain("1");
paraProductQuery.setStrSatellite(satelliteIdStr);
paraProductQuery.setSensorCodeStr(sensorCodeStr);
paraProductQuery.setDatatypename(datatypenameStr);
paraProductQuery.setProductLevel(productLevelStr);
paraProductQuery.setCloudAmount(cloudAmountStr);
paraProductQuery.setSceneStartTime(begintime);
paraProductQuery.setSceneEndTime(endtime);
paraProductQuery.setLowerRightLong(lowerRightLong);
paraProductQuery.setLowerRightLat(lowerRightLat);
paraProductQuery.setUpperLeftLong(upperLeftLong);
paraProductQuery.setUpperLeftLat(upperLeftLat);
paraProductQuery.setGeometryType(geometryType) ;
paraProductQuery.setDistName(distName);
paraProductQuery.setRings(rings);
List pids = this.spatialQuery.querySdePolygon(paraProductQuery);
return pids;
} public SpatialQuery getSpatialQuery() {
return spatialQuery;
} public void setSpatialQuery(SpatialQuery spatialQuery) {
this.spatialQuery = spatialQuery;
}
/**
* 通过id取出BasicSatInfoView 主要的卫星信息
*
* @param dataid
* @return
*/
public TestSameInsMultiUserView getTestSameInsMultiUserViewById(long dataid) {
TestSameInsMultiUserView testSameInsMultiUserView = this.testSameInsMultiUserViewDAO.findById(dataid);
return testSameInsMultiUserView;
} }

5)Action类:TestSameInsMultiUserViewAction

/**
* 类名:TransportAction.java
* 功能:运输资源控制器类
* @author 付建波
* @version Ver 1.0 2010-01-26 初版
*/ package org.hdht.business.test.action; import java.util.Map; import org.hdht.business.search.sde.bean.PointBean;
import org.hdht.business.test.bean.TestSameInsMultiUserView;
import org.hdht.business.test.logic.TestSameInsMultiUserViewLogic;
import org.hdht.commonweb.baseservlet.IocServlet;
import org.hdht.util.character.UtilString; public class TestSameInsMultiUserViewAction extends IocServlet{ private static final long serialVersionUID = 1L;
private String tb_flag;//多源数据表名
private String source_data_id;//源数据ID
/**产品显示具体的数据对象*/
private TestSameInsMultiUserView testSameInsMultiUserView ;
private TestSameInsMultiUserViewLogic testSameInsMultiUserViewLogic;
private PointBean pointBean = new PointBean();
public TestSameInsMultiUserView getTestSameInsMultiUserView() {
return testSameInsMultiUserView;
}
public void setTestSameInsMultiUserView(
TestSameInsMultiUserView testSameInsMultiUserView) {
this.testSameInsMultiUserView = testSameInsMultiUserView;
}
public TestSameInsMultiUserViewLogic getTestSameInsMultiUserViewLogic() {
return testSameInsMultiUserViewLogic;
}
public void setTestSameInsMultiUserViewLogic(
TestSameInsMultiUserViewLogic testSameInsMultiUserViewLogic) {
this.testSameInsMultiUserViewLogic = testSameInsMultiUserViewLogic;
}
public String getTb_flag() {
return tb_flag;
}
public void setTb_flag(String tb_flag) {
this.tb_flag = tb_flag;
}
public String getSource_data_id() {
return source_data_id;
}
public void setSource_data_id(String source_data_id) {
this.source_data_id = source_data_id;
} public TestSameInsMultiUserView getTestSameMultiUserView() {
return testSameInsMultiUserView;
}
public void setTestSameMultiUserView(TestSameInsMultiUserView testSameInsMultiUserView) {
this.testSameInsMultiUserView = testSameInsMultiUserView;
}
public PointBean getPointBean() {
return pointBean;
}
public void setPointBean(PointBean pointBean) {
this.pointBean = pointBean;
}
/***
* 查询基本卫星信息列表记录
*
* @param currentPage 当前页码
* @param pageSize 页面最大行数
* @param map 查询条件键值对 key -> String, value -> Object
* @return
*/
@SuppressWarnings("unchecked")
public Map listTestSameInsMultiUserView(int currentPage, int pageSize, Map map) {
return this.testSameInsMultiUserViewLogic.listTestSameInsMultiUserView(currentPage, pageSize, map);
} /**
* 依据Id获取station对象
* @param id 检測站主键
* @return Station 检測站相应
*/
public TestSameInsMultiUserView getStationById(Long id, String modelName) {
return this.testSameInsMultiUserViewLogic.getInstanceById(id, modelName);
} /**
* 多源数据信息 “详情” 列表展示
* @param source_data_id 源数据ID
* @param tablename 所在表
* */
@SuppressWarnings("unchecked")
public String getShowDetail(){
try {
if(UtilString.isNotNull(this.tb_flag)&&UtilString.isNotNull(this.source_data_id)){
TestSameInsMultiUserView testSameInsMultiUserView = this.testSameInsMultiUserViewLogic.getTestSameInsMultiUserViewById(Long.valueOf(this.source_data_id)) ;
this.setTestSameInsMultiUserView(testSameInsMultiUserView);
}
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
} /**
* 依据流水号获取影像
* @param serialid
* @return
*/
public String rightLitterMap(){
return SUCCESS;
} }

6、DWR以及Spring配置文件

TestSameInsMutilUserView.dwr.xml

TestSameInsMutilUserView.spring.xml

1)TestSameInsMutilUserView.dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr//dwr30.dtd">
<dwr>
<allow>
<create creator="spring" javascript="TestSameInsMultiUserViewAction" scope="application">
<param name="beanName" value="testSameInsMultiUserViewAction" />
</create>
<convert converter="hibernate3" match="org.hdht.business.test.bean.TestSameInsMultiUserView" >
</convert>
</allow>
</dwr>

2)TestSameInsMutilUserView.spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="testSameInsMultiUserViewAction" class="org.hdht.business.test.action.TestSameInsMultiUserViewAction" scope="prototype" autowire="byName" /> <bean id="testSameInsMultiUserViewLogic" class="org.hdht.business.test.logic.TestSameInsMultiUserViewLogic" autowire="byName" /> <bean id="testSameInsMultiUserViewDAO" class="org.hdht.business.test.dao.TestSameInsMultiUserViewDAO" autowire="byName" /> </beans>

7、測试代码:(基于本公司框架)

TestSameInsMultiUserViewAction testSameInsMultiUserViewAction = (TestSameInsMultiUserViewAction) ApplicationContextHolder.getBean("testSameInsMultiUserViewAction");
java.util.Map m = testSameInsMultiUserViewAction.listTestSameInsMultiUserView(1, 10, new java.util.HashMap());
TTool.println(m);

同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现的更多相关文章

  1. Oracle数据库访问其他用户下的表,不加表所属的用户名的实现方法

    一. 问题: 如何实现在Oracle数据库中访问其他用户的表时不需加表所属的用户名 二. 举例: Oracle里面的用户A,要访问用户B的表需要带用户B的前缀,如访问用户B的 TEST表,需要这样访问 ...

  2. Oracle导入SQL脚本执行 scott 用户下的表删除了

    执行 .sql 文件时,应在 sqlplus  或 cmd 中执行,速度比plsql 中的command window 中书许多, scott 用户下的表删除了 可以执行如下 @D:\app\Admi ...

  3. spool命令、创建一个表,创建而且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

      1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建 ...

  4. 数据库实例: STOREBOOK > 用户 > 编辑 用户: SYSTEM

    ylbtech-Oracle:数据库实例: STOREBOOK  >  用户  >  编辑 用户: SYSTEM 编辑 用户: SYSTEM 1. 一般信息返回顶部 1.1, 1.2, 2 ...

  5. 数据库实例: STOREBOOK > 用户 > 编辑 用户: SYSMAN

    ylbtech-Oracle:数据库实例: STOREBOOK  >  用户  >  编辑 用户: SYSMAN 编辑 用户: SYSMAN 1. 一般信息返回顶部 1.1,   1.2, ...

  6. 数据库实例: STOREBOOK > 用户 > 编辑 用户: SYS

    ylbtech-Oracle:数据库实例: 数据库实例: STOREBOOK  >  用户  >  编辑 用户: SYS 编辑 用户: SYS 1. 一般信息返回顶部 1.1, 1.2, ...

  7. 数据库实例: STOREBOOK > 用户 > 编辑 用户: PUBLIC

    ylbtech-Oracle:数据库实例: STOREBOOK  >  用户  >  编辑 用户: PUBLIC 编辑 用户: PUBLIC 1. 一般信息返回顶部 1.1, 1.2, 2 ...

  8. 数据库实例: STOREBOOK > 用户 > 编辑 用户: MGMT_VIEW

    ylbtech-Oracle:数据库实例: STOREBOOK  >  用户  >  编辑 用户: MGMT_VIEW 编辑 用户: MGMT_VIEW 1. 一般信息返回顶部 1.1, ...

  9. 数据库实例: STOREBOOK > 用户 > 编辑 用户: DBSNMP

    ylbtech-Oracle:数据库实例: STOREBOOK  >  用户  >  编辑 用户: DBSNMP 编辑 用户: DBSNMP 1. 一般信息返回顶部 1.1, 1.2, 2 ...

随机推荐

  1. Poj1741/洛谷P4718 Tree(点分治)

    题面 有多组数据:Poj 无多组数据:洛谷 题解 点分治板子题,\(calc\)的时候搞一个\(two\ pointers\)扫一下统计答案就行了. #include <cmath> #i ...

  2. 虚拟环境中pip install requirments.txt: Cannot fetch index base URL https://pypi.python.org/simple/

    Stackoverflow  : http://stackoverflow.com/questions/15501133/python-pip-error-cannot-fetch-index-bas ...

  3. [转]iOS开发new与alloc/init的区别

    1.在实际开发中很少会用到new,一般创建对象咱们看到的全是[[className alloc] init] 但是并不意味着你不会接触到new,在一些代码中还是会看到[className new], ...

  4. 【codeforces.com/gym/100240 J】

    http://codeforces.com/gym/100240 J [分析] 这题我搞了好久才搞出样例的11.76....[期望没学好 然后好不容易弄成分数形式.然后我‘+’没打..[于是爆0... ...

  5. 【Splay 总结】

    很多年前学的splay已经忘了? BZOJ 3729 要用Splay啊哭..强制在线.. 二叉查找树 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree ...

  6. cocos2d-android 使用 cocos2d 绘图

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha cocos2d-android-1 https://github.com/ZhouWei ...

  7. [BZOJ4423][AMPPZ2013]Bytehattan(对偶图+并查集)

    建出对偶图,删除一条边时将两边的格子连边.一条边两端连通当且仅当两边的格子不连通,直接并查集处理即可. #include<cstdio> #include<algorithm> ...

  8. 区间DP POJ 1141 Brackets Sequence

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29520   Accepted: 840 ...

  9. Codeforces Round #300 B. Quasi Binary 水题

    B. Quasi Binary Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/538/probl ...

  10. 测试用例设计——WEB通用测试用例(转)

    http://qa.blog.163.com/blog/static/190147002201111332029404/