lyyf83303418 2010-11-21 16:11
浏览 280
已采纳

条件查询分页问题

小弟刚出道的JAVA程序员,遇到了一个分页显示问题,全部查询的时候,分页没什么问题,可是面对一个多条件的查询分页显示,搞了一天的测试,知道了什么问题,但是去解决,以失败告终。好了废话不多说了,贴出来大家看看#11
头一次发帖子,见谅~ ~!
[img]http://dl.iteye.com/upload/attachment/352443/40f501dc-e2f2-3fbb-94e8-eacdbbfb5a71.jpg[/img]
分2种情况:
1. 都不填写值时,点击搜索,显示所有信息,并分页。
2. 4选1,4选2,4选3 或者都填写,点击搜索,根据所填值或者选择的值进行分页显示。
问题是,按理想的出结果了,但是,跳完action回来之后,下一页,数字转化异常。
限于文字的限制,只贴impl的代码:
JAVA代码 daoImpl

[img]http://dl.iteye.com/upload/attachment/352452/bff642a4-7e80-3e14-833f-28e19e4f38e5.jpg[/img]

JAVA代码 serviceImpl

[img]http://dl.iteye.com/upload/attachment/352454/ed9f560e-3604-376b-b161-244ddd93dead.jpg[/img]

JAVA代码 action

[img]http://dl.iteye.com/upload/attachment/352456/a3afe7fa-9e00-35e4-a02c-a057254991cf.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/352469/d9f92cc8-070a-3618-bfaf-7d3d4149167f.jpg[/img]

jsp页面

[img]http://dl.iteye.com/upload/attachment/352463/9aaa8563-f813-3bb4-b206-f59b50873c08.jpg[/img]

完毕。

现在面临的问题是,点击下一页就报异常,在分页显示成功的情况下,上面那3个文本框和一个下拉中,没有填写或者选择的数据。
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:415)
java.lang.Integer.parseInt(Integer.java:497)
com.eqixiu.action.FenYeAction.selectTuan(FenYeAction.java:86)

意思是那个 int type=Integer.parseInt(request.getParameter("type"));的错。

问题分析:1,下一页,参数的传法。2,使用js控制上面框框的值吗?

  • 写回答

6条回答 默认 最新

  • xiaoyuebata 2010-11-29 17:37
    关注

    你是用Hibernate实现数据库访问的吧,Hibernate中专门有一个API是为了实现动态查询的功能的。Criteria.
    [quote])特殊的HQL语句:
    1>
    org.hibernate Interface Criteria
    org.hibernate.criterion Interface Criterion
    org.hibernate.criterion.Restrictions

        Criteria criteria=session.createCriteria(User.class);//查询User的所有对象,等价与createQuery("from User");
        List<User> list=criteria.list();
        Criterion c1=Restrictions.eq("name","java");//表示的是一种相等条件(典型的工厂方法);
            前面是属性名.后面是对属性值的限制
        Criterion c2=Restions.between("salary",10000,20000);
        Criterion c3=Restrictions.lt();//表示的是一种小于的条件
        criteria.add(c1);
        criteria.add(c2);//add之后相当与在where语句之后增加了两个限制条件
        这样的做法适合与动态查询的语句:比如查询满足特定条件的产品,只要判断某个条件是否填写,填写之后
        生成对应的Criterion,然后加入到对应的Criteria当中即可,可以动态的增加SQL语句的Where子句
        的限制条数,如果直接用HQL或SQL语句查询的话,则要不停的在代码中修改查询语句.
    
        2>如何得到POJO的某个属性的值,而这个值未有数据库的表的字段与其对应
            formula里出现的只能是表名,或者是字段名,绝对不能出现属性名
            A:通过公式来换算 
                如果POJO的某个属性在数据库中不包含字段值,但是想通过其他的属性加上一个公式来换算出另外一个
                属性的值.比如User类中有员工的工资以及员工的奖金.奖金想通过SQL语句直接换算出来,则要配置文件中加入
                <property name="comm" formula="_salary*0.2"/>
            B:通过子查询来实现
                计算某个部门的员工的个数(在Dept中增加一个字段integer empNum)
                映射文件的编写:  
                <property name="empNum" formula="(select count(*) from t_emp where e.dep_id=_id)"/>
                //注意子查询的时候一定要加上小括号
                注意:where子句后的限制条件都是列名而不是属性名
                代码的实现:
                Query query=session.createQuery("from Dept");
            注意:Hibernate中有个Bug,数据库中的字段名是不能以"_"开头的,否则在做子查询的时候会造成查询结果的错误
                如果上面的"_id"不加入別名的话,则该字段默认的別名是当前查询的表的字段,即t_emp的字段值,所以查询的
                结果只会有1个.但实际上是要查询出的t_dept的id字段的值,如果不加下滑线,则Hibernate会自动帮你在生成
                字段前会加上最外层的表的别名.dept_0.id.[/quote]
    

    可以根据查询的条件是否为空,通过criteria.add(obj)来进行条件查询,当然可以配合分页一起做啦,腾讯QQ查询好友的功能就是这样实现的,你自己研究看看。呵呵·希望能帮助你·

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。