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
相关推荐
这可不简单2 分钟前
方便易懂的自适应方案---echarts和dom样式大小自适应玲小珑4 分钟前
Auto.js 入门指南(七)定时任务调度橘黄的猫4 分钟前
深入解析 import.meta.url:与 new URL() 的关系及 Vite 中的 base 路径影响程序员小假6 分钟前
说一说 SpringBoot 中 CommandLineRunner海的诗篇_9 分钟前
前端开发面试题总结-HTML篇sky_ph15 分钟前
JAVA-GC浅析(一)Sun_light15 分钟前
用原生 HTML/CSS/JS 手把手带你实现一个美观的 To-Do List 待办清单小Demo爱coding的橙子16 分钟前
每日算法刷题Day24 6.6:leetcode二分答案2道题,用时1h(下次计时20min没写出来直接看题解,节省时间)用户214118326360217 分钟前
dify案例分享--告别手工录入!Dify 工作流批量识别电子发票,5分钟生成Excel表格SweetRetry18 分钟前
前端依赖管理实战:从臃肿到精简的优化之路