在这里给大家分享一个java的分页插件,valuelist,具体源代码可以查看附件。

首先介绍下该插件有什么功能:

1、不用我们在sql中写具体的分页语句,如mysql,我们不必去写limit ?,?这样的代码,这些代码组件会自动拼装上

2、支持自定义多条件查询,即如果我参数中不传要查询的字段值,在查询时会去掉该查询条件,当然这要在sql语句中进行一个简单的配置。

基本功能就是上述两种,个人认为还是比较好用的,尤其是第二点,当我们综合查询时,不确定哪些字段要查询时,是非常方便的。在网上搜valuelist,可能还会有文章介绍它还带有相应的页面标签,我们使用的是不支持标签的,仅用来方便查询。

下面介绍使用方法:首先说明下该组件是将sql写到xml文件中的

1、首先这个组件可能依赖的jar包有以下几个,以gradle语法列出:

compile ("commons-beanutils:commons-beanutils:1.9.1")
compile ("org.springframework:spring-jdbc:4.0.0.RELEASE")
compile ("org.springframework:spring-context:4.0.0.RELEASE")
compile ("org.slf4j:slf4j-api:1.7.7") //同时加上你项目中log的实现,如log4j
compile("mysql:mysql-connector-java:5.1.29")
compile("com.alibaba:druid:1.0.15") //也可以换成别的连接池,如c3p0、dbcp等

因为该组件是依赖于spring的,所以需要引入spring相关jar包。

2、将该组件源代码(见附件)复制进入项目中,或者自己打个jar包放入项目中

3、配置数据库连接池,以下仅为参考,自己可配置自己项目使用的连接池

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close" init-method="init"><property name="driverClassName" value="${datasource.driverClassName}" /><property name="url" value="${datasource.url}" /><property name="username" value="${datasource.username}" /><property name="password" value="${datasource.password}" /><property name="initialSize" value="${datasource.initial.size}" /><property name="minIdle" value="${datasource.min.idle}" /><property name="maxActive" value="${datasource.max.active}" /><!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="${datasource.max.wait}" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${datasource.time.eviction}" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="${datasource.min.eviction}" /><property name="validationQuery" value="${datasource.validation.query}" /><property name="testWhileIdle" value="${datasource.test.while.idle}" /><property name="testOnBorrow" value="${datasource.test.borrow}" /><property name="testOnReturn" value="${datasource.test.return}" /></bean>

4、配置valuelist用到的类,可以新建一个valuelist.xml放入你项目spring扫描的配置文件路径下

