一、当根据笔记本创建了笔记,用户可以通过选择笔记本来加载笔记本下的所有笔记,并可以选中笔记进行修改保存笔记内容。
加载笔记列表流程:选择笔记本 -> 发送加载笔记列表 -> 过滤拦截请求 -> 分配控制器 -> 执行 controller.execute()方法 -> 返回数据 -> 动态生成笔记列表
保存笔记流程:选择笔记 -> 编辑笔记内容 点击保存发送请求-> 过滤拦截请求 -> 分配控制器 -> 执行 controller.execute()方法 -> 返回数据 -> status = 0 更新笔记成功,status = 1 更新笔记失败。
加载笔记列表JS
function loadBookNotes(){
//设置选中效果
$("#book_ul a").removeClass("checked");
$(this).find("a").addClass("checked");
//获取参数
var bookId=$(this).data("bookId");
//发送ajax请求
$.ajax({
url:base_path+"/note/loadnotes.do",
type:"post",
data:{"bookId":bookId},
dataType:"json",
success:function(result){
//获取笔记信息
var notes=result.data;//(List集合中存储)
//清除原来的列表信息
$("#note_ul").empty();
//循环添加li
for(var i=0;i<notes.length;i++){
//获取笔记ID
var noteId=notes[i].cn_note_id;
//获取笔记主题
var noteTitle=notes[i].cn_note_title;
//生成笔记li
createNoteLi(noteId,noteTitle);
}
},
error:function(){
alert("获取失败");
}
});
};
保存笔记JS
//更新笔记信息(保存笔记)事件
function updateNote() {
//获取参数
var $li=$("#note_ul a.checked").parent();
//获取笔记Id
var noteId=$li.data("noteId");
//获取笔记的标题和内容
var noteTitle=$("#input_note_title").val().trim();
var noteBody=um.getContent();
//发送ajax请求
$.ajax({
url:base_path+"/note/update.do",
type:"post",
data:{"noteId":noteId,"title":noteTitle,"body":noteBody},
dataType:"json",
success:function(result){
if(result.status==0){
var str="";
str+='<i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i>';
str+=noteTitle;
str+='<button type="button" class="btn btn-default btn-xs btn_position btn_slide_down"><i class="fa fa-chevron-down"></i></button>';
//将str替换到li的a元素中
$li.find("a").html(str);
//提示成功
alert(result.msg);
}
},
error:function(){
alert("保存笔记失败");
}
});
};
加载笔记controller loadNoteController.java 参数是选中的笔记本id ,调用noteService.loadNoteByNoteId()方法根据笔记本ID查询这个笔记本的所有笔记
package com.sjh.cloud_note.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.sjh.cloud_note.entity.Note;
import com.sjh.cloud_note.service.NoteService;
import com.sjh.cloud_note.util.NoteResult;
@Controller
@RequestMapping("/note")
public class LoadNoteController {
@Resource
private NoteService noteService;
@RequestMapping("/load.do")
@ResponseBody
public NoteResult<Note> execute(String noteId){
NoteResult<Note> result = noteService.loadNoteByNoteId(noteId);
return result;
}
}
保存笔记Controller UpdateNoteController.java
package com.sjh.cloud_note.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.sjh.cloud_note.service.NoteService;
import com.sjh.cloud_note.util.NoteResult;
@Controller
@RequestMapping("/note")
public class UpdateNoteController {
@Resource
private NoteService noteService;
@RequestMapping("/update.do")
@ResponseBody
public NoteResult<Object> execute(String noteId,String title,String body){
NoteResult<Object> result = noteService.UpdateNote(noteId, title, body);
return result;
}
}
加载笔记接口
package com.sjh.cloud_note.service;
import java.util.List;
import java.util.Map;
import com.sjh.cloud_note.entity.Note;
import com.sjh.cloud_note.util.NoteResult;
public interface NoteService {
public NoteResult<List<Map>> loadNotesByBookId(String bookId);
public NoteResult<Note> loadNoteByNoteId(String noteId);
public NoteResult<Note> AddNote(String userId,String bookId,String title);
public NoteResult<Object> DeleteNote(String noteId);
public NoteResult<Object> UpdateNote(String noteId,String title,String body);
public NoteResult<Object> MoveNote(String noteId,String bookId);
}
实现接口
package com.sjh.cloud_note.service;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.sjh.cloud_note.dao.NoteDao;
import com.sjh.cloud_note.entity.Note;
import com.sjh.cloud_note.util.NoteResult;
import com.sjh.cloud_note.util.NoteUtil;
@Service("noteService")
@Transactional
public class NoteServiceImpl implements NoteService {
@Resource
private NoteDao noteDao;
//根据笔记本加载笔记
public NoteResult<List<Map>> loadNotesByBookId(String bookId) {
NoteResult<List<Map>> result = new NoteResult<List<Map>>();
List<Map> list = noteDao.findByBookId(bookId);
result.setStatus(0);
result.setMsg("笔记加载成功");
result.setData(list);
return result;
}
//根据笔记id加载笔记
public NoteResult<Note> loadNoteByNoteId(String noteId) {
NoteResult<Note> result = new NoteResult<Note>();
Note note = noteDao.findByNoteId(noteId);
result.setStatus(0);
result.setMsg("笔记加载成功");
result.setData(note);
return result;
}
//添加笔记
public NoteResult<Note> AddNote(String userId, String bookId, String title) {
NoteResult<Note> result = new NoteResult<Note>();
Note note = new Note();
String noteId = NoteUtil.createId();
long time = System.currentTimeMillis();
note.setCn_note_id(noteId);
note.setCn_user_id(userId);
note.setCn_notebook_id(bookId);
note.setCn_note_title(title);
note.setCn_note_body("");
note.setCn_note_create_time(time);
note.setCn_note_last_modify_time(time);
note.setCn_note_type_id("1");
note.setCn_note_status_id("1");
noteDao.save(note);
result.setStatus(0);
result.setMsg("添加笔记成功");
result.setData(note);
return result;
}
//删除笔记
public NoteResult<Object> DeleteNote(String noteId){
NoteResult<Object> result = new NoteResult<Object>();
Note note = noteDao.findByNoteId(noteId);
note.setCn_note_status_id("2");
int rows = noteDao.dynamicUpdate(note);
if(rows >= 1) {
result.setStatus(0);
result.setMsg("删除笔记成功");
}
else {
result.setStatus(1);
result.setMsg("删除笔记失败");
}
return result;
}
//更新笔记标题或者笔记内容
public NoteResult<Object> UpdateNote(String noteId, String title, String body) {
NoteResult<Object> result = new NoteResult<Object>();
Note note = noteDao.findByNoteId(noteId);
long time = System.currentTimeMillis();
note.setCn_note_title(title);
note.setCn_note_body(body);
note.setCn_note_last_modify_time(time);
int rows = noteDao.dynamicUpdate(note);
if(rows >= 1) {
result.setStatus(0);
result.setMsg("笔记更新成功");
}
else {
result.setStatus(1);
result.setMsg("笔记更新失败");
}
return result;
}
//移动笔记到其他笔记本
public NoteResult<Object> MoveNote(String noteId, String bookId) {
NoteResult<Object> result = new NoteResult<Object>();
Note note = noteDao.findByNoteId(noteId);
note.setCn_notebook_id(bookId);
int rows = noteDao.dynamicUpdate(note);
if(rows >= 1) {
result.setStatus(0);
result.setMsg("笔记移动成功");
}
else {
result.setStatus(1);
result.setMsg("笔记移动失败");
}
return result;
}
}
数据库Dao NoteDao.java 包括 根据笔记本Id加载笔记本、根据笔记编号查找笔记、更新笔记、保存笔记等操作。
package com.sjh.cloud_note.dao;
import java.util.List;
import java.util.Map;
import com.sjh.cloud_note.entity.Note;
public interface NoteDao {
public List<Map> findByBookId(String bookId);
public Note findByNoteId(String id);
public int updateNote(Note note);
public void save(Note note);
public int dynamicUpdate(Note note);
}
笔记相关Mapper NoteMapper.xml,各种操作的id 要和NoteDao 中的方法名保持一致。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.sjh.cloud_note.dao.NoteDao">
<select id="findByBookId" parameterType="string" resultType="Map">
select cn_note_id,cn_note_title from cn_note where cn_notebook_id=#{bookId} and cn_note_status_id='1'
</select>
<select id="findByNoteId" parameterType="String" resultType="com.sjh.cloud_note.entity.Note">
select *from cn_note where cn_note_id=#{noteId}
</select>
<update id="updateNote" parameterType="com.sjh.cloud_note.entity.Note">
update cn_note set cn_note_title=#{cn_note_title},
cn_note_body=#{cn_note_body},
cn_note_last_modify_time=#{cn_note_last_modify_time}
where cn_note_id=#{cn_note_id}
</update>
<insert id="save" parameterType="com.sjh.cloud_note.entity.Note">
insert into cn_note(
cn_note_id,
cn_notebook_id,
cn_user_id,
cn_note_status_id,
cn_note_type_id,
cn_note_title,
cn_note_body,
cn_note_create_time,
cn_note_last_modify_time)
values(
#{cn_note_id},
#{cn_notebook_id},
#{cn_user_id},
#{cn_note_status_id},
#{cn_note_type_id},
#{cn_note_title},
#{cn_note_body},
#{cn_note_create_time},
#{cn_note_last_modify_time}
)
</insert>
<!-- 动态更新 -->
<update id="dynamicUpdate" parameterType="com.sjh.cloud_note.entity.Note">
update cn_note
<set>
<if test="cn_note_type_id!=null">
cn_note_type_id=#{cn_note_type_id},
</if>
<if test="cn_note_status_id!=null">
cn_note_status_id=#{cn_note_status_id},
</if>
<if test="cn_notebook_id!=null">
cn_notebook_id=#{cn_notebook_id},
</if>
<if test="cn_note_title!=null">
cn_note_title=#{cn_note_title},
</if>
<if test="cn_note_body!=null">
cn_note_body=#{cn_note_body},
</if>
<if test="cn_note_last_modify_time!=null">
cn_note_last_modify_time=#{cn_note_last_modify_time}
</if>
</set>
where cn_note_id=#{cn_note_id}
</update>
</mapper>