CMS系统中的内容管理主要是管理前端首页的展示,如首页轮播展示的商品等
作业共三个模块,内容显示,修改,删除
目录
内容显示
编辑
批量删除
内容显示
首先在前端代码中找到相应HTML代码,并在其中找到URL
<table class="easyui-datagrid" id="contentList"
data-options="toolbar:contentListToolbar,singleSelect:false,collapsible:true,pagination:true,method:'get',pageSize:20,url:'/content/query/list',queryParams:{categoryId:0}">
由HTML代码加以分析可以得出需要返回的应该是一个对象,并需要对其进行分页(分页部分模仿第四天内容)
接着开始写代码
interface层
/**
* 显示内容列表
*
* @param categoryId 商品id
* @param page 页数
* @param rows 行数
* @return EasyUIDataGridResult
*/
EasyUIDataGridResult getItemList(Long categoryId, Integer page, Integer rows);
Service层
@Override
public EasyUIDataGridResult getItemList(Long categoryId, Integer page, Integer rows) {
//设置分页信息
PageHelper.startPage(page,rows);
//创建查询条件
TbContentExample example = new TbContentExample();
TbContentExample.Criteria criteria = example.createCriteria();
//设置查询条件
criteria.andCategoryIdEqualTo(categoryId);
//执行查询
List<TbContent> tbContents = contentMapper.selectByExample(example);
//提取分页信息
PageInfo<TbContent> pageInfo = new PageInfo<>(tbContents);
//创建返回结果对象
EasyUIDataGridResult easyUIDataGridResult = new EasyUIDataGridResult();
//显示商品信息
easyUIDataGridResult.setRows(tbContents);
//显示分页
easyUIDataGridResult.setTotal(pageInfo.getTotal());
return easyUIDataGridResult;
}
controller层
/**
* 分页显示内容管理数据
*
* @param categoryId 内容id
* @param page 页数
* @param rows 行数
* @return EasyUIDataGridResult
*/
@RequestMapping("/content/query/list")
@ResponseBody
public EasyUIDataGridResult getItemList(Long categoryId, Integer page, Integer rows) {
return contentService.getItemList(categoryId, page, rows);
}
编辑
首先分析URL
要做编辑功能,首先要做的就是回写,这个和前面的编辑思路的一样的
首先查询本来的信息异步回写到页面中
interface层
/**
* 回写内容描述
* @param id 内容id
* @return TbContent
*/
TbContent selectByIdContent(Long id);
Service层
@Override
public TbContent selectByIdContent(Long id) {
return contentMapper.selectByPrimaryKey(id);
}
Controller层
/**
* 回写内容描述
*
* @param id 内容id
* @return TbContent
*/
@RequestMapping("/query/content/{id}")
@ResponseBody
public TbContent selectContent(@PathVariable Long id) {
return contentService.selectByIdContent(id);
}
此时内容已经传到了前端,却并没有显示出来,经过分析,在jsp页面中加入
// 加载商品描述
$.getJSON('/query/content/' + data.id, function (data) {
//if(_data.status == 200){
//UM.getEditor('itemeEditDescEditor').setContent(_data.data.itemDesc, false);
contentEditEditor.html(data.content);
// }
});
此时能够进行正常回写,然后开始修改、提交
Interface
/**
* 修改内容
*
* @param content 内容pojo
* @return E3Result
*/
E3Result editContent(TbContent content);
Service
@Override
public E3Result editContent(TbContent content) {
//设置修改时间
content.setUpdated(new Date());
//执行修改
contentMapper.updateByPrimaryKey(content);
return E3Result.ok();
}
Controller
/**
* 修改内容
*
* @param content 修改内容pojo
* @return E3Result
*/
@RequestMapping("/rest/content/edit")
@ResponseBody
public E3Result editContent(TbContent content) {
return contentService.editContent(content);
}
到这儿本来已经结束了,然而在测试时发现每次写的描述并不能更新成功,也不会持久化到数据库,刚开始太信赖逆向工程,就一直在分析前端的传输,后来再进行后台调试,发现信息是能到达后台的,所以才开始看mpaaer文件,发现果然是插入语句的问题。应改为
<update id="updateByPrimaryKey" parameterType="cn.e3mall.pojo.TbContent">
update tb_content
set category_id = #{categoryId,jdbcType=BIGINT},
title = #{title,jdbcType=VARCHAR},
sub_title = #{subTitle,jdbcType=VARCHAR},
title_desc = #{titleDesc,jdbcType=VARCHAR},
url = #{url,jdbcType=VARCHAR},
pic = #{pic,jdbcType=VARCHAR},
pic2 = #{pic2,jdbcType=VARCHAR},
created = #{created,jdbcType=TIMESTAMP},
updated = #{updated,jdbcType=TIMESTAMP},
content = #{content}
where id = #{id,jdbcType=BIGINT}
</update>
或通过其他方式,调用updateByPrimaryKeyWithBLOBs方法
批量删除
找到URL为
Interface
/**
* 批量删除选中删除内容
* @param ids 选中内容列表
* @return E3Result
*/
E3Result deleteBatchContent(String[] ids);
@Override
public E3Result deleteBatchContent(String[] ids) {
for (String id :ids) {
//执行删除操作
contentMapper.deleteByPrimaryKey(Long.valueOf(id));
TbContent content = contentMapper.selectByPrimaryKey((long) Integer.parseInt(id));
}
return E3Result.ok();
}
/**
* 批量删除内容
*
* @param ids 批量内容id
* @return E3Result
*/
@RequestMapping("/content/delete")
@ResponseBody
public E3Result deleteContent(String[] ids) {
return contentService.deleteBatchContent(ids);
}