NC 数据库访问之BaseDao

**1.前台数据访问
使用IVOPersistence服务组件,进行增删改操作;
使用IUAPQueryBS服务组件,进行查询操作。
2.后台数据访问
使用BaseDAO工具类,进行单表对象的CRUD操作;
BaseDAO dao=new BaseDAO()//使用默认的数据源
BaseDAO dao=new BaseDAO(dataSource)//使用指定的数据源**

BaseDAO 是基于JavaBean&&VO的直接操作。可以自己创建VO 或者创建javabean
如果自己创建javebean 需要构建PersonVOMeta 映射文件

1、创建JavaBean  对数据字段进行 get  set方法 Serializable序列化一下 要不然会报错

public class Person implements Serializable{
    public Person() {
        // TODO Auto-generated constructor stub
    }

    private String id;
    private String name;
    private int age;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}


2、构造数据映射对象  实现接口  **注意对象映射元数据类命名规范为** nc.vo.xxx.XXXVOMeta
    nc.jdbc.framework.mapping.IMappingMeta;
    public class PersonVOMeta implements IMappingMeta {

    private String[] attributes = new String[] { "id", "name", "age" };
    private String[] columns = new String[] { "ID", "NAME", "AGE" };
    public PersonVOMeta() {
        // TODO Auto-generated constructor stub
    }
    @Override
    public String[] getAttributes() {
        // TODO Auto-generated method stub
        return attributes;
    }

    @Override
    public String[] getColumns() {
        // TODO Auto-generated method stub
        return columns;
    }

    @Override
    public String getPrimaryKey() {
        // TODO Auto-generated method stub
        return "ID";
    }

    @Override
    public String getTableName() {
        // TODO Auto-generated method stub
        return "Person";
    }
}

上面创建javabean 创建映射文件后 就可以直接使用baseDao进行CRUD操作。

//查询
BaseDAO dao=new BaseDAO();
PersonVOMeta meta=new PersonVOMeta();
dao.retrieveByClause(Person.class,meta,"id=5");

//保存
BaseDAO dao=new BaseDAO();
Person person=new Person();
person.setName(“tom”);
person.setAge(“20”);
PersonVOMeta meta=new PersonVOMeta();
dao.insertObject(person,meta);//默认会自动为 Person 对象生成主键

如果想要保留Person类中的主键并插入到数据表中应该使用
dao.insertObjectWithPK(person,meta);

//更新
BaseDAO dao=new BaseDAO();
Person person=new Person();
Person.setId(4);
person.setName(“tom”);
person.setAge(“20”);
PersonVOMeta meta=new PersonVOMeta();
dao.updateObject(person,meta);

//删除
BaseDAO dao=new BaseDAO();
Person person=new Person();
Person.setId(“4”);
PersonVOMeta meta=new PersonVOMeta();
dao.deleteObject (person,meta);

BaseDao 是基于后端的数据库操作 不能直接在前端client调用 否则会报找不到数据的错误。

public 目录写接口 IHeadWms

package nc.itf.head.wms;

import nc.head.wms.vo.Person;
import nc.jdbc.framework.mapping.IMappingMeta;

//定义客户端访问接口
public interface IHeadWms {

    //插入单vo  使用自己主键
    String insertObjectWithPK(Object vo, IMappingMeta meta);

    //多条vo  使用自己主键
    String[] insertObjectWithPK(Object[] vo, IMappingMeta meta);


    String insertObject(Object vo, IMappingMeta meta);

    String saveObject(Person p);

    String saveObject(Person[] p);
}

private 目录实现接口 HeadWms

public class HeadWms implements IHeadWms {

    private BaseDAO dao;

    //构造方法创建BaseDao
    public HeadWms() {
        // TODO Auto-generated constructor stub
        dao=new BaseDAO();
    }

