基於java的收藏排行功能之五:Dao層對資料庫的操作&資料表設計
阿新 • • 發佈:2018-12-09
接上一篇
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資料庫表的設計