1、在FruitDao接口中添加查询第一页数据和查询总记录条数
javapackage com.csdn.fruit.dao; import com.csdn.fruit.pojo.Fruit; import java.util.List; //dao :Data Access Object 数据访问对象 //接口设计 public interface FruitDao { void addFruit(Fruit fruit); void delFruit(String fname); //通过 fid 删除 水果库存记录 void delFruitByFid(Integer fid); void updateFruit(Fruit fruit); @Deprecated List<Fruit> getFruitList(); List<Fruit> getFruitList(Integer pageNo, Integer pageSize); Fruit getFruitByFname(String fname); Fruit getFruitByFid(Integer fid); //查询总记录条数 Integer getRecordCount(); }2、编写FruitDaoImpl实现这两个方法
javapackage com.csdn.fruit.dao.impl; import com.csdn.fruit.dao.FruitDao; import com.csdn.fruit.pojo.Fruit; import com.csdn.mymvc.dao.BaseDao; import java.util.List; public class FruitDaoImpl extends BaseDao<Fruit> implements FruitDao { @Override public void addFruit(Fruit fruit) { String sql = "insert into t_fruit values (0,?,?,?,?)"; super.executeUpdate(sql, fruit.getFname(), fruit.getPrice(), fruit.getFcount(), fruit.getRemark()); } @Override public void delFruit(String fname) { String sql = "delete from t_fruit where fname=?"; super.executeUpdate(sql, fname); } //通过 fid 删除水果库存记录 @Override public void delFruitByFid(Integer fid) { super.executeUpdate("delete from t_fruit where fid = ? ", fid); } //通过 fid 可以修改所有的属性值 @Override public void updateFruit(Fruit fruit) { String sql = "update t_fruit set fname=?,price=?,fcount=?,remark=? where fid = ?"; super.executeUpdate(sql, fruit.getFname(), fruit.getPrice(), fruit.getFcount(), fruit.getRemark(), fruit.getFid()); } @Override public List<Fruit> getFruitList() { return super.executeQuery("select * from t_fruit"); } @Override public List<Fruit> getFruitList(Integer pageNo, Integer pageSize) { return super.executeQuery("select * from t_fruit limit ?,?",(pageNo-1)*pageSize,pageSize); } @Override public Fruit getFruitByFname(String fname) { return load("select * from t_fruit where fname = ?", fname); } @Override public Fruit getFruitByFid(Integer fid) { return load("select * from t_fruit where fid=?", fid); } @Override public Integer getRecordCount() { String sql = "select count(*) from t_fruit"; return ((Long)executeComplexQuery(sql).get(0)[0]).intValue(); } }3、dto层封装PageInfo类
javapackage com.csdn.fruit.dto; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; //分页组件类 @Data @NoArgsConstructor @AllArgsConstructor public class PageInfo<T> { private List<T> list; private Integer pageNo = 1; private Integer pageSize = 5; private Integer recordCount = 0; private Integer pageCount = 0; public PageInfo(List<T> list, Integer pageNo, Integer recordCount) { this.list = list; this.pageNo = pageNo; this.recordCount = recordCount; this.pageCount = (recordCount + pageSize - 1) / pageSize; } }4、改写IndexServlet
javapackage com.csdn.fruit.servlet; import com.csdn.fruit.dao.FruitDao; import com.csdn.fruit.dao.impl.FruitDaoImpl; import com.csdn.fruit.dto.PageInfo; import com.csdn.fruit.dto.Result; import com.csdn.fruit.pojo.Fruit; import com.csdn.fruit.util.ResponseUtil; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @WebServlet("/index") public class IndexServlet extends HttpServlet { private FruitDao fruitDao = new FruitDaoImpl(); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Integer pageNo = 1; String pageNoStr = req.getParameter("pageNo"); if (pageNoStr!=null&&!"".equals(pageNoStr)) { pageNo = Integer.parseInt(pageNoStr); } List<Fruit> fruitList = fruitDao.getFruitList(pageNo,5); //总记录条数 Integer total = fruitDao.getRecordCount(); //计算总页数 //Integer pageSize = 5;//当前项目中,每页数据固定写死 5 条 //Integer pageCount = (total + pageSize - 1) / pageSize; PageInfo<Fruit> pageInfo = new PageInfo<>(fruitList, 1, total); Result result = Result.OK(pageInfo); ResponseUtil.print(resp, result); } }5、前端数据结构改变修改index.js
5.1、common.js
javascriptfunction $(key){ if(key){ if(key.startsWith("#")){ key = key.substring(1) return document.getElementById(key) }else{ let nodeList = document.getElementsByName(key) return Array.from(nodeList) } } }
javascriptwindow.onload=function(){ loadData(); } loadData=function(){ axios({ method:'get', url:'/index' }).then(response=>{ debugger let fruitList = response.data.data.list let pageNo=response.data.data.pageNo let pageCount=response.data.data.pageCount // 此处使用的是axios,那么响应回来的数据自动就是json, // 不需要再进行parse(如果是原始的ajax操作,那么一定需要parse) // let fruitArr = JSON.parse(fruitList) let fruitArr = fruitList for(let i = 0 ; i<fruitArr.length; i++){ let fruitTbl = $("#fruit_tbl") let tr = fruitTbl.insertRow() let fnameTD = tr.insertCell() let priceTD = tr.insertCell() let fcountTD = tr.insertCell() let operTD = tr.insertCell() let fruit = fruitArr[i] //fnameTD.innerText = fruit.fname fnameTD.innerHTML = '<a href="edit.html?fid='+fruit.fid+'">'+fruit.fname+'</a>'; priceTD.innerText = fruit.price fcountTD.innerText = fruit.fcount operTD.innerHTML="<img class=\"delImg\" src=\"imgs/del.png\" onclick=\"delFruit("+fruit.fid+")\"/>" } }) } delFruit = function (fid) { if (window.confirm('是否确认删除?')) { axios({ method: 'get', url: 'del', params:{ fid: fid, } }).then(response=>{ if (response.data.flag) { window.location.reload(); } }); } };
项目实战:展示第一页数据
丁总学Java2023-11-04 20:24
相关推荐
Lee川4 小时前
Milvus 实战:当 RAG 遇上向量数据库,从"玩具 Demo"到"生产可用的"那一步anOnion5 小时前
构建无障碍组件之Toolbar Pattern惊鸿一博5 小时前
图标加载方式_zeroIcon_是否加前缀mdi王八八。5 小时前
linux后台java、postSQL部署命令2501_940041745 小时前
前端工程化进阶:5个高交互与可视化项目提示词你很易烊千玺5 小时前
JS 异步 从零讲(大白话 + 真实场景 + 可运行案例)月落归舟6 小时前
MyBatis缓存机制huipeng9266 小时前
企业级微服务开发实战(一):项目启动与工程化设计爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ6 小时前
java实现excel导入、下载模板方法段ヤシ.7 小时前
回顾Java知识点,面试题汇总Day12(持续更新)