<bean id="rowMapper" class="org.springframework.jdbc.core.ColumnMapRowMapper" /><bean id="sqlPagingSupport" class="net.mlw.vlh.adapter.jdbc.util.SqlPagingSupport"><!--配置使用的数据库,只测试过mysql,其余数据库未测试,可修改源代码增加自己实现--><property name="database" value="mysql" />
</bean><!--下面配置具体查询的类,也是配置sql语句的地方-->
<bean id="getShareListByUserIdAndCate"class="net.mlw.vlh.adapter.jdbc.spring.SpringDaoValueListAdapter"><!--指定数据库连接池--><property name="dataSource" ref="dataSource" /><property name="rowMapper" ref="rowMapper" /><property name="sqlPagingSupport" ref="sqlPagingSupport" /><!--默认每页记录数--><property name="defaultNumberPerPage" value="20" /><!--执行查询时,是否打印sql语句,调试时可打开该选项--><property name="showSql" value="true" /><!--配置要查询的sql语句--><property name="sql"><value>
<!--可以看到以下条件都被/~~/包住了,这里面的条件即你传入该参数就根据该参数查询,你不传的话就不根据该条件查询。请注意:冒号前面的名字,如authorId,要和大括号里面的名字保持一致--><![CDATA[select `id`,`content`,`tag`,`type`,`pId`,`pData`,`authorId`,`authorName`,`createTime`,cmtCnt as cmtCount  from share_[table] where 1=1 /~authorId: and authorId = {authorId} ~//~cateId: and cateId = {cateId} ~/order by createTime desc]]></value></property></bean>
<!--若有另外查询,则再定义个类--><bean id="getUserByUserName"class="net.mlw.vlh.adapter.jdbc.spring.SpringDaoValueListAdapter"><property name="dataSource" ref="dataSource" /><property name="rowMapper" ref="rowMapper" /><property name="sqlPagingSupport" ref="sqlPagingSupport" /><property name="defaultNumberPerPage" value="20" /><property name="showSql" value="true" /><property name="sql"><value><!--像这种不/~~/里面的条件,则为每次都会执行的条件,所以realName这个参数是必须传入的,而userName则可以不传入,不传即不根据此条件查询--><![CDATA[select `id`,`userName`,`realName`,`idNum`,`signature`,`desc` from user where 1=1                           realName={realName}               /~userName: AND `userName` like '%[userName]%' ~/  ]]></value></property></bean><!--配置完了sql语句,还需要有以下的一个小小的配置-->
<bean id="valueListHandler" class="net.mlw.vlh.DefaultValueListHandlerImpl"><property name="config.adapters"><map><!-- 将刚才配置的sql的bean注入到这里,在代码调用时,则需要使用这里配置的key值 --><entry key="getUserByUserName" value-ref="getUserByUserName" /><entry key="getShareListByUserIdAndCate" value-ref="getShareListByUserIdAndCate" /></map></property></bean>

以上即为配置文件,请保证项目启动时,spring能够扫描到以上配置,我们配置的net.mlw.vlh.adapter.jdbc.spring.SpringDaoValueListAdapter类可以想象为一个个的查询方法,不同的sql则定义多个这样的类。

5、最后,我们看代码的使用

如我们使用第一个getShareListByUserIdAndCate查询:

/*** 注入要使用的类,即我们在配置文件中配置的 net.mlw.vlh.DefaultValueListHandlerImpl*/@Autowiredprivate ValueListHandler handler;public void getShare(int pageIndex,int pageSize){//定义map存放查询参数Map<String,Object> paras=new HashMap<String, Object>();//设置查询页码,须将pageIndex转换为stringparas.put("pagingPage", String.valueOf(pageIndex));//设置每页记录数paras.put("pagingNumberPer",String.valueOf(pageSize));//设置sql中的查询参数,key即配置文件sql语句中{}中的值,如果sql配置中查询条件没有在/~~/之内,则必须传入;paras.put("authorId","123");paras.put("cateId","567");//执行查询,第一个参数即我们最后配置的valueListHandler中注入的map中对应getShareListByUserIdAndCate这个sql bean配置的key值//即 <entry key="getShareListByUserIdAndCate" value-ref="getShareListByUserIdAndCate" /> 这里对应的keyValueList list=handler.getValueList("getUserByUserName", new ValueListInfo(paras));//以上ValueList对象里包含很多字段,如记录总数,查询条件,查询结果等//查询结果,每条记录以Map形式返回List<Map<String,Object>> res=list.getList();//记录总数int count=list.getValueListInfo().getTotalNumberOfEntries();}

以上就是该组件的使用方式,在进行很多个条件查询时,确实带来了很大的方便;若是以上有什么叙述的不到位的,或者不明白的,请指出,我进行改正。

  • valuelist.zip (77 KB)
  • 描述: valuelist源代码
  • 下载次数: 13

java分页插件valuelist相关推荐

  1. java分页插件PageHelper的内置list数据操作失败

    问题描述: java分页插件PageHelper的内置list数据在hanlder处理器中获取失败,但是测试确通过了,如下图 但是测试代码成功 @ContextConfiguration(locati ...

  2. java分页插件使用_MyBatis-Plus之分页插件使用

    分页在企业级系统必不可少,特别是早年开发人员,在sql里写limit.后来随着技术不断更新升级,向limit我们无需手写,可以通过插件来实现,插件本质上就是limit(在查询语句后面添加limit来做 ...

  3. java分页插件使用_mybatis的分页插件使用方法

    1.下载所需要的jar包,如果使用maven可以在maven中添加依赖: 插件的实现原理: 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的j ...

  4. #displaytag:一个简易的Java分页插件(无需其他的前端分页插件) @FDDLC

    一.话题引入: 在开发一个某某系统时,经常要用到分页. 比如PageHelper,它是后端分页插件,如果要在前端展示分页效果,要么自己编写前端的分页逻辑,要么再上一个前端分页插件. 而displayt ...

  5. java分页(java分页插件pagehelper)

    在Java中如何用Serverlet实现分页查看数据库 serverlet跟分页关系不大吧.想得到可以啊,看查询语句怎么写的了.最好在查询语句中使用分页查询,页面上做一下获取页数什么的处理.全部查询在 ...

  6. Jquery 分页插件, 带你一步一步接入后台数据

    目录 一.效果图 二.分页 js 源码讲解 三.分页样式 css 源码 三.实现前后台对接 一.效果图 二.分页 js 源码讲解 新建一个 js 文件,基本直接复制粘贴就行,记得引入到需要的页面中. ...

  7. java delegate怎么写_美团面试官:你说你们公司的Mybatis分页插件是你写的,给我说说它的设计原理?...

    来源:http://my.oschina.net/zudajun 大多数框架,都支持插件,用户可通过编写插件来自行扩展功能,Mybatis也不例外. 我们从插件配置.插件编写.插件运行原理.插件注册与 ...

  8. java 分页_Spring Boot + MyBatis 如何借助PageHelper插件实现分页效果

    概述 上文中已经介绍了Spring和MyBatis的整合,在上文的基础上我们加入了PageHelper这个插件,来实现MyBatis列表查询的分页效果 PageHelper是啥 PageHelper是 ...

  9. Java使用lambda进行分页,SpringBoot(八):整合mybatis,通用mapper,分页插件,lambda,Logger,junit用法...

    本文作者:低调小熊猫 转载声明:自由转载-非商用-非衍生-保持署名,非商业转载请注明作者及出处,商业转载请联系作者本人qq:2696284032 整合demo 配置依赖 tk.mybatis mapp ...

最新文章

  1. python的redis数据库连接与使用
  2. hadoop java client_hadoop3 Java client客户端kerberos认证
  3. 基于SSVEP-EOG的混合BCI用于机械臂控制
  4. 梦有感 2009-10
  5. ORA-29786: SIHA attribute GET failed with error
  6. CodeForces - 1535E Gold Transfer(树上倍增+交互)
  7. Docker中拉取ActiveMQ镜像安装运行网页无法访问已解决
  8. 打码(C语言)常见粗心小错误 (前方高能,一定要点)
  9. java里不支持post请求_java – Spring Boot – 不支持请求方法’POST’
  10. 华为哪款手表支持鸿蒙,华为Watch 3最早或于5月发布 采用鸿蒙系统并支持eSIM
  11. SQLite:注意查询条件中空格的影响
  12. Big FAT32 Format Pro(U盘格式化工具)官方正式版V2.0 | u盘无法格式化怎么办 | 万能u盘修复工具下载 | 突破FAT文件系统4GB的限制
  13. 倩女幽魂7月20日服务器维护,倩女幽魂手游2021年7月22日更新公告
  14. NIOS II 烧写epcs总结
  15. 模拟停车场管理系统(栈和队列的应用)
  16. 苹果设邮箱的126服务器,Mac系统中的邮箱创建126邮箱帐户的方法
  17. 深度:解密50+中老年电视/直播购物最新变化趋势—电视购物转型+直播购物崛起
  18. 赛尔号星球大战游戏攻略
  19. idea 设置编辑器 table 全部显示
  20. PHP中使用compact函数

热门文章

  1. Adobe Acrobat 给pdf添加多级书签(制作目录)
  2. 武汉大学计算机学院推荐免试,武汉大学计算机学院2013年应届本科毕业生推荐免试研究生计分细则...
  3. jedis简介和使用
  4. 【医学信息学】《统计学习导论-基于r应用》的学习总结
  5. 【数字设计验证】System Verilog(sv)稍微进阶的笔记(一)
  6. 用Cauchy积分研究解析函数
  7. 鸿蒙和鲲鹏有什么不同,鲲鹏、昇腾、鸿蒙、云……带你零距离接触不一样的湘江鲲鹏...
  8. 关于中国大陆地区2021年9月和12月PMI认证考试合并举行的通知
  9. 戴尔计算机显卡型号,戴尔笔记本电脑型号有哪些 戴尔笔记本电脑推荐【详解】...
  10. android stuido拨打电话,Android Studio3.5开发电话拨号器