ssm商城教學16.屬性管理
效果
重啟tomcat,通過訪問地址
http://127.0.0.1:8080/tmall_ssm/admin_property_list?cid=12
可以看到屬性管理的介面
注: 這cid=12是分類的id,根據你的實際執行情況,採取不同的id值
Property
Property實體類已經和其他所有的實體類一起,在所有的逆向工程這個環節就一起自動生成好了。 不過僅僅有自動生成的實體類程式碼,還不足以支撐業務需要,所以在Property基礎上增加了一個Category 欄位。 這個屬性的用途將會在編輯功能講解步驟裡進行講解。
PropertyService
新建PropertyService,提供CRUD一套。 需要注意的是,因為在業務上需要查詢某個分類下的屬性,所以list方法會帶上對應分類的id。
package
com.how2java.tmall.service;
import
com.how2java.tmall.pojo.Property;
import
java.util.List;
public
interface
PropertyService {
void
add(Property c);
void
delete(
int
id);
void
update(Property c);
Property get(
int
id);
List list(
int
cid);
}
新增PropertyServiceImpl實現PropertyService對應的方法。通過呼叫自動生成的PropertyMapper就可以實現大部分方法了。
它的使用也很方便,這一行表示查詢cid欄位
example.createCriteria().andCidEqualTo(cid);
package
com.how2java.tmall.service.impl;
import
com.how2java.tmall.mapper.PropertyMapper;
import
com.how2java.tmall.pojo.Category;
import
com.how2java.tmall.pojo.Product;
import
com.how2java.tmall.pojo.Property;
import
com.how2java.tmall.pojo.PropertyExample;
import
com.how2java.tmall.service.CategoryService;
import
com.how2java.tmall.service.PropertyService;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service;
import
java.util.List;
@Service
public
class
PropertyServiceImpl
implements
PropertyService {
@Autowired
PropertyMapper propertyMapper;
@Override
public
void
add(Property p) {
propertyMapper.insert(p);
}
@Override
public
void
delete(
int
id) {
propertyMapper.deleteByPrimaryKey(id);
}
@Override
public
void
update(Property p) {
propertyMapper.updateByPrimaryKeySelective(p);
}
@Override
public
Property get(
int
id) {
return
propertyMapper.selectByPrimaryKey(id);
}
@Override
public
List list(
int
cid) {
PropertyExample example =
new
PropertyExample();
example.createCriteria().andCidEqualTo(cid);
example.setOrderByClause(
"id desc"
);
return
propertyMapper.selectByExample(example);
}
}
PropertyController
package
com.how2java.tmall.controller;
import
java.util.List;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Controller;
import
org.springframework.ui.Model;
import
org.springframework.web.bind.annotation.RequestMapping;
import
com.github.pagehelper.PageHelper;
import
com.github.pagehelper.PageInfo;
import
com.how2java.tmall.pojo.Category;
import
com.how2java.tmall.pojo.Property;
import
com.how2java.tmall.service.CategoryService;
import
com.how2java.tmall.service.PropertyService;
import
com.how2java.tmall.util.Page;
@Controller
@RequestMapping
(
""
)
public
class
PropertyController {
@Autowired
CategoryService categoryService;
@Autowired
PropertyService propertyService;
@RequestMapping
(
"admin_property_add"
)
public
String add(Model model, Property p) {
propertyService.add(p);
return
"redirect:admin_property_list?cid="
+p.getCid();
}
@RequestMapping
(
"admin_property_delete"
)
public
String delete(
int
id) {
Property p = propertyService.get(id);
propertyService.delete(id);
return
"redirect:admin_property_list?cid="
+p.getCid();
}
@RequestMapping
(
"admin_property_edit"
)
public
String edit(Model model,
int
id) {
Property p = propertyService.get(id);
Category c = categoryService.get(p.getCid());
p.setCategory(c);
model.addAttribute(
"p"
, p);
return
"admin/editProperty"
;
}
@RequestMapping
(
"admin_property_update"
)
public
String update(Property p) {
propertyService.update(p);
return
"redirect:admin_property_list?cid="
+p.getCid();
}
@RequestMapping
(
"admin_property_list"
)
public
String list(
int
cid, Model model, Page page) {
Category c = categoryService.get(cid);
PageHelper.offsetPage(page.getStart(),page.getCount());
List<Property> ps = propertyService.list(cid);
int
total = (
int
)
new
PageInfo<>(ps).getTotal();
page.setTotal(total);
page.setParam(
"&cid="
+c.getId());
model.addAttribute(
"ps"
, ps);
model.addAttribute(
"c"
, c);
model.addAttribute(
"page"
, page);
return
"admin/listProperty"
;
}
}