挣扎两天发现原来是有教程的,是自己没注意看,真的彻底心碎
重新捡回一点信心,至少最基础的整合和数据查询是清楚的
花了很多时间敲仿造其他同学的代码,也不是完全没作用!对后续技术其实已经大概了解了,补充一下细节吧,直接观察分页和crud的代码
一、分页
重点是在page这个类
结合jsp中的内容
last单单只是指末页
这个count*()应该是指表中数据的总数,比如有130个数据返回的就是130
不是很懂分页的原理,所以对代码做了下修改,让start=2
从id=3开始,之前start=0就是从id为1开始
对count的验证我有点说不太清楚,但是一通操作下来,应该可以确定是start决定开始数值,count决定一次显示几个
控制器中真正决定框架显示的如图,和total以及last是没有关系的,这两个只是计算最后一页信息,也就是说最关键的只有一句话!
还是不太懂具体是怎么实现的,总之理解成为模板吧
结果如上图
然后还有一个pagehelper,分页小帮手,作用很好懂 ,但是代码有点太抽象了,应该是引用的github中封装好的,暂时先不管吧
二、CRUD
多的就不用说了,相比最基础的整合,多了分页显示和通过表格中设置超链接进行crud操作
说一个很巧妙很有意思,也是我没看教程之前一直没想通的地方
在mapper中注意add和delete方法,add方法的传值一直是category,而delete是id
add方法这个传值我还是不是很理解,看xml中具体的方法
我尝试过能不能把这个name删掉,是不行的会报错,为什么呢?
问同学说是因为在add方法中增加的就是name这个属性值,是对它做出改变了,所以是传递category值并要求是其中的name属性,但是我总觉得有点怪怪的,这个 category_不是具体的数据吗,为什么会和实体类有联系呢?
可能是在xml中连接了
然后再是神奇的delete传值
看在实现类中,传的值其实还是 category类型,在没看教程之前我自己敲代码一直都是传的id值,每次都报错提示我无法获取jsp中数据的id,实际就是没能建立连接,这里多体会一下吧
在控制器中
和删除有关的代码
@RequestMapping("listCategory")
public ModelAndView listCategory(Page page){
ModelAndView mav = new ModelAndView();
List<Category> cs= categoryService.list(page);
int total = categoryService.total();
page.caculateLast(total);
// 放入转发参数
mav.addObject("cs", cs);
// 放入jsp路径
mav.setViewName("listCategory");
return mav;
@RequestMapping("deleteCategory")
public ModelAndView deleteCategory(Category category){
categoryService.delete(category);
ModelAndView mav = new ModelAndView("redirect:/listCategory");
return mav;
}
注意这个redirect:/listCategory,在完成删除后转向定位到再次显示jsp,相当于完成了一次刷新
然后是增加
在jsp页面下创建文本框进行直接输入
然后是最难的编辑
没有使用setViewName,直接传值到新的jsp页面
上面三张图就是一个完整流程
editcategory可以和add方法做一下对比
add不需要id,可能是因为程序默认直接跟着添加 ?以及add方法中是不需要附加value值的
我尝试删除editcategory中id的value的值,会提示400错误,大概明白是因为更改必须要定位,但是name的value值是没有必要的!有value值只是会获取之前的name是什么
删除name的value后就是这样空白的
以及如果把id的hidden类型改成 text就能看到当前id,在当前页面更改id之后也可以更改其他行的name值
如上图一样画蛇添足增加一个value也不是不行
暂时就到这里
总算是全部弄清楚了!!!!
用时:四小时