- 浏览: 663183 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
为了更好地提高数据库分页查询的效率,bboss持久层在ConfigSQLExecutor和SQLExecutor两个组件中分别提供了一组实用的more分页查询接口。本文着重介绍more分页查询api的使用以及more分页查询和分页标签库结合的一些特殊特性。
1.概述
到目前为止bboss持久层分别提供了以下三种分页查询API:
第一种 普通分页查询操API
这组API自动根据查询sql语句执行总记录数获取和当前页记录集获取两个操作,对应于ConfigSQLExecutor和SQLExecutor中以queryListInfo开头的方法。这组API中返回的ListInfo对象中包含总记录数和当页记录数两个信息,除非没有查询到数据,否则一定有一页数据返回,也就是说当分页起始位置超过总记录数时,就自动返回最后一页数据;当起始位置为0或者小于零时将返回第一页数据。
第二种 带总记录数或者传入总记录数查询sql语句的API
这组API根据传入是总记录数还是总记录数查询sql所做的操作不一样:如果传入的是总记录数,那么这组API将只做当前页记录查询操作,不做总记录数查询操作;如果传入的是总记录数查询sql,那么除了要做当前页记录查询操作外,还要通过总记录数查询sql获取总记录数,也就是说对应的API要执行两次db操作,这种情况相对于普通分页查询API,传入的总记录数查询SQL比普通分页查询API中自动生成的总记录数查询sql效率要高很多。这组api同样对应于ConfigSQLExecutor和SQLExecutor中以queryListInfo开头的方法,只是其中多了totalsize或者totalsizesql参数。这组API中返回的ListInfo对象中包含总记录数和当页记录数两个信息,除非没有查询到数据,否则一定有一页数据返回,也就是说当分页起始位置超过总记录数时,就自动返回最后一页数据;当起始位置为0或者小于零时将返回第一页数据。
第三种 More分页查询API
More分页查询API也就是本文要介绍的功能,这组API只根据传入的当前页记录起始位置和每页最大记录数获取当前页的数据集,不会做总记录数查询,也就是说只做一次db操作,因此more分页查询的效率最好,但是无法提供总记录数据信息,只要在总记录数不是很重要的情况下就可以使用more分页查询方法。如果对应的起始位置没有查询到数据集将不返回任何数据,如果有数据则返回带当页数据的ListInfo对象,并且listInfo对象中没有总记录数信息,也就是调用listInfo.getTotalSize()方法始终返回0。那么More分页接口返回数据时,我们怎么判断已经到了最后一页或者是没有数据呢,首先如果获取数据起始位置为0,当调用listInfo.getResultSize()方法返回0时表示没有数据;如果获取数据起始位置大于0,当调用listInfo.getResultSize()方法返回值为0或者返回值小于每页需获取记录数时表示已经到达记录的最后一页。
普通分页查询操API和带总记录数或者传入总记录数查询sql语句API的使用方法请参考博文《bboss持久层分页接口使用示例》,本文着重介绍more分页查询api的使用以及more分页查询和分页标签库结合的一些特殊特性。
2.More分页查询api
下面列出more分页的对应ConfigSQLExecutor组件中所有api:
Class<?> beanType参数对应要返回的记录对应的对象类型,sqlname参数对应ConfigSQLExecutor加载的xml sql配置文件中的sql配置名称,Object... fields对应原生sql的可变长参数数组;,Object bean参数得属性对应承载了sqlname参数对应的sql语句需要的所有参数值和控制变量值,offset对应分页数据起始位置,pagesize参数指定了当页需要获取的记录数。NullRowHandler 和 RowHandler 类型参数对应了用户自定义处理记录的行处理器。
下面列出more分页的对应SQLExecutor组件中所有api:
Class<?> beanType参数对应要返回的记录对应的对象类型,sql参数对应SQLExecutor要执行的sql语句,Object... fields对应原生sql的可变长参数数组;,Object bean参数得属性对应承载了sql参数对应的sql语句需要的所有参数值和控制变量值,offset对应分页数据起始位置,pagesize参数指定了当页需要获取的记录数。NullRowHandler和 RowHandler 类型参数对应了用户自定义处理记录的行处理器。
3.more查询分页api使用示例
ConfigSQLExecutor:
SQLExecutor:
4.more分页查询与分页标签库结合使用
more分页查询的使用方法和前面的两种分页查询的方法使用方式是一样的,唯一的区别是返回的ListInfo对象实例datas被调用listInfo的setMore(true)方法标识为more查询返回的listInfo对象了。这个more状态标识将影响分页标签的Index分页导航标签展示行为,同时分页标签中获取到总记录数值为0,但是这个标识不会影响我们分页标签的编程使用方法,通过以下两个图对比就可以看出二者Index导航效果的区别:
more分页查询的效果
非more分页查询的效果
上面的导航都是通过以下的index标签用法输出的:
<pg:index tagnumber="10" sizescope="5,10,20,50,100"/>
为了配合在pager标签上提供的statement属性指定的sql直接从数据库查询分页数据时也能使用more分页查询,我们在pager标签上提供了moreQuery属性,moreQuery为true时将使用more分页查询获取数据,false不使用,默认为false。moreQuery属性的使用方法如下:
1.概述
到目前为止bboss持久层分别提供了以下三种分页查询API:
第一种 普通分页查询操API
这组API自动根据查询sql语句执行总记录数获取和当前页记录集获取两个操作,对应于ConfigSQLExecutor和SQLExecutor中以queryListInfo开头的方法。这组API中返回的ListInfo对象中包含总记录数和当页记录数两个信息,除非没有查询到数据,否则一定有一页数据返回,也就是说当分页起始位置超过总记录数时,就自动返回最后一页数据;当起始位置为0或者小于零时将返回第一页数据。
第二种 带总记录数或者传入总记录数查询sql语句的API
这组API根据传入是总记录数还是总记录数查询sql所做的操作不一样:如果传入的是总记录数,那么这组API将只做当前页记录查询操作,不做总记录数查询操作;如果传入的是总记录数查询sql,那么除了要做当前页记录查询操作外,还要通过总记录数查询sql获取总记录数,也就是说对应的API要执行两次db操作,这种情况相对于普通分页查询API,传入的总记录数查询SQL比普通分页查询API中自动生成的总记录数查询sql效率要高很多。这组api同样对应于ConfigSQLExecutor和SQLExecutor中以queryListInfo开头的方法,只是其中多了totalsize或者totalsizesql参数。这组API中返回的ListInfo对象中包含总记录数和当页记录数两个信息,除非没有查询到数据,否则一定有一页数据返回,也就是说当分页起始位置超过总记录数时,就自动返回最后一页数据;当起始位置为0或者小于零时将返回第一页数据。
第三种 More分页查询API
More分页查询API也就是本文要介绍的功能,这组API只根据传入的当前页记录起始位置和每页最大记录数获取当前页的数据集,不会做总记录数查询,也就是说只做一次db操作,因此more分页查询的效率最好,但是无法提供总记录数据信息,只要在总记录数不是很重要的情况下就可以使用more分页查询方法。如果对应的起始位置没有查询到数据集将不返回任何数据,如果有数据则返回带当页数据的ListInfo对象,并且listInfo对象中没有总记录数信息,也就是调用listInfo.getTotalSize()方法始终返回0。那么More分页接口返回数据时,我们怎么判断已经到了最后一页或者是没有数据呢,首先如果获取数据起始位置为0,当调用listInfo.getResultSize()方法返回0时表示没有数据;如果获取数据起始位置大于0,当调用listInfo.getResultSize()方法返回值为0或者返回值小于每页需获取记录数时表示已经到达记录的最后一页。
普通分页查询操API和带总记录数或者传入总记录数查询sql语句API的使用方法请参考博文《bboss持久层分页接口使用示例》,本文着重介绍more分页查询api的使用以及more分页查询和分页标签库结合的一些特殊特性。
2.More分页查询api
下面列出more分页的对应ConfigSQLExecutor组件中所有api:
public ListInfo moreListInfoWithDBNameByRowHandler(RowHandler rowhandler,Class<?> beanType,String dbname, String sqlname, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoWithDBNameByNullRowHandler(NullRowHandler rowhandler,String dbname, String sqlname, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoWithDBName(Class<?> beanType,String dbname, String sqlname, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoByRowHandler(RowHandler rowhandler,Class<?> beanType, String sqlname, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoByNullRowHandler(NullRowHandler rowhandler, String sqlname, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoBeanWithDBNameByRowHandler(RowHandler rowhandler,Class<?> beanType,String dbname, String sqlname, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBeanWithDBNameByNullRowHandler(NullRowHandler rowhandler,String dbname, String sqlname, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBeanWithDBName(Class<?> beanType,String dbname, String sqlname, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBeanByRowHandler(RowHandler rowhandler,Class<?> beanType, String sqlname, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBeanByNullRowHandler(NullRowHandler rowhandler, String sqlname, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBean(Class<?> beanType, String sqlname, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfo(Class<?> beanType, String sqlname, long offset,int pagesize,Object... fields) throws SQLException
Class<?> beanType参数对应要返回的记录对应的对象类型,sqlname参数对应ConfigSQLExecutor加载的xml sql配置文件中的sql配置名称,Object... fields对应原生sql的可变长参数数组;,Object bean参数得属性对应承载了sqlname参数对应的sql语句需要的所有参数值和控制变量值,offset对应分页数据起始位置,pagesize参数指定了当页需要获取的记录数。NullRowHandler 和 RowHandler 类型参数对应了用户自定义处理记录的行处理器。
下面列出more分页的对应SQLExecutor组件中所有api:
public ListInfo moreListInfoWithDBNameByRowHandler(RowHandler rowhandler,Class<?> beanType,String dbname, String sql, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoWithDBNameByNullRowHandler(NullRowHandler rowhandler,String dbname, String sql, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoWithDBName(Class<?> beanType,String dbname, String sql, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoByRowHandler(RowHandler rowhandler,Class<?> beanType, String sql, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoByNullRowHandler(NullRowHandler rowhandler, String sql, long offset,int pagesize,Object... fields) throws SQLException public ListInfo moreListInfoBeanWithDBNameByRowHandler(RowHandler rowhandler,Class<?> beanType,String dbname, String sql, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBeanWithDBNameByNullRowHandler(NullRowHandler rowhandler,String dbname, String sql, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBeanWithDBName(Class<?> beanType,String dbname, String sql, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBeanByRowHandler(RowHandler rowhandler,Class<?> beanType, String sql, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBeanByNullRowHandler(NullRowHandler rowhandler, String sql, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfoBean(Class<?> beanType, String sql, long offset,int pagesize,Object bean) throws SQLException public ListInfo moreListInfo(Class<?> beanType, String sql, long offset,int pagesize,Object... fields) throws SQLException
Class<?> beanType参数对应要返回的记录对应的对象类型,sql参数对应SQLExecutor要执行的sql语句,Object... fields对应原生sql的可变长参数数组;,Object bean参数得属性对应承载了sql参数对应的sql语句需要的所有参数值和控制变量值,offset对应分页数据起始位置,pagesize参数指定了当页需要获取的记录数。NullRowHandler和 RowHandler 类型参数对应了用户自定义处理记录的行处理器。
3.more查询分页api使用示例
ConfigSQLExecutor:
ListInfo datas=executor.moreListInfoBean(AppBom.class,"queryListAppBom", offset, pagesize, appcondition);
SQLExecutor:
ListInfo datas=SQLExecutor.moreListInfoBean(AppBom.class,"select * from td_app_bom where id=#[id] and name like #[name]", offset, pagesize, appcondition);
4.more分页查询与分页标签库结合使用
more分页查询的使用方法和前面的两种分页查询的方法使用方式是一样的,唯一的区别是返回的ListInfo对象实例datas被调用listInfo的setMore(true)方法标识为more查询返回的listInfo对象了。这个more状态标识将影响分页标签的Index分页导航标签展示行为,同时分页标签中获取到总记录数值为0,但是这个标识不会影响我们分页标签的编程使用方法,通过以下两个图对比就可以看出二者Index导航效果的区别:
more分页查询的效果
非more分页查询的效果
上面的导航都是通过以下的index标签用法输出的:
<pg:index tagnumber="10" sizescope="5,10,20,50,100"/>
为了配合在pager标签上提供的statement属性指定的sql直接从数据库查询分页数据时也能使用more分页查询,我们在pager标签上提供了moreQuery属性,moreQuery为true时将使用more分页查询获取数据,false不使用,默认为false。moreQuery属性的使用方法如下:
<pg:pager scope="request" statement="select * from td_app_bom" dbname="bspf" moreQuery="true" desc="false" isList="false" > <pg:list> <pg:cell colName="struct_mode" maxlength="8" replace="..."/> </pg:list> <pg:index tagnumber="10" sizescope="5,10,20,50,100"/> </pg:pager>
发表评论
-
bboss 持久层数据源引用外部属性配置介绍
2018-12-29 21:47 965bboss 持久层数据源外部属性配置引用介绍 bboss持久 ... -
bboss持久层开启和关闭自带主键机制
2017-08-17 11:56 674bboss持久层开启和关闭自带主键机制 请访问文档: bbos ... -
bboss高性能db批处理功能使用方法介绍
2017-05-14 21:28 2044bboss持久层在v5.0.3.5中新增简单的高效的db批处理 ... -
bboss持久层公共sql片段定义和引用方法说明
2017-03-03 13:05 1045bboss持久层公共sql片段定义和引用方法说明 在配置sq ... -
最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
2016-12-15 10:24 1252在使用最新的mysql-connector-java 6.0. ... -
bboss标签库cell标签格式化数字实例
2016-11-24 10:38 835bboss标签库cell标签格式化数字实例 带double类 ... -
bboss标签库cell标签展示嵌套对象属性方法实例
2016-11-16 21:47 886bboss标签库cell标签展示 ... -
持久层快速入门系列一
2016-08-19 13:00 1193持久层快速入门 先在应用中导入bboss 持久层(bboss ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 852首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss 持久层sql xml配置文件编写和加载方法介绍
2016-04-05 13:14 1505bboss 持久层sql xml配置文件编写和加载方法介绍 通 ... -
bboss标签库list/map标签循环变量var属性使用说明
2015-12-24 09:17 1255bboss标签库list/map标签循环变量var属性使用说明 ... -
bboss持久层设置数据库查询fetchsize参数方法
2015-11-06 11:54 947bboss持久层设置数据库查询fetchsize参数方法 j ... -
bboss持久层快速入门教程
2015-09-19 13:49 1507bboss持久层快速入门教程,快速搭建bboss持久层的开 ... -
bboss持久层数据库适配器编写和注册方法
2015-02-06 15:21 905bboss持久层数据库适配器编写和注册方法 bboss持久层默 ... -
bboss模糊查询、动态sql、批处理资料荟萃
2015-01-30 12:03 2249bboss模糊查询、动态sql、批处理资料荟萃 bboss持 ... -
bboss逻辑标签实现if-else以及if-else if-else条件判断功能介绍
2014-11-25 23:43 1624采用bboss逻辑标签可以非常容易地实现if-else以及if ... -
bboss持久层查询元数据缓存机制开启方法
2014-11-18 12:03 951bboss持久层为了提升数据库查询操作性能,提供了对查 ... -
bboss标签实现列表中的动态列数据展示方法
2014-10-26 12:46 1188借助bboss标签库提供的list标签,我们可以非常方便地实现 ... -
bboss逻辑标签判断对象类型是否为给定的Class类型方法
2014-10-12 11:35 794在java代码中可以非常方 ... -
bboss数据库标签系列一 分页列表详细信息标签预编译sql查询数据
2014-10-09 12:54 1031本系列文章详细介绍bboss标签库的数据库标签具体使用方法,涉 ...
相关推荐
bboss es特点请访问: https://www.oschina.net/p/bboss-elastic
bboss会话共享培训文档,学习bboss不可多得的资料,值得拥有。
Elasticsearch rest client bboss介绍-Elastic2018中国开发者大会演讲稿
NULL 博文链接:https://yin-bp.iteye.com/blog/2174863
NULL 博文链接:https://yin-bp.iteye.com/blog/2325602
企业级 J2EE 开源框架:bboss
bboss+es基本操作示例,elasticsearch,bboss,java使用demo
NULL 博文链接:https://yin-bp.iteye.com/blog/1449900
NULL 博文链接:https://yin-bp.iteye.com/blog/926166
springboot集成ElasticsearchBboss调用Elasticsearch的案例分享
官方版本,亲测可用
bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会话共享,cxfwebservice服务发布和管理,hessian服务发布和管理等功能。另外还提供了符合中国式自由流的bboss activiti工作流...
资源目录: 项目源码(eshelloword.rar) bboss elasticsearch开发入门教程.wmv 搭建bboss elasticsearch开发环境.wmv 说明.txt
NULL 博文链接:https://yin-bp.iteye.com/blog/2177475
浙江移动BBOSS系统快速入门手册V0.1归类.pdf
NULL 博文链接:https://yin-bp.iteye.com/blog/1131637
bboss-datatran 由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能。
官方版本,亲测可用
基于bboss新版平台项目环境搭建和代码工具使用视频教程
基于java语言比mybatis更实用的orm框架,支持mysql、oracle、postgresql、sqlserver、db2、dm、mongodb