您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > JFrame业务逻辑层
文档来源:做了统一封装,并提供了常用的业务逻辑处理功能,同时向控制层提供业务逻辑处理。在程序员开发业务逻辑模块时,可分别继承BaseService接口和BaseServiceImpl实现,使业务服务类,既有强大的业务逻辑处理能力。业务逻辑层主要包含如下内容,如图7-1.POJOBaseDaojdbcTemplateBaseServiceSpring框架appliactioanContext-bean-xx.xmlBaseServiceImpl数据操作层业务逻辑层实现EntityService继承EntityServiceImpl继承实现BeanFactroy控制层BeanFactory.getBean(beanId)图7-1业务逻辑层架构1.2BaseService与BaseServiceImpl位于com.jframe.commons.service包中的BaseService接口与BaseServiceImpl是业务逻辑层的核心基础类,所有的业务逻辑接口与业务逻辑实现类必须分别继承这两个接口和类。在BaseSerice接口中定义了业务逻辑层常用的方法,而BeaseServiceImpl则实现了这些方法;通过这些预定义的方法,可以完成业务系统常用新增、修改、删除、查询等常用业文档来源:务逻辑,从而大大简化了程序员的开发工作量,甚至不用对业务逻辑层作任何扩展即可完成业务模块的开发。1.2.1BaseService接口及实现类定义正如前所述BaseService定义了常用的接口,而BaseServiceImpl实现了这些接口,并且采用泛型进行定义,如下:publicinterfaceBaseServiceTpublicclassBaseServiceImplTimplementsBaseServiceT。采用泛型定义,简化了业务逻辑层的编写及使用,在定义业务逻辑层接口及实现时必须传入POJO对其进行泛化。1.2.2BaseServiceImpl属性在BaseServiceImpl实现类中定义了2个属性分别是:protectedBaseDaoTdao;protectedJdbcTemplatejdbcTemplate;这两个属性在数据操作层applicationContext-db-xx.xml配置文件中由Spring注入;如下表:beanid=!--subSysName---baseServiceabstract=trueclass=com.jframe.commons.service.BaseServicepropertyname=daorefbean=!--subSysName---baseDao//propertypropertyname=jdbcTemplaterefbean=!--subSysName---jdbcTemplate//property/bean业务逻辑层通过这两个对象实现对数据库的各种操作。注意:1)在上述配置文件中baseService和baseDao、jdbcTemplate之前都有一个前缀:subSysName;表明,每个子系统都有自己的baseService、baseDao、jdbcTemplate对象,它们分别链接不同的数据库。1.2.3BaseService接口说明在BaseService接口中主要定义了如下接口:1方法publicTload(Serializableid)或文档来源:(Classclz,Serializableid)功能按主键装载数据库中对象参数Classclz:指定的对象类型Serializableid:clz对象的主键值,即对应数据库中的pk字段值,如果clz没有定义pk,使用该方法将抛出异常。如果没有指定clz,则装载的为泛型所指的类型(T.getClass())。Id是值可序列化的id,类型必须与clz中对应主键的类型保持一致,如果您不知道id的数据类型,可以调用ExtendClass.typeTran()方法将id值转换为指定类型。另外JFrame建议:将所有的clz对象的主键id设置为int型,这样可以简化操作,提供系统性能。返回值T返回装载的对象例子publicstaticvoidmain(Stringargs[]){TableServicetableService=(TableService)BeanFactory.getBean4App(tableService);Tabletable=tableService.load(1);System.out.println(ExtendJson.obj2Json(table));}系统将输出:关键字值为1的Table对象json字符串。2方法publicTload(Serializableid,StringuniKeyField);或publicTload(Classclz,Serializableid,StringuniKeyField);功能按唯一键字段装载数据库中的类对象。参数Classclz:指定的对象类型,如果没有该参数则装载泛型T所指代的对象Serializableid:clz对象的uniKeyField字段的对应值,即对应数据库中的uniKeyField字段的值,如果在数据库中uniKeyField不是唯一值键,将返回多条记录中的第一条记录。Serializable的定义参考上一方法。StringuniKeyField,clz中的定义属性字段。返回值返回指定字段值为id的对象文档来源:(Stringargs[]){UserServiceuserService=(UserService)BeanFactory.getBean4App(userService);Useruser=userService.load(“gezc”,”userNo”);System.out.println(ExtendJson.obj2Json(user));}系统将输出账户userNo为gezc的用户信息。3方法publicvoidsave(Tobj)或publicvoidsave(ListTobjs)功能保存修改或新增对象。如果obj的主键值在数据库中已经存在则作修改,否则在数据库中作新增。通常对象obj关键字值为0,则表示新增,而新增对象关键字值为自动增长的最大值,否则为修改。参数Tobj:待保存对象ListTobjs待保存对象列表。传入该参数可以实现批量保存返回值void如果需要获取新增后的关键字,可在save()操作后调用对象主键值。例子publicStringsaveForm(Stringargs[]){Tabletable=(Table)ExtendJson.json2Obj(args[0])BaseServiceservice=(BaseService)BeanFactory.getBean(“baseService”);service(table);returntable.getId()+“”;}上述方法将客户端返回的json对象转换为table对象,并保存,保存完后将id值返回。4方法publicvoidsave(ListTinsertRecords,ListTupdateRecords,ListTdelRecords)功能批量作新增、修改、删除操作文档来源:本方法常用于对列表操作的保存;在对列表作新增、修改、删除操作后,可调用本方法实现一次性对列表进行保存操作。参数ListTinsertRecords:拟新增列表ListTupdateRecords:拟修改列表ListTdelRecords:拟删除列表返回值Void5方法publicvoiddel(Tobj)或publicvoiddel(ListTobjs)功能删除对象参数Tobj拟删除的对象ListTobjs拟删除的对象列表返回值Void6方法publicvoiddel(intid)或publicvoiddel(Classclz,intid)功能参数主键“id”值为id的对象使用本方法需要注意的是Class类的主键必须是“id”,否则将抛出异常。本方法实现如下:Stringhql=deletefrom+clz.getSimpleName()+whereid=+id;this.delete(hql);参数intid:主键id的值Classclz:拟删除的对象,如果没有指定clz,则默认为泛型所指定的类返回值Void7方法publicvoiddel(Stringids)或publicvoiddel(Classclz,Stringids)文档来源:中的对象。使用本方法需要注意的是Class类的主键必须是“id”,否则将抛出异常。本方法实现如下:Stringhql=deletefrom+clz.getSimpleName()+whereidin(+id+“)”;this.delete(hql);参数Stringids:拟批量删除的id字符串,id之间必须用”,”分割,如:“1,2,3,4,5”。Classclz:拟删除的对象,如果没有指定clz,则默认为泛型所指定的类返回值Void8方法publicvoiddel(Serializableid,Stringfield)或publicvoiddel(Classclz,Serializableid,Stringfield)功能删除字段field值为id的记录。参数Serializableid:拟删除对象clz类field字段的值Stringfield:删除操作所对应的属性Classclz:拟删除的类,如果没有指定则指泛型所指定的类返回值Void9方法Publicvoiddelete(Stringhql)功能执行hibernate语句实现删除操作参数Stringhql:hibernate删除语句,如:deleteTablewhereid=1;返回值Void10方法ListTfind(Stringhql);或ListTfind(Stringhql,Objectobj);或ListTfind(Stringhql,Object[]objs);文档来源:查询语句返回结果列表。本语句常用于业务逻辑类中的查询扩展,如果本类中提高的方法不能满足您的业务要求可自行编写查询语句并调用本方法执行查询。参数Stringhql:hibernate查询语句或查询语句模板Objectobj:如果查询语句模板中只有一个参数,则用本方法Object[]objs:如果查询语句模板中有多个参数则用本方法返回值ListT查询语句结果返回例子Stringhql=”fromTable”;ListTablels=this.find(hql);或Stringhql=”fromTablewheresysFunId=?”;ListTablels=this.find(hql,1);或Stringhql=”fromTablewheresysFunId=?Andactive=?”;ListTablels=this.find(hql,newobject[]{1,1});11方法ListTfindAll();或ListTfindAll(StringclzName);或ListTfindAll(Classclz);功能获取所有的对象,也即获取数据库中所有的记录本组方法只适合于数
本文标题:JFrame业务逻辑层
链接地址:https://www.777doc.com/doc-1634434 .html