高级查询

确定对员工名称进行模糊查询,对工资进行范围查询。
1.创建query包,在包中创建EmployeeQueryObject类.
2.类中定义查询关键字,最低工资,最高工资.

   private String name;//模糊查询的关键字
    private BigDecimal minSalary;//最低工资
    private BigDecimal maxSalary;//最高工资

3.提供该三属性的getter,setter方法.
4.定义条件(conditions)以及参数(params)两个list集合.

  private List<String> conditions = new ArrayList<>();
    private List<Object> params = new ArrayList<>();

5.自定义方法,getQuery()以及getParameters()以及一个判断方法hasLength(String str).在getQuery()方法中,判断如果查询关键字name有值,如果最低工资不为空,如果最高工资不为空,进行如下操作.getParameters()方法中设置占位符参数,返回参数集合对象.haslength方法中进行基本操作.
return str!=null&&!"".equals(str.trim())

  public String getQuery(){
        if (hasLength(name)){
            conditions.add("name like ?");
            params.add("%"+name+"%");
        }
        if (minSalary != null){
            conditions.add("salary >= ?");
            params.add(minSalary);
        }
        if (maxSalary != null){
            conditions.add("salary <= ?");
            params.add(maxSalary);
        }
        if (conditions.size()==0){
            return "";
        }
        return " where "+ StringUtils.join(conditions," and ");
    }
    //设置占位符参数
    public List<Object> getParameters(){
        return params;
    }

    public boolean hasLength(String str){
        return str != null && !"".equals(str.trim());
    }

6.dao类中定义query方法.

 List<Employee> query(EmployeeQueryObject qo);

7.对应dao实现类(impl)中实现query方法.

 public List<Employee> query(EmployeeQueryObject qo) {
        String sql = "select * from t_employee"+ qo.getQuery();
        System.out.println("sql语句:"+sql);
        System.out.println("参数:"+qo.getParameters());
        return JdbcTemplate.query(sql,new BeanListHandler<Employee>(Employee.class),qo.getParameters().toArray());
    }

8.action中员工列表方法中

 //列表
    public String execute() throws Exception {
        ActionContext.getContext().put("employees",dao.query(qo));
        return LIST;
    }

9.测试类.

  @Test
    public void query() {
        EmployeeQueryObject qo = new EmployeeQueryObject();
        qo.setName("test");
        qo.setMinSalary(new BigDecimal("1000"));
        qo.setMaxSalary(new BigDecimal("1200"));
        List<Employee> list = dao.query(qo);
        for (Employee e : list) {
            System.out.println(e);
        }
    }

10.employee_list.jsp中.

<s:form namespace="/" action="employee">
    名称:<s:textfield name="qo.name"/>
    工资:<s:textfield name="qo.minSalary"/>
    到<s:textfield name="qo.maxSalary"/>
    <s:submit value="查询"/>

至此简单的高级查询就结束了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值