准备工作:
1)创建springboot项目
2)创建数据库表category_,准备好对应的实体类
3)在项目中的pom文件中添加jdbc,mybatis, pageHelper 的jar包
代码地址在:
https://github.com/yunqinz/thymeleafCrud
1.application.properties (配置thtymeleaf 和 数据库连接)
#thymeleaf 配置
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
#缓存设置为false, 这样修改之后马上生效,便于调试
spring.thymeleaf.cache=false
#上下文
server.context-path=/thymeleaf
#数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
2.PageHelperConfig (工具类)
3.CategoryMapper (~~)
4.CategoryController ()
5.页面
1)listCategory.html
2)editCategory.html
一、查询:
如何分页?3步
- 引入PageHelperConfig.java
- CategoryMapper.java
@Select("select * from category_")
public List<Category> findAll();
- CategoryController:
-> listCategory()函数中引入start,size两个参数
-> 将查询出来的所有数据添加到PageInfo中
@RequestMapping("/listCategory")
public String listCategory(Model m,
@RequestParam(value = "start",defaultValue = "0")int start,
@RequestParam(value = "size",defaultValue = "5")int size){
List<Category> cs = categoryMapper.findAll();
// 将查询的数据以分页的形式展示
PageHelper.startPage(start,size,"id desc");// 还可以指定排序规则
PageInfo<Category> page = new PageInfo<>(cs);
m.addAttribute("page",page);
return "listCategory";
}
- 页面 (page.list;page.Num;page.pages):
<table align='center' border='1' cellspacing='0'>
<tr>
<td>id</td>
<td>name</td>
<td>编辑</td>
<td>删除</td>
</tr>
<tr th:each="c:${page.list}">
<td th:text="${c.id}"></td>
<td th:text="${c.name}"></td>
<td><a th:href="@{/editCategory(id=${c.id})}">编辑</a></td>
<td>删除</td>
</tr>
</table>
<br/>
<div>
<a th:href="@{/listCategory(start=0)}">[首 页]</a>
<a th:href="@{/listCategory(start=${page.pageNum-1})}">[上一页]</a>
<a th:href="@{/listCategory(start=${page.pageNum+1})}">[下一页]</a>
<a th:href="@{/listCategory(start=${page.pages})}">[末 页]</a>
</div>
二、新增
- 表单页面(action 不能加 斜杠):
<!--这里的action 不能写成 action="/addCategory"-->
<form action="addCategory" method="post">
<!--这里也不用写hidden id-->
name: <input name = "name"/><br/>
<button type="submit">提交</button>
</form>
- CategoryMapper.java
@Insert("insert into category_ (name) values (#{name})")
public int add(Category c);
- CategoryController.java
@RequestMapping("/addCategory")
public String addCategory(Category c){
categoryMapper.add(c);
return "redirect:listCategory";
}
三、修改
- 流程
1)点击listCategory.html table的编辑,跳转到路由/editCategory(id=${c.id});
2)查找到id对应的Category,并注入到Model中,跳转到editCategory.html页面中;
3)editCategory.html 是一个表单,点击提交按钮,路由到action = "updateCategory"进行后台更新;
4)进入/updateCategory路由对应的函数,更新数据库,并跳转到listCategory.html进行展示 - 两个页面
1)操作入口 - listCategory.html() - 注意语法
<td><a th:href="@{/editCategory(id=${c.id})}">编辑</a></td>
2)CategoryController.java 接收id,并从db中查找到对应的Category - 注意函数的参数
@RequestMapping("/editCategory")
public String listCategory(int id, Model m){
Category c = categoryMapper.get(id);
m.addAttribute("c",c);
return "editCategory";
}
此时要写的CategoryMapper.java
@Select("select * from category_ where id = #{id}")
public Category get(int id);
3)editCategory.html - 注意action的写法 - 注意要写hidden id
<form action="updateCategory" method="post">
name:<input name="name" th:value="${c.name}"/>
<input type="hidden" name = "id" th:value="${c.id}"/>
<br/>
<button type="submit">提交</button>
</form>
4)CategoryController.java
@RequestMapping("/updateCategory")
public String update(Category c,Model m){
categoryMapper.update(c);
return "redirect:listCategory";
}
四、删除
1)入口
<td><a th:href="@{/deleteCategory(id=${c.id})}">删除</a></td>
2)进入路由/deleteCategory,进行后台删除,并跳转进行展示
CategoryController.java
@RequestMapping("/deleteCategory")
public String delete(int id){
categoryMapper.delete(id);
return "redirect:listCategory";
}
3)CategoryMapper.java
@Delete("delete from category_ where id = #{id}")
public void delete(int id);






网友评论