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);

猜你喜欢

转载自blog.csdn.net/cc_rain0624/article/details/80436686
nc