




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JDBC JdbcSession的创建 数据异常的处 结果集合的处 更新的实 无参数更新数 带参数更新数 批量带参数更新数 批量无参数更 JdbcSession中特殊参数类 对象的持久 普通JavaBean的持久 对象定 构造数据映射对 对象................................................................................................................对象写 对象更 对象删 SuperVO的持久 常用的API的使 IUAPQueryBS接 结果集的控 附 常见问题解 —JDBCJdbcSessionPersistenceManagerPersistenceManagersessionManager=PersistenceManager.getInstance();try{JdbcSessionsessionsessionManagergetJdbcSession;//开始jdbc会话}catch(DbExceptione)}finally.}数据异常的处try数 过}catch(DbExceptione)//to相关处DbException是一个抽象异常类,它被用来处理SQLExceptiontry数 过}catch(DbExceptione)//to相关处//to//to}finally//}对查询结果集合的处理,主要由ResultProcessor类来实现,这是一个接口ResultProcessor包含有一个简单的方法,不同的ResultProcessor实现返回不同的结果对象。ArrayProcessor数组处理器,返回一个对象数组,结果集中只有一行数据,其中结果集ArrayListProcessorArrayListMapProcessorHashMapHashMap,结果集中只有一行数据,其中结果集合中每一列的列名和列值对应HashMap的一个关键字和相应的值。MapListProcessorHashMapArrayList集合,集合中的每一个元素是一个HashMap,每个HashMap对应结果集中的一行数据,其中结果集合中每一列的列名和列值对应HashMap的一个关键字和相应的值。 能自动把结果集中的值按列的名称映射到javaBean中,如结果集中有名称为”name”的javagetName()方法就能把结果集合中”name”对应的值映射BeanProcessorArrayList集合,集合中的每一个元素是一javaBean,javaBeanJavaBean中的数据映射关系和BeanProcess同理。ColumnProcessorJava对象,结果集中只有一行数据,该对象对 ListProcessor:值对象集合处理器,根据映射信息返回一个ArrayList集合,集合中的每一个元素是一个javaBean,每个javaBean对应结果集合中一行数据,其中每个JavaBean中的数据映射关系和BeanMap Process同理BeanMapProcessorJavaBean,结果集中只有一行数据,该处理器能自动把结果集中的值按列的名称映射到javaBean中,如结果publicclasspublicclassCustomProcessorextendsBaseProcessorpublicObjectprocessResultSet(ResultSetrs)throwsSQLException…自定义实…}}PersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//开始jdbc会Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'wherepk_invmandoc='0001AA10000000000DDD'";}catch(DbExceptione)}finally{.}PersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//开始jdbc会Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'whereSQLParameterparameternewSQLParameter();构造参数对parameter.addParam("0001AA10000000000DDD");添加参数,JdbcSession会将参数对象中的}catch(DbExceptione)}finally{.}PersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//开始jdbc会Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'wherepk_invmandoc=?";SQLParameterparameter=newsession.addBatch(sql,parameter);introws=}catch(DbExceptione)}finally{.}PersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//开始jdbc会Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'wherepk_invmandoc=’'0001AA10000000000DDD'’";introws=}catch(DbExceptione)}finally{.}JdbcSessionPersistenceManagersessionManager=null;try{JdbcSessionPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//开始jdbc会Stringsql=更新或插入Null字段的SQL语句……SQLParameterparameternewparameter.addNullParam(Types.INTEGER);session.addBatch(sql,parameter);introws=}catch(DbExceptione)}finally{.}BlobPersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//开始jdbc会Stringsql更新或插入Blob字段的SQL语句SQLParameterparameter=newSQLParameter();parameter.addBlobParam(newObject());session.addBatch(sql,session.addBatch(sql,parameter);introws=}catch(DbExceptione)}finally{}ClobSessionManagerSessionManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//开始jdbc会Stringsql=更新或插入Clob字段的SQL语句……SQLParameterparameter=newSQLParameter();parameter.addClobParam(newString());session.addBatch(sql,parameter);introws=}catch(DbExceptione)}finally{}二对象的持久JavaBean//importsimplied….publicclass //importsimplied….publicclass privateintid;privateStringname;intage;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}…}在定义了类以后,需要将类映射成数据表,需要注意的是目前的持久层JavaBeanJavaBean只能映射成一个数据表。JavaBean,JavaBean和表是(IDNUMBER(5,0)NOTNAMENAMEVARCHAR(40)NOTNULL,AGENUMBER(3,0)NOTNULL,PRIMARYKEY(ID))负责定义数据库与javaBeanpublicpublicinterface Meta@returnString@return表StringString[]String[]}根据ImapMeta接口的定义可以知道任何实现了ImapMeta接口的对象映射元数据Javabean对应的数据库表名称、主键名称、字段名称,以及和数据库字段一一对应的Javabean对象的属性名称。根据前面的例子我们可以定义.java的对象映射元数据类VOMeta.javaimportimport publicVOMetaimplements MetaprivateString[]attributes=newString[]{"id","name","age"};privateString[]columns=newString[]{"ID","NAME","AGE"};publicStringgetPrimaryKey(){return}return}publicString[]getAttributes(){returnattributes;}publicString[]getColumns(){returncolumns;}}统中提供了nc.bs.dao.BaseDAO,该类是数据库帮助类封装了常用的持久层操作,提供了IUAPQueryBS和IVOPersistence以及superDMOBaseDAOdao=newVOMeta 一个对象(在本例中,假设表中已存在10条记录,ID从1到10。要从数据库中得到一个对象只需要BaseDAO实例让我们读入ID是5BaseDAOdao=newVOMeta 现在创建一个对象,并将它写入数据库BaseDAOBaseDAOdao=newVOMetameta=new如果想要保留类中的主键并插入到数据表中应该使现在利用对象,更新数据库中的ID=4的对应数BaseDAOBaseDAOdao=newVOMetameta=new现在利用对象,删除数据库中的ID=4的对应数BaseDAOBaseDAOdao=newVOMeta和功能请参考BaseDAO的JavaDoc。SuperVOSuperVONC系统中比较特殊的值对象,该值对象自身已经包涵了值对象到数据库中的VO进行持久化操作。BaseDAOBaseDAOdao=new.(BaseDAOdao=newBaseDAO();XXXSuperVOBaseDAOdao=newBaseDAO();XXXSuperVOvo=newXXXSuperVO();dao.updateVO(vo)BaseDAOdao=newBaseDAO();XXXSuperVOBaseDAOdao=newBaseDAO();XXXSuperVOvo=newXXXSuperVO();dao.deleteVOBaseDAOdao=newBaseDAO();XXXSuperVOBaseDAOdao=newBaseDAO();XXXSuperVOvo=newXXXSuperVO();dao.insertVOBaseDAOSuperVO的持久化(CRUD操作)提供了各种应用不同的方法,具体使用方法和功能请参考BaseDAO的JavaDoc三常用的API的使PersistenceManagerpersistence=null;try{persistencePersistenceManager.getInstance(数据源)JdbcSessionsession=persistence.getJdbcSession();//数据调用1//数据库调用2//数据库调用Session.excuteQuery//或其它方法调用PersistenceManagerpersistence=null;try{persistencePersistenceManager.getInstance(数据源)JdbcSessionsession=persistence.getJdbcSession();//数据调用1//数据库调用2//数据库调用Session.excuteQuery//或其它方法调用传入SessionObjecto=Callmethod(Session);}catch(DAOExceptionThrowsnewPersistence.}PersistenceManager包括supervo及objma的查询和持久化,PersistenceManager具体提供的方法和功能请参考PersistenceManager的JavaDoc.SuperVOJavaBean,对于通用持久化或泛化持久化,无任何业务逻辑的insert、update、delete操作强烈建议前台使用该接口,需要业务逻辑的持久化操作必须使用具体的名称来完成业务方法的Service。IVOPersistence具体提供的方法和功能请参考IVOPersistence的JavaDoc.privateprivateIVOPersistencegetVOPersistence()throwsBusinessException{if(iVOPersistence==null)tryiVOPersistence=(IVOPersistence)}catch(ComponentExceptione)thrownewSysInitException("IUAPQueryBSnot}return}SuperVO和其它任何含有映射原数据的javaBean的实现机制,IUAPQueryBS具体提供的方法和功能请参考IUAPQueryBS的privateprivateIUAPQueryBSgetUAPQuery()throwsBu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长春中医药大学《高级英语2》2023-2024学年第一学期期末试卷
- 荆州理工职业学院《信息技术(T)项目管理》2023-2024学年第二学期期末试卷
- 山西省临汾市大宁县昕水镇东关小学2025年三年级数学第二学期期末教学质量检测试题含解析
- 上海科创职业技术学院《牙体形态学》2023-2024学年第一学期期末试卷
- 厦门东海职业技术学院《大学俄语语法(三)》2023-2024学年第二学期期末试卷
- 湖北省鄂东南五校一体联盟联考2025届高三第四次统测语文试题试卷含解析
- 南京视觉艺术职业学院《药物设计与新药发现-小分子药物》2023-2024学年第二学期期末试卷
- 江苏省盐城市联谊校2025届初三第二次联考物理试题试卷含解析
- 浙江中医药大学滨江学院《歌唱语音与歌剧排演1》2023-2024学年第一学期期末试卷
- 烟台市蓬莱市2025届四下数学期末达标检测模拟试题含解析
- 学校“五项管理”工作方案
- 2025年高中数学学业水平(合格考)知识点
- 大象版科学三年级下册全册练习题(含答案)
- 新《斜视弱视学》期末考试复习题库(含答案)
- 四川省会计师事务所服务收费标准
- 幼儿园中班科学活动《各种各样的鸟》课件
- 中国矿产资源集团招聘笔试题库2024
- 高速公路机电工程实施性施工组织设计计划作业指导书
- 部编版二年级下册语文课文必背内容(课文、古诗、日积月累)
- 深海采矿技术及环境影响
- 老年心理慰藉实务 课件 项目6-10 老年家庭心理慰藉-老年死亡心理慰藉
评论
0/150
提交评论