原文
dao.processor是在多数据库多实体环境下以java对象的数据对象化和持久化的核心类,它的使用方
法总结如下:
一、与entity绑定;
针对dao.entity对象,可与ejb.entity设置兼容。与entity兼容的典型使用方法是:
processor pro =processorfactory.getprocessorinstance(ent);
或:
processor pro =processor.getinstance(ent);
或:
processor pro =procesor.getinstance();
pro.setentity(entity); 或;pro.setentity(string ent);
效果一样;
使用的方式是: pro.open();这时侯pro会从entity的设置中通过datasource或connectionmanager获得指定的数据库连接;
pro.close(),关闭清空所有的数据资源;
二、与dao接口绑定;
pro可以绑定一个或者多个dao对象,这时侯processor显得象一个服务spi;但每一个dao对象只能绑定一个processor实例。
可以通过find获得dao对象;
dao dao =pro.findbyid(in id)或 pro.findbyname(string name)获得相应entity的实例对象,每个实例相当于数据库中的一行记录;
dao dao =pro.findbyvalue(string key,string value);//根据给定的条件返回dao对象;
dao.insert();dao.update();dao.delete()等方法相应通过接口调用pro.insert(dao dao)等几个同名方法;可以由容器管理这几个方法,保持与数据库的同步持久性。
dao.isexist(),该对象是否存在;
dao dao =pro.getdao(string sql);//其实是直接用sql获得dao对象;
三、与query绑定;
dao.processor的另一个使用方法是与dao.query对象同步。query是由dao.xml或其他xml定义的包含sql的查询容器,典型设置如下:
insert into bbsthread (author,sourceid,views,replys,authorid,pubdate,alias,topic,content,name,oldpath,oldsource) values (${author},${sourceid},${views},${replys},${authorid},${pubdate},${alias},${topic},${content},${name},${oldpath},${oldsource})
query通过query.addvarian(name,value),然后使用query.getsqlstatement()获得完整的sql语句;
processor.setquery(query qry)设入query;
string msg =pro.execute();//如果执行正常反回空,否则返回错误信息;
或arraylist alist =pro.executequery();这要求在entity有效的情况下返回空或者是该entity的对象查询列(适用于select型的query);
或resultset rs =pro.getresultset(query qry);四、直接执行sql;
dao.processor可以直接执行sql;
对于查询型的语句可以直接通过resultset rs =pro.getresultset(sql);
或者:string msg =pro.doupdate(sql);直接执行sql执行语句;
通过 arraylist alist =pro.getresultlist(string sql);//使用entity设定的class类型,要求entity不为空
或arraylist alist =pro.getresultlist(string sql,string sclss); //dao接口的class名称;
或arraylist alist =pro.getresultlist(string sql,class cls);
这几个重叠的方法得到相应的查询结果对象列;
arraylist alist =pro.getresultlist(string[] conditions,string sord);//这个方法要求enty已经设好,按给定的更新的conditions条件集或order语句返回排序对象列;
五、扩展的方法:
arraylist alist =pro.getstringlist(query qry);//返回的是string型的列;
batchdelete(int[] ids),batchresume(int[] ids); batchclear(int[] ids),几个batch方法,要求在entity已经设定的基础上批执行指定的id集的所有记录。
六、获取connnection的方法;主要通过connectionmanager获取数据库连接;
有三个可能的途径;一是通过entity所属的获得需要的连接名;二是通过query的getconn获得需要的连接名;三是通过setconnection直接获得连接名;
