bbossgroups

作者:ca88

bbossgroups-3.1 发表,新添组件异步调用成效,对mvc框架作用做了更为的精耕细作,丰盛了数码绑定机制,标签库修复了jquery ajax提交和装载页面中文乱码难题,整个框架相比较早先的版特质量更加好,特别简便易行易用。为了更加好地帮手开荒人员的采取,提供了以下能源:bbossgroups源码工程mvc框架的demo war宽轻易mvc eclipse开拓工程,开箱即用bbossgroups 培养练习pptbbossgroups 满含以下子工程:1.bboss-aop, an aop framework.(ioc ,rpc[jms,mina,jgroups,cxf webservice,rmi,netty,rest,组播,多播], bean component,cxf webservice component framworkset,jms components frameworkset,plugin security components and so on卡塔尔国. 帮衬组件方法异步调用。2.bboss-persistent, a persistent framework(卡塔尔国.a.灵活的事务管理b.灵活的拜见数据库的接口c.一套非凡的数据库操作标签库d.优良的大好些个据库连接池配置处理和动用办法3.bboss-taglib, a web layer taglib framework(list tag,pageine list tag,detail tag ,logic tag,tree tag,tabpane tag,dbutil tag卡塔尔(قطر‎.4.bboss-event, an event framework(local event,remote distribute event framework base aop rpc frameworkState of Qatar.5.bboss-util, an utility framework.6.antbuildall, ant build project that build up projects.能够运转antbuildall下的run.bat命令编写翻译全部的子项目,而且更新相应工程的重视jars。7.apache-ant-1.7.1 全数工程塑造倚重的ant境况,bbossgroups的营造无需注重外界ant情状,每一种子工程下都有照料的执行ant的bat命令文件,间接运营这么些bat就足以营造相应的 工程,构建的对象文件寄放在相应工程的distrib目录上边。 bbossaoprun.bat bbosseventrun.bat bboss-mvcbuild.bat bboss-persistentrun.bat bboss-taglibrun.bat bboss-utilrun.bat8.bboss-mvc,bboss mvc 框架附归于开源项目bbossgroups,是依赖bboss aop框架开采的轻量级mvc框架,提供以下功用:单方法action,多方法action,表明action 扶植restful 提供数据绑定作用提供国际化成效提供自定义宗旨功效提供一套分界面呈现标签提供数据自动校验功用, bboss-mvc提供多文本上传功用的协理,分页调整器的援救。能够丰硕有益地和jquery,exjs等风靡的技艺框架使用。9.文书档案目录富含mvc框架开垦文书档案、framework 开辟文书档案和bboss aop框架的技巧运用文书档案、ppt培养练习文书档案等等bboss group project blog:_bp group project sourceforge site url: version : bbossgroups-3.1release date: 2011/05/02-----------------------------------------------------------------------------------------------****release futures: 3.1 版本新添组件异步调用功用,对mvc框架功效做了更为的精雕细琢,丰裕了数码绑定类型,标签库修复了jquery ajax提交和装载页面普通话乱码难点,整个框架相比较从前的版性子能更加好,特别简明易用。为了更加好地扶植开辟职员的选择,提供了以下能源:mvc框架的demo war包轻巧mvc eclipse开辟工程,开箱即用------二零一一-04-30------------o mvc框架绑定参数注明内定日期调换格式,以便保险按原本数据格式将参数转换为精确的日子o mvc框架能够将日期类型(java.util.Date/java.sql.Date/java.sql.Timestamp卡塔尔调换为long类型数据,也足以将long数据转换为日期类型(java.util.Date/java.sql.Date/java.sql.TimestampState of Qatar,也得以拓宽long数组和日期类型(java.util.Date/java.sql.Date/java.sql.Timestamp卡塔尔国数组的人机联作调换o 修复mvc框架调控器组件剖析极度:java.lang.IllegalArgumentException: Class must not be nullat org.frameworkset.util.Assert.notNull(Assert.java:112卡塔尔(قطر‎at org.frameworkset.util.annotations.AnnotationUtils.findAnnotation(AnnotationUtils.java:129卡塔尔(قطر‎at org.frameworkset.web.servlet.handler.HandlerUtils.determineUrlsForHandler(HandlerUtils.java:一九六三State of Qatar------二零一一-04-25------------o 长久层框架中期维修复获取数字类型的值时,一旦rs中回到null时,未有正确获取数字缺省值的题目ValueExchange.convert方法o 标签库中期维改过字符串过滤器,解决jquery也许ajax数据乞求时,分页查询的汉语乱码难点,校勘字符串过滤器的性质------2013-04-24------------o 改过webservice服务装载功效,能够从mvc和具备的applicationcontext中配置和装载webservice服务:Mvc框架的ws服务无需特别管理平常的applicationcontext容器中的ws服务对应的模块配置文件须求安顿在org/frameworkset/spi/ws/webserivce-modules.xml文件中------二零一二-04-21------------o 扩充组件异步调用机制,使用方法参照他事他说加以侦查测量检验用例:/bbossaop/test/org/frameworkset/spi/asyn/AsynbeanTest.java能够透过Async注明标明组件中必要异步奉行的艺术就可以,能够钦定超时时间,是不是要求重返结果,是或不是要求回调管理回来结果------二零一二-04-20------------o 圆满Pro对象对ProList,ProSet,ProMap,ProArray的拍卖体制o ApplicationContext组件新添一组获得ProArray对象的接口public ProArray getArrayProperty(String name卡塔尔国 ;public ProArray getProArrayProperty(String name, ProArray defaultValueState of Qatar ;o 新增添convert标签,支持词典数据值向名称的转变此中的datas为三个map属性映射值,name对应于key,convert标签通过name获取到对应的习性值然后显获得页面上,假如对应的值未有那么输出defaultValue对应的值,如果未有设置defaultValue那么直接出口name。pg:convert convertData="datas" colName="name" defaultValue=""/pager-taglib.tldframeworkset.jar------2011-04-18------------o 化解获取空的ProList时形成aop框架运行战败的主题材料o 完备专门的工作败露检查实验机制,在manager-provider.xml中追加检查测量试验页面地址类型配置:!-- 数据库事务败露检验url类型范围布局 --property name="transaction.leakcheck.files" array componentType="String"property value=".jsp"/property value=".do"/property value=".page"/property value=".action"/property value=".ajax"//array/property------二〇一一-04-16------------o 康健带重回值的事务管理模板组件协助泛型类型的回来public void stringarraytoList(final ListListBean beans卡塔尔 throws Throwable {ListListBean ret = TemplateDBUtil.executeTemplate(new JDBCValueTemplateListListBean(卡塔尔{public ListListBean execute(卡塔尔(قطر‎ throws Exception {String sql = "INSERT INTO LISTBEAN (" "ID," "FIELDNAME,"

透过一段时间恐慌的开辟职业,bbossgroups-3.2 宣布了,扶植对象xml连串化效率。比较3.1,这些版本做了非常大的校订和功效扩大,优化aop/ioc体系布局,并且依照ioc本事开荒出了独到的指标体系化本领;mvc、长久层、标签库、职责调节都做了相当大的修改;开垦文书档案和培育ppt尤其完备,在iteye开垦了bbossgroups专栏:,能够在第不时间将框架的新型动态展现给我们。总体来说,3.2是自bbossgroups第叁个本子公布以来,功效最完美、最平稳的三个本子,完全能够拾贰分好地支撑起j2ee项目种种方面包车型客车付出职业。bbossgroups project contain follow subprojects:1.bboss-aop, an aop framework.(ioc ,rpc[jms,mina,jgroups,cxf webservice,rmi,netty,rest,组播,多播], bean component,cxf webservice component framworkset,jms components frameworkset,plugin security components and so onState of Qatar.2.bboss-persistent, a persistent framework(卡塔尔国.a.灵活的事务管理b.灵活的拜访数据库的接口c.一套杰出的数据库操作标签库d.优良的绝大超级多据库连接池配置管理和接受格局3.bboss-taglib, a web layer taglib framework(list tag,pageine list tag,detail tag ,logic tag,tree tag,tabpane tag,dbutil tag卡塔尔国.4.bboss-event, an event framework(local event,remote distribute event framework base aop rpc framework卡塔尔.5.bboss-util, an utility framework.6.bboss-soa:3.2版本新扩展模块,达成指标-xml系列化与反体系化功用7.antbuildall, ant build project that build up projects.能够运作antbuildall下的run.bat命令编写翻译全体的子项目,而且更新相应工程的信任jars。8.apache-ant-1.7.1 全数工程营造注重的ant遭逢,bbossgroups的创设不必要依据外部ant蒙受,每种子工程下都有相应的实行ant的bat命令文件,直接运维那些bat就可以营造相应的 工程,营造的靶子文件寄放在对应工程的distrib目录上面。 bbossaoprun.bat bbosseventrun.bat bboss-mvcbuild.bat bboss-persistentrun.bat bboss-taglibrun.bat bboss-utilrun.bat9.bboss-mvc,bboss mvc 框架从归属开源项目bbossgroups,是依据bboss aop框架开拓的轻量级mvc框架,提供以下成效:单方法action,多方法action,表明action 匡助restful 提供数据绑定效率提供国际化作用提供自定义大旨功效提供一套分界面显得标签提供数据自动校验功用, bboss-mvc提供多文本上传功用的支持,分页调整器的扶助。能够丰盛方便地和jquery,exjs等风靡的才能框架使用。10.文档目录满含mvc框架开辟文书档案、framework 开荒文书档案和bboss aop框架的技巧应用文书档案、ppt培养练习文书档案等等11.bbossgroups-min-eclipse.zip 框架最小信赖eclipse工程demomvc:包蕴mvc,taglib,aop/ioc最小注重eclipse工程和测量试验用例persistent:包括persistent框架最小信赖eclipse工程和测量检验用例xmlserializable:包罗对象xml体系化技术最小依赖eclipse工程和测验用例 bboss group project blog: group project sourceforge site url: version : bbossgroups-3.2release date: 二〇一二/06/12-----------------------------------------------------------------------------------------------****release futures: ************************************************bbossgroups-3.2******************************------二零一三-06-10------------o 纠正SQLExecutor中泛型字段查询API中的类型转换漏洞------二〇一一-06-09------------o 管理空字符串向日期类型转变后台报那七个的老毛病------二零一三-06-09------------o 注脚调整器能够毫不增添注脚@Controller也能够被框架识别了------二零一一-06-8------------o 修改不健康的提醒消息,externaljndiNameo 修复只布署外界数据源的情况下,pool运转旅社溢出问题java.lang.StackOverflowErrorat java.lang.Thread.currentThread(Native Method卡塔尔at org.apache.xerces.util.SecuritySupport12$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native MethodState of Qatarat org.apache.xerces.util.SecuritySupport12.getContextClassLoader(Unknown Source卡塔尔at org.apache.xerces.util.ObjectFactory.findClassLoader(Unknown Source卡塔尔国at org.apache.xerces.impl.dv.DTDDVFactory.getInstance(Unknown Source卡塔尔(قطر‎at org.apache.xerces.impl.dv.DTDDVFactory.getInstance(Unknown Source卡塔尔(قطر‎at 校勘程序项目清单:com.frameworkset.common.poolman.sql.PoolMancom.frameworkset.common.poolman.util.JDBCPoolcom.frameworkset.common.poolman.util.SQLManagercom.frameworkset.common.poolman.util.SQLUtil public static JDBCPool getJDBCPoolByJNDIName(String jndiname卡塔尔 { JDBCPool pool = SQLUtil.getSQLManager(State of Qatar.getPoolByJNDIName(jndiname,true卡塔尔; return pool; } public static JDBCPool getJDBCPoolByJNDIName(String jndiname,boolean needcheckStart卡塔尔 { JDBCPool pool = SQLUtil.getSQLManager(卡塔尔.getPoolByJNDIName(jndiname,needcheckStart卡塔尔国; return pool; }------二〇一三-06-06------------o 康健responsebody声明效用,扩张datatype和charset五个属性datatype:json,xml等值,用来建议输出数据的content类型charset:用来提出reponse响应字符编码详细使用情势请参见测量检验用例org.frameworkset.web.enumtest.EnumConvertControllerorg.frameworkset.web. 逻辑标签能够独自于list和beaninfo标签使用,扩大以下属性:attributenamerequestKey/namertexprvaluetrue/rtexprvalue/attributeattributenamesessionKey/namertexprvaluetrue/rtexprvalue/attributeattributenamepageContextKey/namertexprvaluetrue/rtexprvalue/attributeattributenameparameter/namertexprvaluetrue/rtexprvalue/attributeattributenameactual/namertexprvaluetrue/rtexprvalue/attribute通过以上属性,能够一本万利地制订逻辑标签的盼望值,requestKey:钦命从request的attribute属性中获取实际值,sessionKey:内定从session的attribute属性中收获实际值,pageContextKey:钦点从pageContext的attribute属性中拿走实际值,parameter:钦点从request的parameter中得到实际值actual:直接内定实际值,能够是现实的值,也得以是四个el变量上述特性还足以和property属性结合起来获取值对象中的属性值------2012-06-04------------o request和session标签扩张日期dateformat格式属性------二零一一-06-03------------o 修复config标签enablecontextmenu属性不可能健康办事的漏洞------2013-06-2------------o 修复应用Column评释设置对象属性与列名映射时,诱致sql语句中绑定相应的个性变量值失败的尾巴------二〇一三-05-28-----------o 修复quartz引擎加载带参数方法职责时,后台抛空指针分外,这是3.1版本爆发的新主题材料,影响新 版本的应用o 完善职分调解管理组件org.frameworkset.task.TaskService完善stopService方法和startService方法,消弭结束引擎后,不可能运转蒸汽轮机的主题素材,扩张方法stopService(boolean force卡塔尔国扩张方法,一边在实践public void deleteJob(String jobname, String groupid卡塔尔国方法后再也加载作业public void startExecuteJob(String groupid, String jobname卡塔尔------二〇一一-05-28------------o 援助MapKey,PO类型参数绑定机制,通过这种机制得以拾贰分便利地将表单提交过来的叁个对象集结数据依据key对应的字段值,形成Map索引对象。使用方法如下:public String mapbean(@MapKey("田野同志Name"卡塔尔国 MapString,ListBean beans, ModelMap modelState of Qatar {String sql = "INSERT INTO LISTBEAN (" "ID," "FIELDNAME," "FIELDLABLE," "FIELDTYPE," "SORTO奥迪Q5DELX570," " ISPENVISIONIMAEvoqueYKEY," "REQUIRED," "FIELDLENGTH," "ISVALIDATED" "卡塔尔(قطر‎" "VALUES" "(#[id],#[fieldName],#[fieldLable],#[fieldType],#[sortorder]" ",#[isprimaryKey],#[required],#[fieldLength],#[isvalidated])";TransactionManager tm = new TransactionManager();try {if(beans != nullState of Qatar{List temp = convertMaptoList( beans卡塔尔;tm.begin(State of Qatar;SQLExecutor.delete("delete from LISTBEAN"卡塔尔国;SQLExecutor.insertBeans(sql, tempState of Qatar;tm.commit(卡塔尔;model.addAttribute("datas", temp卡塔尔(قطر‎;}} catch (Exception e卡塔尔 {try {tm.rollback(卡塔尔;} catch (RollbackException e1State of Qatar {// TODO Auto-generated catch blocke1.printStackTrace(State of Qatar;}// TODO Auto-generated catch blocke.printStackTrace(State of Qatar;}return "path:mapbean";}实际情况请参照他事他说加以侦察测量检验用例:/bboss-mvc/WebRoot/WEB-INF/bboss-mapbean.xml------二〇一三-05-26------------o 新扩展empty和notempty五个逻辑标签使用方法和null、notnull同样empty剖断钦点的字段的值是或不是是null,或然空串,假若条件创立,则施行标签体中的逻辑notempty剖断钦赐的字段的值既不是null亦非单手,则实践标签体得内容------二零一三-05-24------------o 矫正null和notnull标签不能够科学专门的职业的难点o 修复detail标签的提醒消息不是很科学的主题素材###################################################################################------2012-05-20------------o 修复援引容器datasource漏洞o 修复通过沙盘模拟经营运行数据源参数设置难题o 修复一多元空指针难点o 修复应用外界数据源时,当外界数据源是oracle时无可奈何取得数据源的元数据难题,必得制定相应数据库的驱动程序,不然不可能起首化精确的dbadapter------二零一一-05-20-----------o 扩充rmi服务发表和rmi客性格很顽强在劳累辛勤或巨大压力面前不屈端组件获取作用发表服务措施,通过 rmi:address内定公布服务的无出其右地址:property name="rmi_service_test" rmi:address="rmi_service_test" /服务器port的钦命在rmi议和配置文件中:/bbossaop/resources/org/frameworkset/spi/manager-rpc-rmi.xml!-- 服务器绑定端口 --property name="connection.bind.port" value="1099" /rmi客服端组件配置和拿到:配置property name="rmi_service_client_test" factory- factory-method="lookupService"constructionproperty name="servicaddress" value="//172.16.25.108:1099/rmi_service_test"//construction/property获取:BaseApplicationContext context ;@Beforepublic void init(){context = ApplicationContext.getApplicationContext("org/frameworkset/spi/remote/rmi/rmi-client.xml");}@Test public void test() throws RemoteException{RMIServiceTestInf test = (RMIServiceTestInf)context.getBeanObject("rmi_service_client_test"卡塔尔;System.out.println(test.sayHello("多多"卡塔尔国State of Qatar;}------2011-05-17------------o 修复sqlexecutor对日期类型timestamp管理错失时分秒的欠缺------2013-05-15-----------o 校正国际化学工业机械制,每一个组件容器相关的国际化文件必需和组件容器的根配置文件在同级目录,并且名称以下格式命名:messages_en_US.propertiesmessages_zh_CN.propertieso 改善sql配置文件刷新机制,将3.1版本中各个sql配置文件定义多个照料进程改为单纯守护进度检测机制,即具备的sql文件是或不是变动的检查测试由二个医生和医护人员进程实现,这些历程中维护四个文本队列,刷新事件配置也由manager-provider.xml文件改为:/bbossaop/src/aop.properties中构造:sqlfile.refresh_interval=5000何况将sql配置文件的田间管理容器改为SOAFileApplicationContext,以便进步系统性能------2013-05-11-----------o 改进ApplicationContext,WebApplicationContext容器,分离出SOAApplicationContext、BaseApplicationContext和DefaultApplicationContext八个品类的容器,他们的任务分别为:ApplicationContext:和原本的效果与利益ApplicationContext的效果与利益相像,包涵基本的aop/ioc效率,远程服务,全局属性管理,拦截器,包涵注明式事务管理,是BaseApplicationContext的子类SOAApplicationContext/SOAFileApplicationContext:八个轻量级的ioc容器,满含全局属性管理,不满含远程服务,拦截器,不包涵表明式事务管理,是DefaultApplicationContext的子类DefaultApplicationContext:和ApplicationContext的不一样便是不含有远程服务的成效,和长途服务相关的构件未有依靠关系,是BaseApplicationContext的子类BaseApplicationContext:是贰个架空容器,全部的上层容器都直接或直接促成了这一个容器,提供公共的幼功作用。WebApplicationContext:是mvc框架的调节器和业务组件管理容器,是DefaultApplicationContext的子类,具备DefaultApplicationContext的保有机能。------二零一三-05-11------------o 完善restful实现机制,可以扶持对调整器方法等第的restful全地址映射关系并修复了有些劣点,3.0本子供给依赖类等级和艺术品级地址组合能力兑现 restful风格的意义,何况存在欠缺。o aop框架中完成目的与xml相互转化成效------贰零壹叁-05-06------------o 修复循环信任体制漏洞o 修复quartz职分调整以致模块中未有安排任何职责时,后台抛出类型转变分外o 修复3.0本子中从不将构件实例机制定义为单例形式的尾巴,不过ppt培养练习课程中却分明提出该版本中的组件默以为单例格局上述3个漏洞修复的次第为:/bbossaop/src/org/frameworkset/spi/assemble/BeanAccembleHelper.java/bbossaop/src/org/frameworkset/spi/assemble/Pro.java/bbossaop/src/org/frameworkset/spi/assemble/ProviderParser.java------二零一二-05-06------------o 修复分页标签不经常找不到vm模板文件的尾巴上述漏洞修复的顺序为:/bboss-util/src/com/frameworkset/util/VelocityUtil.java------二零一三-05-03------------o 修复在职业情况下通过JDBCPool的不二等秘书籍public TableMetaData getTableMetaDataFromDatabase(Connection con,String tableNameState of Qatar获取不到一定数据源的表元数据的主题素材------二〇一一-05-03------------o 修复preDBUtil.preparedSelect(params, dbName, sql, offset, long卡塔尔(قطر‎在询问不多的景色下,preDBUtil.getMeta(State of Qatar重返的是null;release version : bbossgroups-3.1release date: 二零一三/05/02-----------------------------------------------------------------------------------------------****release futures: ------二零一一-04-30------------o mvc框架绑定参数申明钦定日期转变格式,以便保险按原有数据格式将参数调换为不易的日期o mvc框架能够将日期类型(java.util.Date/java.sql.Date/java.sql.提姆estamp卡塔尔(قطر‎调换为long类型数据,也得以将long数据转变为日期类型(java.util.Date/java.sql.Date/java.sql.TimestampState of Qatar,也足以扩充long数组和日期类型(java.util.Date/java.sql.Date/java.sql.TimestampState of Qatar数组的相互影响调换o 修复mvc框架调节器组件分析非常:java.lang.IllegalArgumentException: Class must not be nullat org.frameworkset.util.Assert.notNull(Assert.java:112State of Qatarat org.frameworkset.util.annotations.AnnotationUtils.findAnnotation(AnnotationUtils.java:129State of Qatarat org.frameworkset.web.servlet.handler.HandlerUtils.determineUrlsForHandler(HandlerUtils.java:1961卡塔尔国------二〇一三-04-25------------o 持久层框架中期维修复获取数字类型的值时,一旦rs中回到null时,未有科学获取数字缺省值的难题ValueExchange.convert方法o 标签库中期维纠正字符串过滤器,解决jquery也许ajax数据诉求时,分页查询的中文乱码难点,改过字符串过滤器的习性------二零一三-04-24------------o 改过webservice服务装载成效,能够从mvc和持有的applicationcontext中配备和装载webservice服务:Mvc框架的ws服务无需特别处理平时的applicationcontext容器中的ws服务对应的模块配置文件要求配置在org/frameworkset/spi/ws/webserivce-modules.xml文件中------二〇一一-04-21------------o 扩充组件异步调用机制,使用方式参谋测验用例:/bbossaop/test/org/frameworkset/spi/asyn/AsynbeanTest.java能够由此Async评释标明组件中须要异步执行的办法就能够,能够钦命超时时间,是或不是需求回到结果,是还是不是必要回调解和管理理回来结果------二〇一二-04-20------------o 一揽子Pro对象对ProList,ProSet,ProMap,ProArray的管理机制o ApplicationContext组件新扩展一组取得ProArray对象的接口public ProArray getArrayProperty(String name卡塔尔国 ;public ProArray getProArrayProperty(String name, ProArray defaultValue卡塔尔 ;o 新添convert标签,匡助词典数据值向名称的转变此中的datas为三个map属性映射值,name对应于key,convert标签通过name获取到相应的天性值然后呈现到页面上,假如对应的值未有那么输出defaultValue对应的值,若无安装defaultValue那么直接出口name。pg:convert convertData="datas" colName="name" defaultValue=""/pager-taglib.tldframeworkset.jar------二〇一三-04-18------------o 搞定获取空的ProList时产生aop框架运维失利的难点o 完备业务败露检查评定机制,在manager-provider.xml中扩充检测页面地址类型配置:!-- 数据库事务败露检验url类型范围构造 --property name="transaction.leakcheck.files" array componentType="String"property value=".jsp"/property value=".do"/property value=".page"/property value=".action"/property value=".ajax"//array/property------二〇一二-04-16------------o 完备带重返值的事务管理模板组件帮衬泛型类型的回来public void stringarraytoList(final ListListBean beans卡塔尔(قطر‎ throws Throwable {ListListBean ret = TemplateDBUtil.executeTemplate(new JDBCValueTemplateListListBean(卡塔尔{public ListListBean execute(卡塔尔国 throws Exception {String sql = "INSERT INTO LISTBEAN (" "ID," "FIELDNAME,"

连接池jar:c3p0

 

  • "FIELDLABLE," "FIELDTYPE," "SORTORDER," " ISPRIMARYKEY," "REQUIRED," "FIELDLENGTH," "ISVALIDATED" ")" "VALUES" "(#[id],#[fieldName],#[fieldLable],#[fieldType],#[sortorder]" ",#[isprimaryKey],#[required],#[fieldLength],#[isvalidated]卡塔尔国";SQLExecutor.delete("delete from LISTBEAN"卡塔尔国;SQLExecutor.insertBeans(sql, beans卡塔尔(قطر‎;return beans;}}卡塔尔国;}o 解决主页面通过ajax情势加载多个分页页面时,跳转职能或一定要奇怪使用的难点,甚至提醒音信中文乱码难点------2012-04-14------------o mvc中传递给分页标签的领航行路线线更改为带上下文的绝对地址,以防在采纳jquery格局局地分页时,主页面包车型大巴相对地址和分页对应的页面的相对路线不一样等时,不能科学地张开分页导航------2011-04-13------------o 调整器方法中追加Map类型参数绑定机制,能够将request中的参数调换为Map对象,当参数是数组时存入数组值,不然存入单个值------2011-04-11------------o 完善ConfigSQLExecutor和SQLExecutor组件中颇有和bean对象相关的接口,Object bean参数可以是平日的的值对象,也能够是二个SQLParams对象,也能够是叁个Map对象使用办法参照他事他说加以考察测量检验用例:/bboss-persistent/test/com/frameworkset/sqlexecutor/ConfigSQLExecutorTest.java------二〇一三-04-11------------o 新扩展array成分,通过该因素得以兑现各类别型数组数据的流入作用------二零一三-04-07------------o 更改DaemonThread进度,支持从外表钦定刷新文件能源的时刻间距。o 完善ApplicationContext组件的生命周期管理机制o ApplicationContext组件扩充得到long值属性的api------2013-04-11------------o 新扩展array成分,通过该因素得以完毕各类类型数组数据的流入功效------二〇一一-04-07------------o 增添依据变量名称从配置文件中得到sql语句的来操作数据库组件,对应sql配置文件提供定期刷新机制 假使检查评定到sql文件被退换,就从新加载文件com.frameworkset.common.poolman.ConfigSQLExecutor具体的行使方式为:ConfigSQLExecutor executor = new ConfigSQLExecutor("com/frameworkset/sqlexecutor/sqlfile.xml"卡塔尔国;Map dbBeans = executor.queryObject(HashMap.class, "sqltest"卡塔尔(قطر‎;String result = executor.queryFieldBean("sqltemplate", bean卡塔尔国;配置文件:?xml version="1.0" encoding='gb2312'?propertiesdescription![CDATA[sql配置文件能够由此名称属性name配置暗许sql,特定数据库的sql通过在称呼后边加数据库类型后缀来区分,比如:sqltestsqltest-oraclesqltest-derbysqltest-mysql等等,本配置实例就演示了现实布署方式 ]]/descriptionproperty name="sqltest"![CDATA[select * from LISTBEAN]]/propertyproperty name="sqltest-oracle"![CDATA[select * from LISTBEAN]]/propertyproperty name="sqltemplate"![CDATA[select FIELDNAME from LISTBEAN where FIELDNAME=#[fieldName]]]/propertyproperty name="sqltemplate-oracle"![CDATA[select FIELDNAME from LISTBEAN where FIELDNAME=#[fieldName] ]]/propertyproperty name="dynamicsqltemplate"![CDATA[select * from CIM_ETL_REPOSITORY where 1=1 #if($HOST_ID !$HOST_ID.equals("")) and HOST_ID = #[HOST_ID] #end and PLUGIN_ID = #[PLUGIN_ID] and CATEGORY_ID = #[CATEGORY_ID] and APP = #[APP]]]/property/properties刷新机制的配置形式:在manager-provider.xml文件中增加以下配置项就可以:property name="sqlfile.refresh_interval" value="10000"/当value大于0时就翻开sqlfile文件的换代检查评定机制,每间隔value钦定的年月间隔就检查实验三回,有更新就再一次加载,不然不另行加载o 完备ApplicationContext组件的生命周期管理机制o ApplicationContext组件扩充得到long值属性的apio 康健mvc框架配置文件导入格局得以用,号分隔导入子目录下的配备文件,例如:servletservlet-namemvcdispather/servlet-nameservlet-classorg.frameworkset.web.servlet.DispatchServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-value/WEB-INF/bboss-*.xml,/WEB-INF/conf/bboss-*.xml/param-value/init-param。。。。。。/servlet------二〇一一-04-05------------o 调整器方法扩展枚举类型,枚举数组类型参数的绑定成效------2012-04-06------------o 扩大一组查询单个字段的泛型接口,使用办法如下:String sql = "select REQUIRED from LISTBEAN ";int id= SQLExecutor.queryTField(int.class, sql卡塔尔国;long id= SQLExecutor.queryTField(long.class, "select seq_name.nextval from LISTBEAN "卡塔尔国;String sql = "select FIELDLABLE from LISTBEAN ";String id= SQLExecutor.queryT菲尔德(String.class, sql卡塔尔;System.out.println(idState of Qatar;o 3.0api增添重临ListHashMap结果集的询问接口支持,使用格局如下:@Testpublic void queryListMap(State of Qatar throws SQLException{String sql = "select * from LISTBEAN name=?";ListHashMap dbBeans = SQLExecutor.queryListWithDBName(HashMap.class, "mysql", sql,"ttt");System.out.println(dbBeans);}public void queryListMapWithbeanCondition() throws SQLException{String sql = "select * from LISTBEAN name=#[name]";ListBean beanobject = new ListBean();beanobject.setName("duoduo");ListHashMap dbBeans = SQLExecutor.queryListWithDBName(HashMap.class, "mysql", sql,beanobject);System.out.println(dbBeans);}@Testpublic void queryMap() throws SQLException{String sql = "select * from LISTBEAN ";Map dbBeans = SQLExecutor.queryObject(HashMap.class, sql卡塔尔国;System.out.println(dbBeans卡塔尔(قطر‎;}------2012-03-31------------o 跳转路径能够经过path:成分直接内定,而无需注入具体采纳方法,仿照效法demoWebRoot/WEB-INF/bboss-path.xml------二〇一二-03-30------------o 3.0api中完美对java.util.Date类型对象属性数据的拍卖o 修复mvc达成分页功效时,通过handleMapping注明钦赐的url路线不可能进展分页的bug,改过的前后相继如下:o ioc中质量注入时,假诺属性未有定义set方法,会抛出拾壹分,引致类注入开始化战败,矫正为唤起并非败退情势------二零一三-03-20------------o 修改右键菜单功效,提高右键菜单品质,涉及的效能有:使用右键菜单的树标签和接收右键菜单的列表、分页标签,以至具备其余有关的页面 o 修复jms不可能发送长度为0的jms新闻bug/bbossaop/src-jms/org/frameworkset/mq/RequestDispatcher.java------二〇一一-03-10------------ o 将零部件管理情势暗许为设置为单例格局------2013-03-09------------ o 扩张list,map,set成分类型定义,增多componentType属性,用来标记容器中贮存的靶子类型,componentType的取值范围如下:bean:标记容器元素对象类型是组件对象类型String:标志容器成分对象类型是String对象该属性能够用来便于将零部件类型的list和字符串类型的list注入到其余零器件中。相应地在ProList、ProMap、ProSet对象上平添了以下措施:ProList: public List getComponentList(卡塔尔(قطر‎ProMap:public Map getComponentMap(卡塔尔ProSet:public Set getComponentSet(State of Qatar使用案比方下:property name="/index.htm,/detail.htm" f:demo_sites="attr:demo_sites" singlable="true"/ property name="demo_sites"list componentType="bean"property f:name="listbean" f:cnname="集结po对象绑定实例" property name="controllerClass" value="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/test/org/frameworkset/spi/mvc/ListBeanBindController.java"/property name="configFile" value="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/WebRoot/WEB-INF/bboss-listbean.xml"/property name="visturl"list componentType="String"property value="/databind/showstringarraytoList.htm"/property value="/databind/showlist.htm"//list/propertyproperty name="formlist"list componentType="bean"property f:formPath="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/WebRoot/jsp/databind/table.jsp" f:charset="UTF-8"property name="description"![CDATA[表单table.jsp, 对应于/databind/showlist.htm跳转页面 ]]/property/propertyproperty f:formPath="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/WebRoot/jsp/databind/stringarraytoList.jsp" property name="description"![CDATA[表单stringarraytoList.jsp, 对应于/databind/showstringarraytoList.htm跳转页面 ]]/property/propertyproperty f:formPath="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/WebRoot/jsp/databind/tableinfo.jsp" property name="description"![CDATA[表单/bboss-mvc/WebRoot/jsp/databind/tableinfo.jsp, 对应于/databind/showbean.htm跳转页面 ]]/property/property/list/propertyproperty name="description"![CDATA[会集po对象绑定实例 字符串数组转List数据绑定实例 ]]/property/property/list/property类如下:SiteDemoControllerpublic class SiteDemoController {private ListSiteDemoBean demo_sites;public String index(ModelMap model){model.addAttribute("demobeans", demo_sites);return "index";}public String detail(ModelMap model,@RequestParam(name="demoname") String demoname){SiteDemoBean bean = null;for(int i = 0; i demo_sites.size(); i ){SiteDemoBean bean_ = demo_sites.get(i);if(demoname.equals(bean_.getName())){bean = bean_;break;}}model.addAttribute("demobean", bean);return "seconddetail";}/** * @return the demo_sites */public ListSiteDemoBean getDemo_sites() {return demo_sites;}/** * @param demoSites the demo_sites to set */public void setDemo_sites(ListSiteDemoBean demoSites) {demo_sites = demoSites;}}------二〇一二-03-30------------o 3.0api中通盘对java.util.Date类型对象属性数据的管理------2013-03-06------------o 修复树标签复选框点击事件firefox包容性难点o 修复树标签暗中同意选中节点上边安装点击事件时Boolean值向String调换万分难点------2013-03-04------------o 扩展叁个遵照参数运转数据源的api,能够决定数据源是连接池数据源还是非连接池数据源DBUtil中追加以下静态方法:public static void startPool(String poolname,String driver,String jdbcurl,String username,String password, String readOnly, String txIsolationLevel, String validationQuery, String jndiName, int initialConnections, int minimumSize, int maximumSize, boolean usepool, boolean external, String externaljndiName 卡塔尔 o 数据源配置文件中增添usepool元素,能够调控数据源是连接池数据源仍旧非连接池数据源?xml version="1.0" encoding="gb2312"?poolmandatasourcedbnamebspf/dbnameloadmetadatafalse/loadmetadatajndiNamejdbc/mysql-ds/jndiNamedriveroracle.jdbc.driver.OracleDriver/driverusepoolfalse/usepoolurljdbc:oracle:thin:@//172.16.25.139:1521/dtjf/urlusernamedtjf/usernamepassworddtjf/passwordtxIsolationLevelREAD_COMMITTED/txIsolationLevel logAbandonedtrue/logAbandonedreadOnlyfalse/readOnlykeygeneratecomposite/keygenerateautoprimarykeyfalse/autoprimarykeyshowsqlfalse/showsql/datasource/poolman o 调节非连接池数据源的监察数据搜聚和相关属性展示接口------2012-03-02------------ o 改善odbc 驱动下利用o/r mapping查询,大字段管理极度难题o 扩张SQLExecutor组件扩充全部查询List结果集艺术对泛型的扶植o 修复double类型数据向int类型调换的标题,新增添单个值转换为数组的机能,扶持数字类型数组之间的竞相调换各子项目新增加功用和改变作用场目清单请仿照效法每种门类中的readme.txt文件。
  • "FIELDLABLE," "FIELDTYPE," "SORTORDER," " ISPRIMARYKEY," "REQUIRED," "FIELDLENGTH," "ISVALIDATED" ")" "VALUES" "(#[id],#[fieldName],#[fieldLable],#[fieldType],#[sortorder]" ",#[isprimaryKey],#[required],#[fieldLength],#[isvalidated]卡塔尔(قطر‎";SQLExecutor.delete("delete from LISTBEAN"State of Qatar;SQLExecutor.insertBeans(sql, beans卡塔尔;return beans;}}卡塔尔国;}o 消释主页面通过ajax形式加载三个分页页面时,跳转职能还是无法常常使用的标题,甚至提示音信中文乱码难题------2013-04-14------------o mvc中传送给分页标签的领航路径修改为带上下文的断然地址,防止在选用jquery方式局地分页时,主页面包车型客车对峙地址和分页对应的页面包车型客车相对路线不等同临时候,不可能科学地开展分页导航------二零一二-04-13------------o 调整器方法中追加Map类型参数绑定机制,能够将request中的参数调换为Map对象,当参数是数组时存入数组值,不然存入单个值------二零一二-04-11------------o 康健ConfigSQLExecutor和SQLExecutor组件中全数和bean对象相关的接口,Object bean参数能够是日常的的值对象,也足以是一个SQLParams对象,也能够是一个Map对象使用方法参照他事他说加以考察测验用例:/bboss-persistent/test/com/frameworkset/sqlexecutor/ConfigSQLExecutorTest.java------二〇一一-04-11------------o 新添array元素,通过该因素得以兑现各体系型数组数据的注入功用------贰零壹贰-04-07------------o 改良DaemonThread进度,扶植从表面钦命刷新文件能源的大运间距。o 康健ApplicationContext组件的生命周期管理机制o ApplicationContext组件扩充取得long值属性的api------二〇一一-04-11------------o 新扩张array成分,通过该因素得以兑现种种类型数组数据的注入功能------二〇一一-04-07------------o 扩张依照变量名称从构造文件中拿走sql语句的来操作数据库组件,对应sql配置文件提供定期刷新机制 假使检查评定到sql文件被改换,就从新加载文书com.frameworkset.common.poolman.ConfigSQLExecutor具体的运用方式为:ConfigSQLExecutor executor = new ConfigSQLExecutor("com/frameworkset/sqlexecutor/sqlfile.xml"State of Qatar;Map dbBeans = executor.queryObject(HashMap.class, "sqltest"卡塔尔国;String result = executor.queryFieldBean("sqltemplate", beanState of Qatar;配置文件:?xml version="1.0" encoding='gb2312'?propertiesdescription![CDATA[sql配置文件能够透过名称属性name配置暗中同意sql,特定数据库的sql通过在名称前边加数据库类型后缀来分别,例如:sqltestsqltest-oraclesqltest-derbysqltest-mysql等等,本配置实例就演示了现实安插格局 ]]/descriptionproperty name="sqltest"![CDATA[select * from LISTBEAN]]/propertyproperty name="sqltest-oracle"![CDATA[select * from LISTBEAN]]/propertyproperty name="sqltemplate"![CDATA[select FIELDNAME from LISTBEAN where FIELDNAME=#[fieldName]]]/propertyproperty name="sqltemplate-oracle"![CDATA[select FIELDNAME from LISTBEAN where FIELDNAME=#[fieldName] ]]/propertyproperty name="dynamicsqltemplate"![CDATA[select * from CIM_ETL_REPOSITORY where 1=1 #if($HOST_ID !$HOST_ID.equals("")) and HOST_ID = #[HOST_ID] #end and PLUGIN_ID = #[PLUGIN_ID] and CATEGORY_ID = #[CATEGORY_ID] and APP = #[APP]]]/property/properties刷新机制的安插情势:在manager-provider.xml文件中加上以下配置项就可以:property name="sqlfile.refresh_interval" value="10000"/当value大于0时就翻开sqlfile文件的立异检查实验机制,每间隔value内定的时日间距就检查实验贰回,有纠正就再也加载,不然不重复加载o 完备ApplicationContext组件的生命周期管理机制o ApplicationContext组件扩大获得long值属性的apio 康健mvc框架配置文件导入方式得以用,号分隔导入子目录下的陈设文件,举个例子:servletservlet-namemvcdispather/servlet-nameservlet-classorg.frameworkset.web.servlet.DispatchServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-value/WEB-INF/bboss-*.xml,/WEB-INF/conf/bboss-*.xml/param-value/init-param。。。。。。/servlet------贰零壹贰-04-05------------o 调控器方法增添枚举类型,枚举数组类型参数的绑定效率------2011-03-31------------o 跳转路线能够经过path:成分直接钦定,而无需注入具体使用方式,参谋demoWebRoot/WEB-INF/bboss-path.xml------二零一三-04-06------------o 扩充一组查询单个字段的泛型接口,使用办法如下:String sql = "select REQUIRED from LISTBEAN ";int id= SQLExecutor.queryTField(int.class, sql卡塔尔;long id= SQLExecutor.queryT菲尔德(long.class, "select seq_name.nextval from LISTBEAN "卡塔尔;String sql = "select FIELDLABLE from LISTBEAN ";String id= SQLExecutor.queryTField(String.class, sql卡塔尔;System.out.println(id卡塔尔(قطر‎;o 3.0api扩大再次回到ListHashMap结果集的查询接口扶助,使用方法如下:@Testpublic void queryListMap(卡塔尔(قطر‎ throws SQLException{String sql = "select * from LISTBEAN name=?";ListHashMap dbBeans = SQLExecutor.queryListWithDBName(HashMap.class, "mysql", sql,"ttt");System.out.println(dbBeans);}public void queryListMapWithbeanCondition() throws SQLException{String sql = "select * from LISTBEAN name=#[name]";ListBean beanobject = new ListBean();beanobject.setName("duoduo");ListHashMap dbBeans = SQLExecutor.queryListWithDBName(HashMap.class, "mysql", sql,beanobject);System.out.println(dbBeans);}@Testpublic void queryMap() throws SQLException{String sql = "select * from LISTBEAN ";Map dbBeans = SQLExecutor.queryObject(HashMap.class, sql卡塔尔(قطر‎;System.out.println(dbBeans卡塔尔(قطر‎;}------二零一三-03-30------------o 3.0api中完美对java.util.Date类型对象属性数据的管理o 修复mvc落成分页作用时,通过handleMapping表明内定的url路线不恐怕进行分页的bug,校订的顺序如下:------2013-03-20------------o 改过右键菜单效能,提高右键菜单质量,涉及的机能有:使用右键菜单的树标签和使用右键菜单的列表、分页标签,以至有着其余有关的页面 o 修复jms不可能发送长度为0的jms音讯bug/bbossaop/src-jms/org/frameworkset/mq/RequestDispatcher.java------贰零壹叁-03-10------------ o 将零器件管理格局默感觉设置为单例格局------二〇一二-03-09------------ o 扩充list,map,set成分类型定义,增添componentType属性,用来标志容器中寄放的靶子类型,componentType的取值范围如下:bean:标记容器成分对象类型是组件对象类型String:标识容器成分对象类型是String对象该属性可以用来便于将部件类型的list和字符串类型的list注入到别的零零部件中。相应地在ProList、ProMap、ProSet对象上加码了以下方式:ProList: public List getComponentList(卡塔尔国ProMap:public Map getComponentMap(卡塔尔ProSet:public Set getComponentSet(State of Qatar使用案比方下:property name="/index.htm,/detail.htm" f:demo_sites="attr:demo_sites" singlable="true"/ property name="demo_sites"list componentType="bean"property f:name="listbean" f:cnname="会集po对象绑定实例" property name="controllerClass" value="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/test/org/frameworkset/spi/mvc/ListBeanBindController.java"/property name="configFile" value="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/WebRoot/WEB-INF/bboss-listbean.xml"/property name="visturl"list componentType="String"property value="/databind/showstringarraytoList.htm"/property value="/databind/showlist.htm"//list/propertyproperty name="formlist"list componentType="bean"property f:formPath="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/WebRoot/jsp/databind/table.jsp" f:charset="UTF-8"property name="description"![CDATA[表单table.jsp, 对应于/databind/showlist.htm跳转页面 ]]/property/propertyproperty f:formPath="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/WebRoot/jsp/databind/stringarraytoList.jsp" property name="description"![CDATA[表单stringarraytoList.jsp, 对应于/databind/showstringarraytoList.htm跳转页面 ]]/property/propertyproperty f:formPath="D:/workspace/bbossgroup-2.0-RC2-mvc/bboss-mvc/WebRoot/jsp/databind/tableinfo.jsp" property name="description"![CDATA[表单/bboss-mvc/WebRoot/jsp/databind/tableinfo.jsp, 对应于/databind/showbean.htm跳转页面 ]]/property/property/list/propertyproperty name="description"![CDATA[汇聚po对象绑定实例 字符串数组转List数据绑定实例 ]]/property/property/list/property类如下:SiteDemoControllerpublic class SiteDemoController {private ListSiteDemoBean demo_sites;public String index(ModelMap model){model.addAttribute("demobeans", demo_sites);return "index";}public String detail(ModelMap model,@RequestParam(name="demoname") String demoname){SiteDemoBean bean = null;for(int i = 0; i demo_sites.size(); i ){SiteDemoBean bean_ = demo_sites.get(i);if(demoname.equals(bean_.getName())){bean = bean_;break;}}model.addAttribute("demobean", bean);return "seconddetail";}/** * @return the demo_sites */public ListSiteDemoBean getDemo_sites() {return demo_sites;}/** * @param demoSites the demo_sites to set */public void setDemo_sites(ListSiteDemoBean demoSites) {demo_sites = demoSites;}}------二零一二-03-30------------o 3.0api中完善对java.util.Date类型对象属性数据的管理------2013-03-06------------o 修复树标签复选框点击事件firefox包容性难题o 修复树标签暗许选中节点上边安装点击事件时Boolean值向String调换格外难题------二〇一三-03-04------------o 扩展一个依据参数运营数据源的api,能够决定数据源是连接池数据源依然非连接池数据源DBUtil中追加以下静态方法:public static void startPool(String poolname,String driver,String jdbcurl,String username,String password, String readOnly, String txIsolationLevel, String validationQuery, String jndiName, int initialConnections, int minimumSize, int maximumSize, boolean usepool, boolean external, String externaljndiName 卡塔尔(قطر‎ o 数据源配置文件中追加usepool元素,可以调控数据源是连接池数据源依然非连接池数据源?xml version="1.0" encoding="gb2312"?poolmandatasourcedbnamebspf/dbnameloadmetadatafalse/loadmetadatajndiNamejdbc/mysql-ds/jndiNamedriveroracle.jdbc.driver.OracleDriver/driverusepoolfalse/usepoolurljdbc:oracle:thin:@//172.16.25.139:1521/dtjf/urlusernamedtjf/usernamepassworddtjf/passwordtxIsolationLevelREAD_COMMITTED/txIsolationLevel logAbandonedtrue/logAbandonedreadOnlyfalse/readOnlykeygeneratecomposite/keygenerateautoprimarykeyfalse/autoprimarykeyshowsqlfalse/showsql/datasource/poolman o 调度非连接池数据源的监督检查数据搜集和相关属性体现接口------贰零壹壹-03-02------------ o 改进odbc 驱动下利用o/r mapping查询,大字段管理特别难点o 扩充SQLExecutor组件扩张入保障有查询List结果集艺术对泛型的支撑o 修复double类型数据向int类型转换的难题,新增添单个值转换为数组的功用,辅助数字类型数组之间的相互作用调换------二〇一三-03-02------------o util包中期维修复double类型数据向int类型调换的标题,新添单个值转变为数组的功效,扶助数字类型数组之间的相互调换release version : bbossgroups-3.0release date: 二零一一/02/26-----------------------------------------------------------------------------------------------****release futures: 1.bbossgroups-3.0相比较bbossgroups-2.0-RC1最大的变迁是,笔者接受短暂四个月的年华支付的一套mvc框架即bboss-mvc子项目。为了开荒mvc框架,对bboss aop,bboss persistent,bboss taglib,bboss util做了效果与利益扩大。2.bboss aop框架新的机能有扩充了国际化的支撑引入新的机件的创办机制-工厂方式完备rpc极度管理机制rpc契约扩大对公约的帮衬扩张rpc.evaluatelocaladdress配置参数/bbossaop/resources/org/frameworkset/spi/manager-rpc-service.xmlrpc.evaluatelocaladdress的成效如下:是或不是对长间隔地址实行地面地址校验,假使设置为true则对长途地址进行地面地址剖断,就算是local地址将转移为本地调用,不然实施远程调用 借使设置为false,一律当成远程方法调用 默感觉false------------------------------------------------------------------2009-09-27------------------------------------------------------------------o 完备rpc万分管理体制客性格很顽强在千难万险或巨大压力面前不屈端调用远程组件服务时,对于服务端抛回的那些,并将事情特别统一封装为RemoteException,那样就变成客商端程序不能直接破获服务端的事情特别。实行修补后直接将业务极其直白回到给客服端。o 修复左券的连锁难点二〇〇九-09-19------------------------------------------------------------------o 修复RPCRequest或许的死锁隐患------------------------------------------------------------------二〇〇九-09-16------------------------------------------------------------------o 扩张协商的支撑http合同的服务器能够单独的http server,也足以是tomcat,jetty,weblogic,WebSphere等应用服务器。对应的jar包为bboss-契约配置文件为------------------------------------------------------------------2009-09-03------------------------------------------------------------------o 直接通过pro的getBean方法得到引用组件对象空指针bug修复------------------------------------------------------------------二〇一〇-08-27------------------------------------------------------------------o 修复rest风格央浼中对netty和rmi左券未管理的bug3.bboss-persistent新扩充效果与利益特色o SQLExecutor组件中新扩大一组数据库操作apio 新添从数据库中一向获得表元数据和颇负表元数据的apio 康健连接池、外界连接池监察和控制相关音讯获得格局,假如外部连接池对应的实际上连接池即使是三个内部的连接池那么外界连接池的起步时间,停用时间将一贯是实际上连接池的日子。o 扩张从陈设文件运行连接池方法-使用办法参照他事他说加以考查测量检验用例com.frameworkset.common.Monitoro 扩大在sql语句中设置逻辑决断语句功用,举例:PreparedDBUtil dbutil = new PreparedDBUtil(卡塔尔(قطر‎;String listRepositorySql = "select * from CIM_ETL_REPOSITORY where 1=1 " "#if($HOST_ID !$HOST_ID.equals("")) " "and HOST_ID = #[HOST_ID]" "#end " " and PLUGIN_ID = #[PLUGIN_ID] " " and CATEGORY_ID = #[CATEGORY_ID] and APP = #[APP]";String sql = listRepositorySql.toString(卡塔尔(قطر‎;try {// 查询参数SQLParams params = new SQLParams(卡塔尔国;params.addSQLParam("HOST_ID", null,//设置host_id变量为的值Null大概空串""或然直接忽视增多该参数,那么语句中的and HOST_ID = #[HOST_ID]"将被忽视掉 //"#if($HOST_ID !$HOST_ID.equals("")) " //"and HOST_ID = #[HOST_ID]" //"#endSQLParams.STRING);params.addSQLParam("PLUGIN_ID", "pluginid",SQLParams.STRING);params.addSQLParam("CATEGORY_ID", "catogoryid",SQLParams.STHighlanderING卡塔尔;params.addSQLParam("应用软件", "app", SQLParams.ST奥迪Q7ING卡塔尔(قطر‎;dbutil.preparedSelect(params, "bspf",sql卡塔尔;// 施行查询dbutil.executePrepared(State of Qatar;o 改过查询元数据缓冲机制,接纳分连接池缓冲的编写制定,幸免数据库之间的矛盾o SQLParams和Params类增添copy方法,对sql参数进行复制,以便在标签库中实行分页查询时,当页面记录数爆发变化时保持sqlparams参数4.bboss-taglib 标签库新增添功用特色------------------------------------------------------------------二〇一二-02-12------------------------------------------------------------------o 分页标签与mvc框架结合,通过mvc的调节器方法直接能够给分页标签提供数据o 增加notcontain那notmatch三个正则表达式逻辑判定标签,和contain、match多少个逻辑判别标签的功效相反------------------------------------------------------------------二〇一〇-09-03------------------------------------------------------------------。com.frameworkset.common.tag.pager.ObjectDataInfoImpl对象未有兑现以下形式:public long getItemCount(卡塔尔国 public int getDataSize(卡塔尔(قطر‎导致调用时抛出极度。实现上述三个格局后,成效符合规律。------------------------------------------------------------------2008-09-03------------------------------------------------------------------o 分页标签扩充设置页面size成效,火狐浏览器宽容性改进改正程序:frameworkset.jar/bboss-tablib/src/com/frameworkset/common/tag/pager/tags/IndexTag.java/bboss-tablib/src/com/frameworkset/common/tag/pager/tags/PagerContext.java/bboss-tablib/src/com/frameworkset/common/tag/pager/tags/PagerDataSet.java/bboss-tablib/src/com/frameworkset/common/tag/pager/tags/PagerTag.java/bboss-tablib/webapp/include/pager_custom.js/bboss-tablib/webapp/include/pager.js标签署义文件/bboss-tablib/webapp/WEB-INF/pager-taglib.tld为index标签增加sizescope属性!-- 设置页面显示记录范围,默感到"5","10","20","30","40","50","60","70","80","90","100"客商能够自定义那么些约束,以逗号分隔就可以假若在pager标签和list标签上点名的maxPageItems属性对应的页面记录条数不在sizescope范围中,那么将把maxPageItems作为第一个筛选参加到sizescope中 --attributenamesizescope/namertexprvaluetrue/rtexprvalue/attribute使用jquery相关的样式,表格的鼠标移动与点击样式------------------------------------------------------------------二〇〇八-09-01------------------------------------------------------------------o 修正过滤器com.frameworkset.common.filter.CharacterEncodingHttpServletRequestWrapper,消逝特定情景下普通话乱码比方:发起倡议:多多先实行以下语句String values[] = request.getParameterValues("key"卡塔尔;//获得的values为汉语数组:{"多多"}然后再实行以下语句String values = request.getParameter("key"State of Qatar;//得到的值为华语乱码5.bboss event事件管理框架变化 更正推行事件监听器handle方法,改良远程事件管理逻辑------------------------------------------------------------------二〇〇九-09-26------------------------------------------------------------------o 修正推行事件监听器handle方法,扩大对handle方法抛出的相当的管理------------------------------------------------------------------------------------------------------------------------------------二零零六-09-13------------------------------------------------------------------o 纠正测验用例,保持与aop框架的时髦版本api同步------------------------------------------------------------------二〇〇八-08-30------------------------------------------------------------------o 退换异步事件处理,扩大事件队列机制,幸免事件聚积产生线程池管理忙的难题/bbossevent/resources/event-service-assemble.xml扩张以下属性配置event.block.queue.sizeproperty name="event.block.queue.size" value="200"/线程池event.threadpool的曲折等待处理棉被服装置为:property name="waitFailHandler" value="org.frameworkset.event.伊夫ntHandle$WaiterFailedHandler"/6.bboss-util 效用变化o 纠正com/frameworkset/util/TransferObjectFactory.java中对象值拷贝不帮助isXXXX方式获得属性值的题目/bboss-util/src/com/frameworkset/util/TransferObjectFactory.java----------------------------------------bbossgroups-2.0-rc2
  • 二零零六-11-28----------------------------------------o 康健ValueObjectUtil的getValue方法,制止因为调用get方法重返值为null后,重复查找Boolean方法的难题增添getMethodByPropertyName方法,扩张public static Object getValueByMethod(Object obj, Method method, Object[] paramsState of Qatar方法----------------------------------------bbossgroups-2.0-rc2 - 二〇〇九-08-31----------------------------------------o 修复velocity模板未有精确开始化的主题素材,重要是在VelocityUtil上履行evalute时一向不识别 引擎是或不是曾经最早化----------------------------------------bbossgroups-2.0-rc2
  • 二〇一〇-08-23----------------------------------------o 修复com.frameworkset.util.VariableHandler中变量深入分析bug,暗中认可default_regex 修改为 "\$\{. ?)\}"获取输入串中的变量,作为数组再次来到------------------------------------------------------------------------------------************release version : bbossgroups-2.0-RC1 release date: 二零零六/08/06release files:Contain all sub projects source files,distribute files,All projects dependended jars,So the file size is some bigger,do not warry,every sub project can be downloaded alone.release futures: ----------------------------------------bboss-persistent - 2008-08-03----------------------------------------o 繁多据库事务完善:假设存在多少个三番五次池bspf和mq上的多少个作业,倘若mq实际援用了bspf做为外界数据源,那么mq的对应子事务和bspf的子事务合併也正是说实际上mq直接运用bspf的事体。o 外界数据源监控消息周到,源数据加载完备,配置消息简洁明了datasource external="true" dbnamemq/dbname externaljndiNamejdbc/mysql-ds/externaljndiNameshowsqlfalse/showsql /datasource datasource external="true" dbnamekettle/dbname externaljndiNamejdbc/mysql-ds/externaljndiNameshowsqlfalse/showsql /datasource ----------------------------------------bboss-persistent - 二零零六-07-23----------------------------------------o 增添to_char函数的适配,to_date函数适配,这两天涂改的有oracle,mysql----------------------------------------bboss-persistent
  • 二零零六-07-22----------------------------------------o 扩大db适配器数据库日期转换函数,扩张钦定调换日期格式参数方法o 优化/bboss-persistent/src/com/frameworkset/common/poolman/management/BaseTableManager.java中加载tableinfo音信,uuid和sequence时无需计算表的最大值o mysql 数据库适配器bug改善------------------------------------------------------------------bboss-aop 二零零六-07-26------------------------------------------------------------------o jgroups 加密和表达机制周详o 扩展在劳动组件方法中拿走客服端须求参数方法,扩大RequestContext上下文管理类,用来得到客性格很顽强在千难万险或巨大压力面前不屈端传递的系统参数使用方法: public Object getParameter(State of Qatar{String value = RequestContext.getRequestContext(卡塔尔.getStringParameter("parameterKey"卡塔尔;System.out.println("value:"
  • value卡塔尔(قطر‎;return value;}------------------------------------------------------------------bboss-aop 二零零六-07-23------------------------------------------------------------------o 修复严重错误,该难题显现为,对三个单实例的远程服务组件并发发起八个法子调用时会现身以下场景: 乞求响应结果错失,一个rpc必要接纳其余央浼的结果,招致不得以预料的大谬不然,举个例子类型转换错误 o 校正SQLUtil组件,增添变量替换功效详细使用格局参照他事他说加以考察测量试验用例:org.frameworkset.spi.persistent.SQLUtilTesto 修改cglib货仓溢出bug采纳cglib ioc机制时,当组件配置了评释式事务,在施行的时候将报仓库溢出荒唐。o 新增添/bbossaop/src/org/frameworkset/persitent/util/SQLUtil.java类作用是能够管理sql语句,可以加载差别的配置sql文件,并提取其中的sql语句------------------------------------------------------------------bboss-taglib 二零一零-07-31------------------------------------------------------------------o 扩大右键菜单项禁止使用的提醒意义------------------------------------------------------------------各子项目新扩张功效和改正作用处目清单请参见每一种种类中的readme.txt文件。

图片 1

时间:2017-2-5 18:16

代码布局

 

图片 2

——Spring对两样长久化技能的支撑

 

Spring为各类帮衬的良久化本事都提供了回顾操作的沙盘模拟经营和回调。


ORM悠久化技术:
    JDBC:
        org.springframework.jdbc.core.JdbcTemplate  

配备文件  config.properties

    Hibernate3.0:
        org.springframework.orm.hibernate3.HibernateTemplate  

#hibernate.dialect=sy.util.Oracle10gDialect
#driverClassName=oracle.jdbc.driver.OracleDriver
#validationQuery=SELECT 1 FROM DUAL
#jdbc_url=jdbc:oracle:thin:@localhost:1521:orcl
#jdbc_username=bjlyjoa
#jdbc_password=bjlyjoa

    IBatis(MyBatis):
        org.springframework.orm.ibatis.SqlMapClientTemplate  

hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
driverClass=com.mysql.jdbc.Driver
validationQuery=SELECT 1
jdbcUrl=jdbc:mysql://192.168.232.88:3306/xlzj_sh?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
user=root
password=123456

    JPA:
        org.springframework.orm.jpa.JpaTemplate

#hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect
#driverClassName=net.sourceforge.jtds.jdbc.Driver
#validationQuery=SELECT 1
#jdbc_url=jdbc:jtds:sqlserver://127.0.0.1:1433/qx
#jdbc_username=sa
#jdbc_password=123456

 

hibernate.hbm2ddl.auto=none
hibernate.show_sql=false
hibernate.format_sql=false
hibernate.use_sql_comments=false

——JDBC Template

 

1、Spring JDBC是Spring提供的持久层才能。
2、简化JDBC API的开销,使用上和Apache公司的DBUtils框架极其相通。
3、导入供给jar包到工程目录。
4、导入Spring主题开垦包
    >   spring-beans-3.2.0.RELEASE.jar


    >   spring-context-3.2.0.RELEASE.jar

数据库连接 文件

    >   spring-core-3.2.0.RELEASE.jar

package light.mvc.framework.connectUtil;

    >   spring-expression-3.2.0.RELEASE.jar

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

5、导入commons-logging日志包

import javax.sql.DataSource;

    >   commons-logging-1.1.1.jar

import com.mchange.v2.c3p0.DataSources;

6、导入JDBC模板开辟包
    >   spring-jdbc-3.2.0.RELEASE.jar

/**
*
*    
* 项目名称:s4h4s2s   
* 类名称:DataSourceConnUtil   
* 类描述: c3p0连接池管理类  
* 创建人:刘军/jun liu   
* 创造时间:二零一五-12-19 早上11:40:35   
* 修改人:刘军/shall_liu   
* 改过时间:二〇一四-12-19 清晨11:40:35   
* 改良备注:   
* @version    
*    
*/
public class DataSourceConnUtil {

        JDBC工具。

private static final String JDBC_DRIVER = "driverClass";
private static final String JDBC_URL = "jdbcUrl";

    >   spring-tx-3.2.0.RELEASE.jar
        事务管理。

private static DataSource ds;
/**
* 开首化连接池代码块
*/
static{
initDBSource();
}

7、导入MySQL驱动

/**
* 初始化c3p0连接池
*/
private static final void initDBSource(){
Properties c3p0Pro = new Properties();
try {
//加载配置文件
c3p0Pro.load(DataSourceConnUtil.class.getResourceAsStream("/config.properties"));
//c3p0Pro.load(new FileInputStream(PathUtil.getPath("dabase.properties")));
} catch (Exception e) {
e.printStackTrace();
}

——JDBC Template入门

String drverClass = c3p0Pro.getProperty(JDBC_DRIVER);
if(drverClass != null){
try {
//加载驱动类
Class.forName(drverClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

1、导入相应jar包
    *   spring-jdbc-3.2.0.RELEASE.jar
    *   spring-tx-3.2.0.RELEASE.jar
    *   mysql-connector-java-5.1.35-bin.jar
    *   mchange-commons-java-0.2.3.4.jar

}

2、创设applicationContext.xml配置文件

Properties jdbcpropes = new Properties();
Properties c3propes = new Properties();
for(Object key:c3p0Pro.keySet()){
String skey = (String)key;
if(skey.startsWith("c3p0.")){
c3propes.put(skey, c3p0Pro.getProperty(skey));
}else{
jdbcpropes.put(skey, c3p0Pro.getProperty(skey));
}
}

3、编写叁个测验类

try {
//建构连接池
DataSource unPooled = DataSources.unpooledDataSource(c3p0Pro.getProperty(JDBC_URL),jdbcpropes);
ds = DataSources.pooledDataSource(unPooled,c3propes);

import org.junit.Test;

} catch (SQLException e) {
e.printStackTrace();
}
}

import org.springframework.jdbc.core.JdbcTemplate;

/**
* 获取数据库连接对象
* @return 数据连接对象
* @throws SQLException
*/
public static synchronized Connection getConnection() {
Connection conn = null;
try {
conn = ds.getConnection();
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
conn.setAutoCommit(false卡塔尔国;//撤除 事务管理:事务提交机制
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}

import org.springframework.jdbc.datasource.DriverManagerDataSource;


 

package light.mvc.framework.connectUtil;

public class SpringDemo1 {

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

 

import javax.sql.DataSource;

    @Test

import com.mchange.v2.c3p0.DataSources;

    public void fun1(){

/**
*
*    
* 项目名称:s4h4s2s   
* 类名称:DataSourceConnUtil   
* 类描述: c3p0连接池管理类  
* 创建人:刘军/jun liu   
* 创立时间:二零一四-12-19 早上11:40:35   
* 修改人:刘军/shall_liu   
* 改善时间:2015-12-19 中午11:40:35   
* 改善备注:   
* @version    
*    
*/
public class DataSourceConnUtil {

        // 创立连接池

private static final String JDBC_DRIVER = "driverClass";
private static final String JDBC_URL = "jdbcUrl";

        DriverManagerDataSource dataSource = new DriverManagerDataSource();

private static DataSource ds;
/**
* 开始化连接池代码块
*/
static{
initDBSource();
}

        // 设置参数

/**
* 初始化c3p0连接池
*/
private static final void initDBSource(){
Properties c3p0Pro = new Properties();
try {
//加载配置文件
c3p0Pro.load(DataSourceConnUtil.class.getResourceAsStream("/config.properties"));
//c3p0Pro.load(new FileInputStream(PathUtil.getPath("dabase.properties")));
} catch (Exception e) {
e.printStackTrace();
}

        dataSource.setDriverClassName("com.mysql.jdbc.Driver");

String drverClass = c3p0Pro.getProperty(JDBC_DRIVER);
if(drverClass != null){
try {
//加载驱动类
Class.forName(drverClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

        dataSource.setUrl("jdbc:mysql:///spring3_day02");

}

        dataSource.setUsername("root");

Properties jdbcpropes = new Properties();
Properties c3propes = new Properties();
for(Object key:c3p0Pro.keySet()){
String skey = (String)key;
if(skey.startsWith("c3p0.")){
c3propes.put(skey, c3p0Pro.getProperty(skey));
}else{
jdbcpropes.put(skey, c3p0Pro.getProperty(skey));
}
}

        dataSource.setPassword("Admin123");

try {
//建构连接池
DataSource unPooled = DataSources.unpooledDataSource(c3p0Pro.getProperty(JDBC_URL),jdbcpropes);
ds = DataSources.pooledDataSource(unPooled,c3propes);

 

} catch (SQLException e) {
e.printStackTrace();
}
}

        // 使用JDBC的模板

/**
* 获取数据库连接对象
* @return 数据连接对象
* @throws SQLException
*/
public static synchronized Connection getConnection() {
Connection conn = null;
try {
conn = ds.getConnection();
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
conn.setAutoCommit(falseState of Qatar;//撤除 事务管理:事务提交机制
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}

        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);


        // 执行SQL语句

package light.mvc.framework.connectUtil.jdbcUtl;
/**
*
* @Title: SqlParameter.java 
* @Package light.mvc.framework.connectUtil.jdbcUtl 
* @Description: TODO(存款和储蓄进程参数类型卡塔尔 
* @author 刘军
* @date 2016-3-19 下午2:47:02 
* @version V1.0  
*/
public class SqlParameter {

        jdbcTemplate.execute("create table User (id int primary key auto_increment, name varchar(20))");

/**
* 参数名称
*/
public String Name;
/**
* 参数值
*/
public Object Value;
/**
* true代表参数为出口类型
*/
public boolean OutPut;
/**
* 参数类型
*/
public int Type;
/**
* 输入类型参数的布局函数
* @param name 存款和储蓄进程 输入类型 参数名称
* @param value 存款和储蓄进度 输入类型 参数值
*/
public SqlParameter(String name,Object value){
this.Name = name;
this.Value= value;
}
/**
* 输出类型参数的结构函数
* @param type 存款和储蓄进度 输出类型 参数类型
* @param name 存款和储蓄进度 输出类型 参数名称
*/
public SqlParameter(int type,String name){
this.Name = name;
this.OutPut = true;
this.Type = type;
}
/**
* 再次来到类型参数的布局函数
* @param type 存款和储蓄进度 重回类型
*/
public SqlParameter(int type){
this.Name = "";
this.OutPut = true;
this.Type = type;
}
}

    }


}

package light.mvc.framework.connectUtil.jdbcUtl;
/**
*
* @Title: SqlParameter.java 
* @Package light.mvc.framework.connectUtil.jdbcUtl 
* @Description: TODO(存款和储蓄进度参数类型卡塔尔(قطر‎ 
* @author 刘军
* @date 2016-3-19 下午2:47:02 
* @version V1.0  
*/
public class SqlParameter {

——使用Spring暗中认可连接池

/**
* 参数名称
*/
public String Name;
/**
* 参数值
*/
public Object Value;
/**
* true表示参数为出口类型
*/
public boolean OutPut;
/**
* 参数类型
*/
public int Type;
/**
* 输入类型参数的结构函数
* @param name 存款和储蓄进度 输入类型 参数名称
* @param value 存款和储蓄进程 输入类型 参数值
*/
public SqlParameter(String name,Object value){
this.Name = name;
this.Value= value;
}
/**
* 输出类型参数的布局函数
* @param type 存款和储蓄进程 输出类型 参数类型
* @param name 存款和储蓄进度 输出类型 参数名称
*/
public SqlParameter(int type,String name){
this.Name = name;
this.OutPut = true;
this.Type = type;
}
/**
* 重回类型参数的构造函数
* @param type 存款和储蓄进度 重返类型
*/
public SqlParameter(int type){
this.Name = "";
this.OutPut = true;
this.Type = type;
}
}

从刚刚的上行下效中早就看到,Spring JDBC模板的行使,必需信任DataSource数据库连接池。


在事实上支出中,经常采用Spring配置文件来配置JDBC Template。

package light.mvc.framework.connectUtil.jdbcUtl;

常用数据源:
    1)Spring数据源落成类:DriverManagerDataSource
    2)DBCP数据源:BasicDataSource
    3)C3P0数据源:ComboPooledDataSource

import java.sql.ResultSet;
/**
*
* @Title: ObjectMapper.java 
* @Package light.mvc.framework.connectUtil.jdbcUtl 
* @Description: TODO(用于转移数据结果集 State of Qatar 
* @author 刘军
* @date 2016-3-19 上午9:52:18 
* @version V1.0  
*/
public interface ObjectMapper {
public Object mapping(ResultSet rs);

1、创立applicationContext.xml配置文件

}

<?xml version="1.0" encoding="UTF-8"?>


<beans xmlns=""

package light.mvc.framework.connectUtil.jdbcUtl;

    xmlns:xsi="" xmlns:aop=""

import java.sql.ResultSet;
/**
*
* @Title: ObjectMapper.java 
* @Package light.mvc.framework.connectUtil.jdbcUtl 
* @Description: TODO(用于转移数据结果集 State of Qatar 
* @author 刘军
* @date 2016-3-19 上午9:52:18 
* @version V1.0  
*/
public interface ObjectMapper {
public Object mapping(ResultSet rs);

    xsi:schemaLocation="

}

 /spring-beans.xsd">


 

package light.mvc.framework.connectUtil.jdbcUtl;

    <!-- Spring私下认可连接池 -->

import java.sql.ResultSet;
/**
*
* @Title: ObjectMapper.java 
* @Package light.mvc.framework.connectUtil.jdbcUtl 
* @Description: TODO(用于转移数据结果集 State of Qatar 
* @author 刘军
* @date 2016-3-19 上午9:52:18 
* @version V1.0  
*/
public interface ObjectMapper {
public Object mapping(ResultSet rs);

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

}

        <property name="url" value="jdbc:mysql:///spring3_day02" />


        <property name="username" value="root" />

package light.mvc.dao.impl;

        <property name="password" value="Admin123" />

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

    </bean>  

import light.mvc.dao.JdbcBaseDao;
import light.mvc.dao.JdbcDao;
import light.mvc.framework.connectUtil.jdbcUtl.ObjectMapper;
import light.mvc.framework.connectUtil.jdbcUtl.PageModel;
import light.mvc.pageModel.demo.Demo;
import light.mvc.service.demo.impl.DemoMapper;

 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class JdbcDaoImpl extends Object implements JdbcDao{
@Autowired
private JdbcBaseDaoImpl jdbcBaseUtil =new JdbcBaseDaoImpl();

    <!-- 定义JDBCTemplate类 -->

public JdbcBaseDaoImpl getJdbcBaseUtil() {
return jdbcBaseUtil;
}
public void setJdbcBaseUtil(JdbcBaseDaoImpl jdbcBaseUtil) {
this.jdbcBaseUtil = jdbcBaseUtil;
}
/**
*
* @Title: insert 
* @Description: TODO(插入单挑数据卡塔尔 
* @param @param sql 查询sql
* @param @param obj 参数数组
* @param @param isGenerateKey (true false)
* @param @return    设定文件 
* @return boolean    重回类型 
* @throws 
*/
public boolean insert(String sql, Object[] obj){

    <!-- 为JDBC模板注入连接池属性 -->

return jdbcBaseUtil.update(sql, obj, false);
}
/**
*
* @author 刘军
* @date 2016-3-19 下午2:23:42 
* @version V1.0  
* @Title: insertLines 
* @Description: TODO(新增) 
* @param @param sql
* @param @param obj
* @param @return    设定文件 
* @return int    重临类型 
* @throws 
*/
public int insertLines(String sql, Object[] obj){

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >

return jdbcBaseUtil.executeUpdate(sql, obj);
}
/**
*
* @author 刘军
* @date 2016-3-19 下午2:05:19 
* @version V1.0  
* @Title: insert 
* @Description: TODO(新增) 
* @param @param sql
* @param @param obj
* @param @return    设定文件 
* @return boolean    再次回到类型 
* @throws 
*/
public boolean insertByList(String sql, List<Object> obj){

        <property name="dataSource" ref="dataSource" />

return jdbcBaseUtil.updateByPreparedStatement(sql, obj);
}

    </bean>

/**
*
* @Title: delete 
* @Description: TODO(删除单挑数据卡塔尔国 
* @param @param sql 删除sql
* @param @param obj 参数数组
* @param @param isGenerateKey (true false)
* @param @return    设定文件 
* @return boolean    重临类型 
* @throws 
*/
public boolean delete(String sql, Object[] obj){

</beans>

return jdbcBaseUtil.update(sql, obj, false);
}
/**
*
* @author 刘军
* @date 2016-3-19 下午2:19:20 
* @version V1.0  
* @Title: delete 
* @Description: TODO(删除单挑数据卡塔尔 
* @param @param sql
* @param @param obj
* @param @return    设定文件 
* @return boolean    重临类型 
* @throws 
*/
public boolean delete(String sql,List<Object> obj){

2、测量检验代码:

return jdbcBaseUtil.updateByPreparedStatement(sql, obj);
}

    @Test

/**
*
* @Title: deleteALL 
* @Description: TODO(批量刨除数据卡塔尔国 
* @param @param sql
* @param @param obj
* @param @return    设定文件 
* @return boolean    重返类型 
* @throws 
*/
public boolean deleteALL(String sql, Object[] obj){
StringBuffer sbStr = new StringBuffer();
for (int i = 0; i < obj.length; i ) {
sbStr.append("?,");
}
String sqls =sql "(" sbStr.substring(0, sbStr.length() - 1) ")";
return jdbcBaseUtil.update(sqls, obj, false);
}
/**
*
* @author 刘军
* @date 2016-3-19 下午2:20:56 
* @version V1.0  
* @Title: deleteALL 
* @Description: TODO(删除 批量删除 State of Qatar 
* @param @param sql
* @param @param obj
* @param @return    设定文件 
* @return boolean    重临类型 
* @throws 
*/
public boolean deleteALL(String sql,List<Object> obj){
StringBuffer sbStr = new StringBuffer();
for (int i = 0; i < obj.size(); i ) {
sbStr.append("?,");
}
String sqls =sql "(" sbStr.substring(0, sbStr.length() - 1) ")";
return jdbcBaseUtil.updateByPreparedStatement(sqls, obj);
}
/**
*
* @Title: update 
* @Description: TODO(更新单挑数据记录卡塔尔国 
* @param @param sql
* @param @param obj
* @param @return    设定文件 
* @return boolean    再次回到类型 
* @throws 
*/
public boolean update(String sql, Object[] obj){

    public void fun(){

return jdbcBaseUtil.update(sql, obj, false);
}
/**
*
* @author 刘军
* @date 2016-3-19 下午2:21:45 
* @version V1.0  
* @Title: update 
* @Description: TODO(修改 ) 
* @param @param sql
* @param @param obj
* @param @return    设定文件 
* @return boolean    重返类型 
* @throws 
*/
public boolean update(String sql, List<Object> obj){

        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

return jdbcBaseUtil.updateByPreparedStatement(sql, obj);
}
/**
*
* @Title: queryFrist 
* @Description: TODO(查询出第一条数据记录卡塔尔国 
* @param @param tale
* @param @param objParams
* @param @return    设定文件 
* @return Object    重临类型 
* @throws 
*/
public Object queryFrist(String tale,Object[] objParams){

        jdbcTemplate.execute("create table User3 (id int primary key auto_increment, name varchar(20))");

String sql = "select * from " tale "";
Object[] obj = objParams;
return (Object) query(sql, obj, new DemoMapper()).get(0);
}
/**
*
* @author 刘军
* @date 2016-3-19 上午9:41:06 
* @version V1.0  
* @Title: find 
* @Description: TODO(查询一条记录 卡塔尔 
* @param @param sql
* @param @param obj
* @param @param mapper
* @param @return    设定文件 
* @return Object    再次回到类型 
* @throws 
*/
public Object find(String sql, Object[] obj, ObjectMapper mapper){
return jdbcBaseUtil. find( sql, obj, mapper) ;

    }

}

——DBCP连接池

/**
*
* @Title: query 
* @Description: TODO( 查询全体的数额记录;并以list 集合(可能:Object 对象卡塔尔国重返 State of Qatar 
* @param @param sql
* @param @param obj
* @param @param mapper
* @param @return    设定文件 
* @return List<? extends Object>    再次回到类型 
* @throws 
*/
public List<? extends Object> query(String sql, Object[] obj,
ObjectMapper mapper) {

1、导入相应jar包
    *   com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
    *   com.springsource.org.apache.commons.pool-1.5.3.jar

return jdbcBaseUtil.query(sql, obj, mapper);
}
/**
*
* @Title: CountNum 
* @Description: TODO( select count(*卡塔尔国from table 的总量据条数卡塔尔
* @param @param tableName (数据库表名卡塔尔国
* @param @return    设定文件 
* @return int    重临类型 
* @throws 
*/
public int CountNum (String tableName){
return jdbcBaseUtil.returnTableCount(tableName);
}
/**
*
* @Title: queryPageNumber 
* @Description: TODO(分页查询卡塔尔(قطر‎ 
* @param @param pageNo 第几页
* @param @param pageSize 一页彰显多少条数据
* @param @param table 查询哪个表
* 全表无条件查询
* {select * from ( tablea a,tableb b where a.id=b.id)limt numStrat,numStop}
* 全表 带条件模糊查询:
*SELECT * FROM demo a ,demo b WHERE a.id=b.id AND a.id LIKE "1%" LIMIT 0,15;
* @param @return    设定文件 
* @return PageModel    重回类型 
* @throws 
*/
public PageModel queryPageNumber(int pageNo, int pageSize,String table) {

2、制造结构文件

int countTotal=CountNum(table);
//oracle 分页
//String sql="select * from (select j.*,rownum rn from (select * from " table ") j where rownum<=?) where rn>?";
//mysql 分页
String sql="SELECT * FROM " table " LIMIT ?,?;";
Object[] obj = {(pageNo - 1) * pageSize, pageNo * pageSize};
List<Demo> list = (List<Demo>) query(sql, obj,new DemoMapper());
PageModel pagemodel = new PageModel();
pagemodel.setPageNo(pageNo);
pagemodel.setPageSize(pageSize);
pagemodel.setList(list);
pagemodel.setTotalRecords(countTotal);
if(pageSize!=0){
pagemodel.setCountPageNo(countTotal/pageSize);
}

<?xml version="1.0" encoding="UTF-8"?>

return pagemodel;
}
/**
*
* @Title: findSimpleResult  获取最终一条(单条)记录
* @Description: TODO(查询单条记录卡塔尔国 
* @param @param sql
* @param @param params
* @param @return    设定文件 
* @return Map<String,Object>    重回类型 
* @throws 
*/
public Map<String, Object> findSimpleResult(String sql, List<Object> params){

<beans xmlns=""

return jdbcBaseUtil.findSimpleResult(sql, params);
}
/**
*
* @author 刘军
* @date 2016-3-19 上午12:30:02 
* @version V1.0  
* @Title: findModeResult  查询多条记下
* @Description: TODO(查询多条记下卡塔尔(قطر‎ 
* @param @param sql
* @param @param params
* @param @return    设定文件 
* @return List<Map<String,Object>>    重返类型 
* @throws 
*/
public List<Map<String, Object>> findModeResult(String sql, List<Object> params){
return jdbcBaseUtil.findModeResult(sql,params);
}
/**
*
* @author 刘军
* @date 2016-3-19 上午8:43:07 
* @version V1.0  
* @Title: executeQuerySingle 
* @Description: TODO(SQL 查询将查询结果:一行一列卡塔尔国 
* @param @param sql
* @param @param params
* @param @return    设定文件 
* @return Object    重返类型 
* @throws 
*/
public Object executeQuerySingle(String sql, Object[] params){
return jdbcBaseUtil.executeQuerySingle(sql, params);
}

    xmlns:xsi="" xmlns:aop=""

/**
*
* @author 刘军
* @date 2016-3-19 上午9:08:05 
* @version V1.0  
* @Title: findSimpleRefResult 
* @Description: TODO(通过反射机制查询单条记录卡塔尔 
* @param @param sql
* @param @param params
* @param @param cls
* @param @return    设定文件 
* @return T    再次来到类型 
* @throws 
*/
public <T> T findSimpleRefResult(String sql, List<Object> params,Class<T> cls) {

    xsi:schemaLocation="

//return JdbcBaseUtil.findSimpleRefResult(sql, params, cls);
return null;
}
/**
*
* @author 刘军
* @date 2016-3-19 上午9:13:39 
* @version V1.0  
* @Title: findMoreRefResult 
* @Description: TODO( 通过反射机制查询多条记下State of Qatar 
* @param @param sql
* @param @param params
* @param @param cls
* @param @return    设定文件 
* @return List<T>    重回类型 
* @throws 
*/
public <T> List<T> findMoreRefResult(String sql, List<Object> params,
Class<T> cls) {
return jdbcBaseUtil.findMoreRefResult(sql, params, cls);
}
/**
*
* @author 刘军
* @date 2016-3-19 上午11:03:06 
* @version V1.0  
* @Title: excuteQuery 
* @Description: TODO(获取结果集,并将结果放在List中卡塔尔 
* @param @param sql
* @param @param params
* @param @return    设定文件 
* @return List<Object>    再次来到类型 
* @throws 
*/
public List<Object> excuteQuery(String sql, Object[] params){
return jdbcBaseUtil.excuteQuery( sql, params);
}
/**
*
* @author 刘军
* @date 2016-3-19 上午11:03:03 
* @version V1.0  
* @Title: executeQuery 
* @Description: TODO(统一的select语句,为了能够访谈结果集,将结果集放入ArrayList,卡塔尔(قطر‎ 
* @param @param sql
* @param @param parameters
* @param @return    设定文件 
* @return ArrayList    再次来到类型 
* @throws 
*/
public ArrayList executeQuery(String sql, String[] parameters){
return jdbcBaseUtil.executeQuery( sql, parameters);
}

 /spring-beans.xsd">

}

 


    <!-- 配置DBCP连接池 -->

package light.mvc.dao.impl;

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

import java.lang.reflect.Field;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

        <property name="driverClassName" value="com.mysql.jdbc.Driver" />

import org.springframework.stereotype.Repository;

        <property name="url" value="jdbc:mysql:///spring3_day02" />

import light.mvc.dao.JdbcBaseDao;
import light.mvc.framework.connectUtil.ConnUtil;
import light.mvc.framework.connectUtil.DataSourceConnUtil;
import light.mvc.framework.connectUtil.jdbcUtl.ObjectMapper;
import light.mvc.framework.connectUtil.jdbcUtl.SqlParameter;

        <property name="username" value="root" />

@Repository
public class JdbcBaseDaoImpl implements JdbcBaseDao {
/**
* 获取连接
*/
static {
getConnection();
}
/**
* @author 刘军
* @date 2016-3-19 上午11:14:17 
* @version V1.0  
* @Title: getStatement 
* @Description: TODO( ) 
* @param @return
* @param @throws SQLException    设定文件 
* @return Connection    重临类型 
* @throws 
*/
public Connection getStatement() throws SQLException {
Connection connection = null;
Statement statement = null;
// 仅当statement失效时才再度成立
if (statement == null || statement.isClosed() == true) {
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}
return connection;
}

        <property name="password" value="Admin123" />

/**
*
* @Title: getConnection 
* @Description: TODO(获得数据库连接State of Qatar 
* @param @return    设定文件 
* @return Connection    再次来到类型 
* @throws 
*/
public static Connection getConnection() {
Connection connection = null;
try {
/**
* 从连接池获取连接
*/
connection = DataSourceConnUtil.getConnection();
if (connection == null) {
/**
* 直接连接数据库
*/
connection = ConnUtil.getConn();
}
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}

    </bean>

/**
*
* @Title: update 
* @Description: TODO(更新:update) 
* @param @param sql
* @param @param obj
* @param @param isGenerateKey
* @param @return    设定文件 
* @return boolean    重返类型 
* @throws 
*/
public boolean update(String sql, Object[] obj, boolean isGenerateKey) {
Connection conn = null;
PreparedStatement pstmt = null;
boolean bFlag = false;
try {
conn = JdbcBaseDaoImpl.getConnection();
pstmt = isGenerateKey ? conn.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS) : conn
.prepareStatement(sql);
for (int i = 0; i < obj.length; i ) {
pstmt.setObject(i 1, obj[i]);
}
conn.setAutoCommit(false卡塔尔;//JDBC 事务管理
int i = pstmt.executeUpdate();
conn.commit(State of Qatar;//JDBC 事务管理
if (i > 0)
bFlag = true;
} catch (SQLException ex) {
ex.printStackTrace();
try {
conn.rollback(卡塔尔;//JDBC 事务管理
} catch (SQLException e) {
e.printStackTrace();
}
} finally {
try {
conn.close();
pstmt.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return bFlag;
}
/**
*
* @Title: updateByPreparedStatement  增加、删除、改
* @Description: TODO(增加、删除、改) 
* @param @param sql
* @param @param params
* @param @return    设定文件 
* @return boolean    再次回到类型 
* @throws 
*/
public boolean updateByPreparedStatement(String sql, List<Object> params) {
boolean flag = false;
Connection connection = null;
PreparedStatement pstmt = null;
int result = -1;
try {
connection = JdbcBaseDaoImpl.getConnection();
pstmt = connection.prepareStatement(sql);
int index = 1;
if (params != null && !params.isEmpty()) {
for (int i = 0; i < params.size(); i ) {
pstmt.setObject(index , params.get(i));
}
}
result = pstmt.executeUpdate();
connection.commit(State of Qatar;//JDBC 事务管理
flag = result > 0 ? true : false;
} catch (SQLException e) {
try {
connection.rollback(卡塔尔(قطر‎;//JDBC 事务管理
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
pstmt.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}

    <!-- 定义JDBCTemplate类 -->

}
return flag;
}

    <!-- 为JDBC模板注入连接池属性 -->

/**
* insert update delete SQL语句的施行的联合方法
*
* @param sql
* SQL语句
* @param params
* 参数数组,若未有参数则为null
* @return 受影响的行数
*/
public int executeUpdate(String sql, Object[] params) {
PreparedStatement preparedStatement = null;
// 受影响的行数
int affectedLine = 0;
Connection connection = null;
try {
// 获得再三再四
connection = JdbcBaseDaoImpl.getConnection();
// 调用SQL
preparedStatement = connection.prepareStatement(sql);
// 参数赋值
if (params != null) {
for (int i = 0; i < params.length; i ) {
preparedStatement.setObject(i 1, params[i]);
}
}
// 执行
affectedLine = preparedStatement.executeUpdate();
connection.commit(卡塔尔国;// 提交业务
} catch (SQLException e) {
System.out.println(e.getMessage());
try {
connection.rollback(卡塔尔(قطر‎;//JDBC 事务管理
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
// 释放财富
close(connection, preparedStatement, null);
}
return affectedLine;
}

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >

/**
*
* @Title: query 
* @Description: TODO(这里用一句话描述这些方法的效劳State of Qatar 
* @param @param sql
* @param @param obj
* @param @param mapper
* @param @return    设定文件 
* @return List<? extends Object>    再次回到类型 
* @throws 
*/
public List<? extends Object> query(String sql, Object[] obj,
ObjectMapper mapper) {
Object o = null;
List<Object> list = new ArrayList<Object>();
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = JdbcBaseDaoImpl.getConnection();
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < obj.length; i ) {
pstmt.setObject(i 1, obj[i]);
}
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
o = mapper.mapping(rs);
list.add(o);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
pstmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return list;
}
/**
*
* @Title: returnTableCount 
* @Description: TODO( select count(*卡塔尔from table 的总的数量量条数卡塔尔 
* @param @param table
* @param @return    设定文件 
* @return int    再次回到类型 
* @throws 
*/
public int returnTableCount(String table){
String sql="select count(*) as counts from " table "";
Connection conn = null;
ResultSet resultSet = null;
Statement pstmt = null;
int count=0;
try {
conn = JdbcBaseDaoImpl.getConnection();
pstmt = conn.createStatement();
resultSet=pstmt.executeQuery(sql);
if(resultSet.next()){
count=resultSet.getInt("counts");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
resultSet.close();
pstmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return count;

        <property name="dataSource" ref="dataSource" />

}

    </bean>

本文由ca88发布,转载请注明来源

关键词: 组件 类型 方法 框架