    //系统分配主键
    @Override
    public String insertObject(Object vo, IMappingMeta meta) {
        if(dao!=null){
            String insertObject="";
            try {
                insertObject = dao.insertObject(vo, meta);
            } catch (DAOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return insertObject;
        }else{
            return "Base Dao is null";
        }
    }

    //自己的主键
    @Override
    public String insertObjectWithPK(Object vo, IMappingMeta meta) {
        if(dao!=null){
            String insertObjectWithPK="";
            try {
                insertObjectWithPK = dao.insertObjectWithPK(vo, meta);
            } catch (DAOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return insertObjectWithPK;
        }else{
            return "Base Dao is null";
        }
    }

    //自己主键
    @Override
    public String[] insertObjectWithPK(Object[] vo, IMappingMeta meta) {
        if(dao!=null){
            String[] insertObjectWithPK=null;
            try {
                insertObjectWithPK = dao.insertObjectWithPK(vo, meta);
            } catch (DAOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return insertObjectWithPK;
        }
        return null;
    }

    @Override
    public String saveObject(Person p) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String saveObject(Person[] p) {
        try {
            PersistenceManager manager=PersistenceManager.getInstance("WMS");
            JdbcSession session = manager.getJdbcSession();
        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}

接口卸完以后 在client端调用

//接口获取baseDao的实现接口
IHeadWms headWms=(IHeadWms) NCLocator.getInstance().lookup(IHeadWms.class.getName());

//实例化映射文件
PersonVOMeta meta=new PersonVOMeta();

//调用保存方法 传入javabean 和meta的映射文件
headWms.saveObject(p,meta);
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OSI PI实时数据库系统 OSI PI实时数据库系统 PI 实时数据库系统 (Plant Inhrmation System) 是由美国 OSI Software 公司开发的 基于 C/S、B/S 结构的商品化软件应用平台,是工厂底层控制网络与上层管理信息系统 连接的桥梁,PI 在工厂信息集成中扮演着特殊和重要的角色。 PI实时数据库系统适用于电力、石油、化工、冶金、造纸、制药、水处理、食 品饮料、 通讯等各种生产流程企业的生产过程优化。 PI 是全世界装机量最多的 实时数据库系统 , 己成为 OSI 公司的标志产品。 美国OSI SOftware公司创建于1980 年,总部设在加州 "San Leandro 。在休 斯顿、西 雅图、克里夫兰设有分部 , 在美国的 IL 、 FL、 MO、 MA、 NY、 NC 等州设有办事处 , 在澳大利亚、新西兰、德国、新加坡设有办事处,全球范围有超过80多个分销商。 OSI Software公司与 Microsd 、SAP、 KBC 等著名公司保持着良好的合作关系,PI的客 户端产品中底层完全采用微软Windows 技术,同时也将用户界面 Windows 化。迄今为止 ,PI的客户端模块以功能强大、灵活、易用的特点在业界一直保持着领先的地位。 OSI So ftware 公司还与世界上几乎所有的 DCS/PLC 厂商保持着良好合作关系,这就使得 PI 与 DCS/PLC 的数据接口建立在坚实的基础之上。 PI 实时数据库系统概述 世界上众多的企业都认识到生产过程的实时数据与历史数据是企业最有 价值的信息财富 ,是整个企业信息系统的核心和基础。但是,如果生产现场缺乏数据,数据不完整或者 不一致,以及历史数据丢失,都将导致管理者对工厂的现状无法判定,给管理带来困难 ,严重时甚至导致工厂停产,发生事故等等。二十年来,OSI S0ftware 公司一直致力于 实时数据库产品的开发工作,使得PI系统成为世界上最优秀的实时数据库产品。目前, 全世界超过5000 家公司选用了PI系统,而且购买PI用户每年以40%的速度增长 , 使得凹 的装机量近万套 , 成 为全球装机量最多的实时数据库产品。 PI 用于工厂数据的自动采集、存贮和监视。作为大型实时数据库和历史 数据库 ,PI 可 在线存贮每个工艺过程点的多年数据。它提供了清晰、精确的操 作情况画面 , 用户既 可浏览工厂当前的生产情况 , 也可回顾过去的生产情况。 同时 ,PI 为最终用户和应用软件开发人员提供了快捷高效的工厂信息。 由于工厂数据存放在统一的数据仓库中 , 公司中的所有人 , 无论在什么地方都可 以看 到和分析相同的信息。 PI 客户端的应用程序可以使用户很容易的对工厂级 和公司级实 施管理 , 诸如改进工艺 ,TQC, 故障预防维护等。通过 PI 可集成产 品计划、维护管理 、专家系统、 LIMS 和优化 / 建模等应用程序。 PI 在业务管理和 实时生产之间起到 桥梁作用。 PI 的核心 .历史数据管理 工厂的历史数据对公司来说是很有价值的。PI的核心就是数据档案管理 , 它采集并存贮 与生产流程相关的上千、上万点的数据。多年应用历史数据库管理的经验告诉我们 , 现 在要知道将来在进行分析时 , 哪些数据是必须的 , 是非常困难的。因此 , 保存所有的 数据是防止丢失所需信息的最好方法。没有工厂历史数据管理 , 对于重建工厂历史数据 是几乎不可能的。要改进产品 , 必须具备与之相关的原料的知识并了解当前和过去的操 作状态。 PI采集、存贮流程信息 , 并把这些数据提供给人们 , 其他应用程序可从这些 数据中精选出有意义的信息。这些信息可以用来指导工艺改进 , 降低物耗 , 增加产量 。 PI的 C/S 结构 PI是一个真正的CS计算机环境 , 它所使用的智能结构可在多种系统配置下运行。 PI 数 据服务器提供信息集中采集和系统的维护。 PI 客户可处理手中所有的最大数量的信息 。在全厂或全公司可使用多个 PI 数据服务器。数据服务器小的可以是一千点 , 大的可 达到数十万点。每个 PI 都可同时与一个或多个实时系统相联 , 并可读 / 写几乎任何 实时设备或数据库。 PI 通常用来在两个不同厂商的产品之间传送信息。这种灵活的 , 功能强大的结构为信息系统结构设计的优化提供了自由度。 PI可支持的用户个数没有 限制。只要安装 PI 服务器的机器性 能以及网络性能允许 , 看不出对客户端用户数有 什么限制。在 PI 上使用的大多数应用程序都是客户端应用程序产品 , 这些应用程序所 需的系统资源比终端对话或X-Windows 登录到中心主机所需的系统资源还少。 PI的设计原理 为操作或生产获取所有相关数据 由于采集了所有的工艺数据 ,

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值