1. 程式人生 > >基於java的收藏排行功能之五:Dao層對資料庫的操作&資料表設計

基於java的收藏排行功能之五:Dao層對資料庫的操作&資料表設計

接上一篇

11:dao介面

package cn.itcast.travel.dao;

import cn.itcast.travel.domain.Route;

import java.util.List;

public interface RouteDao {
    public List<Route> findRouteByPage(int cid, int startPage, int pageSize, String sname, int ihighPrice, int ilowPrice, int order);
    public int findTotalCount(int cid, String sname, int ihighPrice, int ilowPrice, int order);

}

12dao實現類:

package cn.itcast.travel.dao.impl;

import cn.itcast.travel.dao.RouteDao;
import cn.itcast.travel.domain.Route;
import cn.itcast.travel.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

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

public class RouteDaoImp implements RouteDao{
   private JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
  
    @Override
    public List<Route> findRouteByPage(int cid, int startPage, int pageSize, String cname, int highPrice, int lowPrice, int order) {
        String sql="select * from tab_route  WHERE 1=1 ";
        StringBuilder sb=new StringBuilder(sql);
        List params=new ArrayList();
        if(cid!=0){
            sb.append(" and cid = ? ");
            params.add(cid);
        }
        if(cname!=null&&cname.length()>0&&!"null".equals(cname)){
            sb.append(" and rname like ? ");
            params.add("%"+cname+"%");
        }
        if(highPrice!=-1){
            sb.append(" and price < ?");
            params.add(highPrice);
        }
        if(lowPrice!=-1){
                sb.append(" and price > ?");
                params.add(lowPrice);

        }
        if(order==1){
            sb.append(" order by count desc ");
        }else if(order==2) {
            sb.append(" order by rdate desc ");
        }else if(order==3){
            sb.append(" order by isThemeTour  desc ");
        }
        sb.append(" limit ? , ? ");
        params.add(startPage);
        params.add(pageSize);
        sql=sb.toString();


        System.out.println(sql);
        System.out.println(params);

        List<Route> list=template.query(sql,new BeanPropertyRowMapper<Route>(Route.class),params.toArray());
        System.out.println("RouteDaoImp的:"+list);
        return list ;
    }
 
    @Override
    public int findTotalCount(int cid, String cname, int highPrice, int lowPrice, int order) {
        String sql="select count(*) from tab_route  WHERE 1=1 ";
        StringBuilder sb=new StringBuilder(sql);
        List params=new ArrayList();
        if(cid!=0){
            sb.append(" and cid = ? ");
            params.add(cid);
        }
        if(cname!=null&&cname.length()>0&&!"null".equals(cname)){
            sb.append(" and rname like ? ");
            params.add("%"+cname+"%");
        }

        if(highPrice!=-1){
            sb.append(" and price < ?");
            params.add(highPrice);
        }
        if(lowPrice!=-1){
            sb.append(" and price > ?");
            params.add(lowPrice);

        }
        if(order==1){
            sb.append(" order by count desc ");
        }
        sql=sb.toString();

        Integer count = template.queryForObject(sql, Integer.class, params.toArray());
        return count;
    }

}

13資料庫表的設計