今天实现的主要是对网页上信息的新增、修改和删除,因为使用了Hibernate,整个开发过程变得相对比较简单。
删除信息
删除信息是通过获得要删除的Type对象的ID然后通过Hibernate直接删除的。首先在界面上,将信息ID传给后台
<a href="#" th:href="@{/admin/types/delete/{id}(id=${type.id})}" class="ui mini red basic button">删除</a>
在TypeController中,获得请求删除的类型ID,并调用Service层方法删除
@RequestMapping("delete/{id}")
public String deleteById(@PathVariable Long id){
typeService.deleteById(id);
return "redirect:/admin/types";
}
在Service层中ITypeService接口的实现类中直接调用dao层的方法即可,由于Jpa中自带deleteBYId方法,并且Hibernate也已实现了此方法,因此直接调用即可,也不需要自己编写。
@Override
public void deleteById(Long id) {
typeDao.deleteById(id);
}
这样就可以直接实现删除了。
新增与修改信息
新增与修改界面类似,使用一个界面,同一个请求路径就可以实现。在网页中,新增和修改使用相同的请求路径,不同的是是新增的话,将id设置为-1,修改的话则获得需要修改的对象的id,传给后台
新增
<a href="#" th:href="@{/admin/types/input/{id}(id=-1)}" class="ui mini right floated teal basic button">新增</a>
修改
<a href="#" th:href="@{/admin/types/input/{id}(id=${type.id})}" class="ui mini teal basic button">编辑</a>
在TypeController中,通过id判断是新增还是修改,如果是新增,则将新建Type对象,将Type对象传给网页;如果是修改,则将需要修改的Type对象传给网页。
@GetMapping("input/{id}")
public String input(@PathVariable Long id,Model model){
Type type = null;
if(id != -1){
type = typeService.findById(id);
}else{
type = new Type();
}
model.addAttribute("type",type);
return "admin/types-input";
}
修改界面
新增界面
新增或者修改完成后,网页再将修改后的信息生成type对象传给后台,持久化到数据库
<div class="ui container">
<form action="#" method="post" th:object="${type}" th:action="@{/admin/types/input}" class="ui form">
<input type="hidden" name="id" th:value="*{id}">
<div class=" field">
<div class="ui left labeled input">
<label class="ui teal basic label">名称</label>
<input type="text" name="name" placeholder="分类名称" th:value="*{name}" >
</div>
</div>
<div class="ui error message"></div>
<div class="ui right aligned container">
<button type="button" class="ui button" onclick="window.history.go(-1)" >返回</button>
<button class="ui teal submit button">提交</button>
</div>
</form>
</div>
TypeController中新增
@PostMapping("input")
public String input(Type type){
typeService.input(type);
return "redirect:/admin/types";
}
在Service层中ITypeService接口的实现类中直接调用dao层的方法即可,由于Jpa中自带save方法,并且Hibernate也已实现了此方法,因此直接调用即可,也不需要自己编写。
@Override
public void input(Type type) {
typeDao.save(type);
}
这样就可以了。