dwz框架学习笔记之(七)
好久没写博客了,最近安排做内部邮件管理模块,做之前要先设计好数据库,也网上找了163邮箱数据库设计,虽然要做的没有163邮箱的复杂,但是它的数据设计还是有借鉴作用。总共需要三张表:写信表,收件表和附件表。三者的关系是写信表与收件表1对n的关联关系,写信表与附件表也是1对n的关联关系。当存储时,会发现一个问题,因为写信表的id是自增长,当你要把收件信息存储到收件表时,你需要存储发件信息刚存储一条记录的id,问题就是怎样要获得数据自增长id,遇到这个问题时,由于以前都没有遇到过,而且学数据库也没想过这问题,那只有百度,(数据库用到是mySQL)百度查到的是mySQL有一个last_insert_id()方法,数据库刚insert一条数据,能通过这个方法得到自增长id,想要了解这个方法可以去查找资料,但是对于我来说这个方法不行,因为当我执行完插入写信表数据后,在执行这个方法得不到最后一条插入数据的id,可能是底层设计的问题,因此只有第二种方法,再插入数据之前查询数据的最大id数,这个办法虽然很不好,但是也只有这样了。(后来得知底层已经写好了一个得到自增长方法,是不是很晕死)
这是收件箱界面,是不是很丑啊,对此我也很无奈,dwz框架没有BootStrap一样花哨的按钮,邮件状态的图片是在http://www.iconpng.com/search/icon=邮件图标/7,这个网站的图标还是很丰富的,希望能找到你需要的图标。这里我碰到批量处理问题,如何把界面前选中的多条记录的id传到后台。
<th width="22"><input type="checkbox" group="ids" class="checkboxCtrl"></th>
<td><input name="ids" value="${sendmailinfo.send_mail_id}" type="checkbox"></td>
这上面的代码按照dwz框架的给的案例一样写,唯一不同的地方,是批量处理的按钮不同,代码如下:
<li><a class="delete" target="selectedTodo" rel="ids" postType = ‘string‘ href="<c:url value=‘/management/internalMail/sendMail/moreDelete.htm‘/>" title="你确定要删除吗?"><span>删除</span></a></li>
不同的地方是多了postType = ‘string‘这个,后台只要获得ids这个,id以1,2,3这种格式赋值给ids。后台在再通过
List<String> list = StringUtils.getSplitStringToList(ids, ",");
for (int i = 0; i < list.size(); i++) {
String id = list.get(i).toString();
//将邮件变为已读
receiveMailService.changeFalgDele(id);
}
将信息存储到数据库。(spring mvc)
最后总结一下,主要就是解决两个问题:1.如何获取数据库自增长id;2.dwz如何获取批量处理数据的id值。(内部邮件管理设计表文档:http://download.csdn.net/detail/u012157999/8746079)