数据库投影的定义是什么?

默认分类 未结 1 466
⊙司徒包包⊙
⊙司徒包包⊙ 2023-03-18 09:13
相关标签:
1条回答
  • 2023-03-18 09:54

    投影查询指的是:单击下拉框,显示数据库中数据字典表已有的数据类型名称,无重复的遍历到下拉菜单中,如图所示

    1.在ElecSystemDDLAction的home添加:public class ElecSystemDDLAction extends BaseAction{ ElecSystemDDL elecSystemDDL=this.getModel(); //注入数据字典service@Resource(name=IElecSystemDDLService.SERVICE_NAME) IElecSystemDDLService elecSystemDDLService; /** * @Name: home * @Description: 跳转到数据字典页面 * @Parameters: 无 * @Return: String:跳转到system/dictionaryIndex.jsp*/public String home(){// 1:查询数据库中已有的数据类型,返回List集合 List list=elecSystemDDLService.findSystemDDLListByDistinct();// 2:将ElecSystemDDL对象放入request中 request.setAttribute("list", list);return "home"; }}2.在IElecSystemDDLService中声明投影查询方法:public interface IElecSystemDDLService {public static final String SERVICE_NAME="cn.elec.service.impl.ElecSystemDDLServiceImpl"; List findSystemDDLListByDistinct(); }3.在ElecSystemDDLServiceImpl中进行重写:public class ElecSystemDDLServiceImpl implements IElecSystemDDLService{//数据字典Dao@Resource(name=IElecSystemDDLDao.SERVICE_NAME)private IElecSystemDDLDao elecSystemDDLDao; /** * @Name: findSystemDDLListByDistinct * @Description: 查询数据库中已有的数据类型,去掉重复值 * @Parameters: 无 * @Return: List:存储数据类型集合*/@Override @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)public List findSystemDDLListByDistinct() { List list=elecSystemDDLDao.findSystemDDLListByDistinct();return list; }}4.在IElecSystemDDLDao中声明投影查询方法:public interface IElecSystemDDLDao extends ICommonDao {public static final String SERVICE_NAME="cn.elec.dao.imp.ElecSystemDDLImpl"; List findSystemDDLListByDistinct();}5.在ElecSystemDDLImpl中重写该方法:@Repository(IElecSystemDDLDao.SERVICE_NAME)public class ElecSystemDDLImpl extends ICommonDaoImpl implements IElecSystemDDLDao{/** * @Name: findSystemDDLListByDistinct * @Description: 查询数据库中已有的数据类型,去掉重复值 * @Parameters: 无 * @Return: List:存储数据类型集合*/@Overridepublic List findSystemDDLListByDistinct() {//返回List集合List systemList = new ArrayList();/**方法一:投影查询一个字段返回List中 String hql="SELECT DISTINCT o.keyword FROM ElecSystemDDL o"; List list = this.getHibernateTemplate().find(hql); //组织页面返回结果 if(list!=null&&list.size()>0){ for(Object obj:list){ ElecSystemDDL elecSystemDDL = new ElecSystemDDL(); //设置数据类型,并添加到systemList elecSystemDDL.setKeyword(obj.toString()); systemList.add(elecSystemDDL); } }*///方法二:使用hql语句直接将投影查询的字段放置到对象中String hql="SELECT DISTINCT new cn.elec.domain.ElecSystemDDL(o.keyword) FROM ElecSystemDDL o"; systemList=this.getHibernateTemplate().find(hql);return systemList; }}

      其中第二种查询方案需要在ElecSystemDDL中创建一个带参得的构造方法:

    public ElecSystemDDL() {//无参构造方法} public ElecSystemDDL(String keyword) {//带参构造方法this.keyword=keyword;}  6.在dictionaryIndex.jsp遍历:

      因为在Actionl类中将List集合放入request对象中,属性名为list。当dictionary.jsp页面获得request.list之后需要将ElecSystemDDL对象的keyword属性遍历出来,放入下拉选项框中,有两种方案:

    类型列表:

    测试,在数据字典首页功能页面中,下拉菜单能正确显示类型名称。

    1.hql和sql语句的投影查询:

    (1)如果投影查询是一个字段,此时返回List,例如

    String hql = "SELECT DISTINCT o.keyword FROM ElecSystemDDL o";List list = this.getHibernateTemplate().find(hql);

    (2)如果投影查询是多个字段,此时返回List,例如

    String hql = "SELECT DISTINCT o.keyword,o.ddlName FROM ElecSystemDDL o";List list = this.getHibernateTemplate().find(hql);

    (3)如果投影查询是多个字段,此时返回List,例如

    String hql = "SELECT o,o.ddlName FROM ElecSystemDDL o";List list = this.getHibernateTemplate().find(hql);

      数组的第一个值,是一个ElecSystemDDL的对象,数组的第二个值表示字段ddlName的值。

    (4)如果投影查询是一个对象,此时返回List,例如

    String hql = "SELECT o FROM ElecSystemDDL o";List list = this.getHibernateTemplate().find(hql);

    (5)如果是hql语句,使用hql语句直接将投影查询的字段放置到对象中,例如

    String hql = "SELECT DISTINCT new cn.itcast.elec.domain.ElecSystemDDL(o.keyword) FROM ElecSystemDDL o";List list = this.getHibernateTemplate().find(hql);2.页面使用select进行遍历List

    (1)方案一:使用遍历

    (2)方案二:使用

    一个dataset(对应GDALDataset类)是一个光栅数据以及和它有关系的信息的集合。 特别地dataset包含了光栅数据的大小(像素、线等)。dataset同时也为对应的 光栅数据指定了坐标系统。dataset本身还可以包含元数据,它们以一种键/值对 的方式来组织。GDAL的数据集是基于OpenGIS Grid Coverages的格式定义的。坐标系统Dataset的坐标系统由OpenGIS WKT字符串定义,它包含了:一个全局的坐标系名称。一个地理坐标系名称。一个基准标识符。椭球体的名字。长半轴(semi-major axis)和反扁率(inverse flattening)。初子午线(prime meridian)名和其与格林威治子午线的偏移值。投影方法类型(如横轴莫卡托)。投影参数列表(如*经线等)。一个单位的名称和其到米和弧度单位的转换参数。轴线的名称和顺序。在预定义的权威坐标系中的编码(如EPSG)。更多信息请参考OpenGIS WKT坐标系统定义,以及osr教程文档和 OGRSpatialReference类的描述文档。在GDAL中,返回坐标系统的函数是GDALDataset::GetProjectionRef()。 它返回的坐标系统描述了地理参考坐标,暗含着仿射地理参考转换,这地理参考转换是由GDALDataset::GetGeoTransform()来返回。由GCPs地理参考坐标描述的坐标系统是由 GDALDataset::GetGCPProjection()返回的。注意,返回的坐标系统字符串“”表示未知的地理参考坐标系统。仿射地理变换GDAL数据集有两种方式描述栅格位置(用点/线坐标系)以及地理参考坐标系之间的关系。 第一种也是比较常用的是使用仿射转换,另一种则是GCPs。仿射变换由6个参数构成,它们由GDALDataset::GetGeoTransform()返回它们把点/线坐标, 用下面的关系转将点/线影射到地理坐标:Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2)Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)假设影像上面为北方,GT2和GT4参数为0,而GT1是象元宽,GT5是象元高, (GT0,GT3)点位置是影像的左上角。注意,上面所说的点/线坐标系是从左上角(0,0)点到右下角,也就是坐标轴从 左到右增长,从上到下增长的坐标系(即影象的行列从左下角开始计算)。 点/线位置中心是(0.5,0.5)。

    投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为:∏A(R)。其中A是属性名(即列名)表,R是表名。

    0 讨论(0)
    提交回复