diff --git a/GoodsDao.java b/GoodsDao.java new file mode 100644 index 0000000..8d84b8d --- /dev/null +++ b/GoodsDao.java @@ -0,0 +1,132 @@ +package dao; + +import model.Goods; +import model.Recommend; +import org.apache.commons.dbutils.*; +import org.apache.commons.dbutils.handlers.*; +import utils.DataSourceUtils; + +import java.sql.SQLException; +import java.util.*; + +public class GoodsDao { + //select g.id,g.name,g.cover,g.price,t.name typename from recommend r,goods g,type t where type=2 and r.goods_id=g.id and g.type_id=t.id + public List> getGoodsList(int recommendType) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql="select g.id,g.name,g.cover,g.price,t.name typename from recommend r,goods g,type t where type=? and r.goods_id=g.id and g.type_id=t.id"; + return r.query(sql, new MapListHandler(),recommendType); + } + + public List> getScrollGood()throws SQLException{ + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); +// String sql="select g.id,g.name,g.cover,g.price from recommend r,goods g where type=1 and r.goods_id=g.id"; +// return r.query(sql, new MapHandler()); + String sql="select g.id,g.name,g.cover,g.price from recommend r,goods g where r.goods_id=g.id"; + return r.query(sql, new MapListHandler()); + } + public List selectGoodsByTypeID(int typeID,int pageNumber,int pageSize) throws SQLException { + if(typeID==0) + { + String sql="select * from goods limit ? , ?"; + QueryRunner r=new QueryRunner(DataSourceUtils.getDataSource()); + return r.query(sql,new BeanListHandler(Goods.class),(pageNumber-1)*pageSize,pageSize); + } + else + { + String sql="select * from goods where type_id=? limit ? , ?"; + QueryRunner r=new QueryRunner(DataSourceUtils.getDataSource()); + return r.query(sql,new BeanListHandler(Goods.class),typeID,(pageNumber-1)*pageSize,pageSize); + } + } + public int getCountOfGoodsByTypeID(int typeID) throws SQLException { + String sql=""; + QueryRunner r=new QueryRunner(DataSourceUtils.getDataSource()); + if(typeID==0) + { + sql="select count(*) from goods"; + return r.query(sql,new ScalarHandler()).intValue(); + } + else + { + sql="select count(*) from goods where type_id=?"; + return r.query(sql,new ScalarHandler(),typeID).intValue(); + } + } + public List selectGoodsbyRecommend(int type,int pageNumber,int pageSize) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + if(type==0) { + //当不添加推荐类型限制的时候 + String sql = " select g.id,g.name,g.cover,g.image1,g.image2,g.intro,g.price,g.stock,t.name typename from goods g,type t where g.type_id=t.id order by g.id limit ?,?"; + return r.query(sql, new BeanListHandler(Goods.class),(pageNumber-1)*pageSize,pageSize); + + } + + String sql = " select g.id,g.name,g.cover,g.image1,g.image2,g.intro,g.price,g.stock,t.name typename from goods g,recommend r,type t where g.id=r.goods_id and g.type_id=t.id and r.type=? order by g.id limit ?,?"; + return r.query(sql, new BeanListHandler(Goods.class),type,(pageNumber-1)*pageSize,pageSize); + } + public int getRecommendCountOfGoodsByTypeID(int type) throws SQLException { + if(type==0)return getCountOfGoodsByTypeID(0); + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "select count(*) from recommend where type=?"; + return r.query(sql, new ScalarHandler(),type).intValue(); + } + public Goods getGoodsById(int id) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "select g.id,g.name,g.cover,g.image1,g.image2,g.price,g.intro,g.stock,t.id typeid,t.name typename from goods g,type t where g.id = ? and g.type_id=t.id"; + return r.query(sql, new BeanHandler(Goods.class),id); + } + public int getSearchCount(String keyword) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "select count(*) from goods where name like ?"; + return r.query(sql, new ScalarHandler(),"%"+keyword+"%").intValue(); + } + public List selectSearchGoods(String keyword, int pageNumber, int pageSize) throws SQLException{ + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "select * from goods where name like ? limit ?,?"; + return r.query(sql, new BeanListHandler(Goods.class),"%"+keyword+"%",(pageNumber-1)*pageSize,pageSize); + } + public boolean isScroll(Goods g) throws SQLException { + return isRecommend(g, 1); + } + public boolean isHot(Goods g) throws SQLException { + return isRecommend(g, 2); + } + public boolean isNew(Goods g) throws SQLException { + return isRecommend(g, 3); + } + private boolean isRecommend(Goods g,int type) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "select * from recommend where type=? and goods_id=?"; + Recommend recommend = r.query(sql, new BeanHandler(Recommend.class),type,g.getId()); + if(recommend==null) { + return false; + }else { + return true; + } + } + public void addRecommend(int id,int type) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "insert into recommend(type,goods_id) values(?,?)"; + r.update(sql,type,id); + } + public void removeRecommend(int id,int type) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "delete from recommend where type=? and goods_id=?"; + r.update(sql,type,id); + } + public void insert(Goods g) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "insert into goods(name,cover,image1,image2,price,intro,stock,type_id) values(?,?,?,?,?,?,?,?)"; + r.update(sql,g.getName(),g.getCover(),g.getImage1(),g.getImage2(),g.getPrice(),g.getIntro(),g.getStock(),g.getType().getId()); + } + public void update(Goods g) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "update goods set name=?,cover=?,image1=?,image2=?,price=?,intro=?,stock=?,type_id=? where id=?"; + r.update(sql,g.getName(),g.getCover(),g.getImage1(),g.getImage2(),g.getPrice(),g.getIntro(),g.getStock(),g.getType().getId(),g.getId()); + } + public void delete(int id) throws SQLException { + QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource()); + String sql = "delete from goods where id = ?"; + r.update(sql,id); + } +}