该项目里的数据库表受我实习的影响,我将表名设计的不是很好,字段也设计的不够清楚,所以在重构的时候,我就懒得修改数据库了,在原有数据库的基础上用Spring重构了,这个网站的设计思维导图很简单,虽然使用的前后端分离,是代码的前后端分离,大概意思就是,前端的部分显示是从数据库里读出来的,通过JS请求后用JS显示到前端,后台只提供接口,但是在物理上没有分开,我只使用了Tomcat服务器,大部分都是jQuery代码,也嵌入部分js代码。
1.1思维导图如下
其中entity类和数据库表是一一对应的对应关系如下:
实体类里的变量和数据库里的字段一一对应,这里设计的不是很好,所以不建议大家借鉴我这份实体类的设计方式。现在对其中一个比较有代表性的实体类进行介绍,Culture.java
package com.caeser.enterpriseportal.entity;
public class Culture {
//标题
private String Aaa302;
//内容 3段
private String Aaa303;
private String Aaa304;
private String Aaa305;
//企业文化图片 3张
private String Aaa309;
private String Aaa310;
private String Aaa311;
//日期
private String Aaa312;
public String getAaa302() {
return Aaa302;
}
public void setAaa302(String aaa302) {
Aaa302 = aaa302;
}
public String getAaa303() {
return Aaa303;
}
public void setAaa303(String aaa303) {
Aaa303 = aaa303;
}
public String getAaa304() {
return Aaa304;
}
public void setAaa304(String aaa304) {
Aaa304 = aaa304;
}
public String getAaa305() {
return Aaa305;
}
public void setAaa305(String aaa305) {
Aaa305 = aaa305;
}
public String getAaa309() {
return Aaa309;
}
public void setAaa309(String aaa309) {
Aaa309 = aaa309;
}
public String getAaa310() {
return Aaa310;
}
public void setAaa310(String aaa310) {
Aaa310 = aaa310;
}
public String getAaa311() {
return Aaa311;
}
public void setAaa311(String aaa311) {
Aaa311 = aaa311;
}
public String getAaa312() {
return Aaa312;
}
public void setAaa312(String aaa312) {
Aaa312 = aaa312;
}
}
由于我不会使用富文本编辑器,而且原项目的后台全部代码都是我自己写的,所以很粗糙,导致重构的时候也没想太多,这里对文章的编辑进行了限制,只允许三段文章加上三张图片,其实还不如用富文本编辑器呢。下面是对应的数据库的设计内容。
本项目使用了MyBatis来进行SQL的使用,所以,对数据进行操作的时候,都是先添加XXXDao.java接口,然后添加XXXDao.xml文件。
接口Dao.java文件只用于定义操作的名称和返回值,然后在XML文件里编写具体的操作内容,HonorDao.java
package com.caeser.enterpriseportal.dao;
import java.util.List;
import com.caeser.enterpriseportal.entity.Honor;
public interface HonorDao {
/**
* 查询首页显示的5个荣誉资质
* @return
*/
List queryHonor();
/**
* 查询全部
* @return
*/
List queryHonorAll();
/**
* 根据ID删除一个荣誉资质
* @param id
* @return
*/
int deleteHonerById(int id);
/**
* 根据ID查询一条荣誉资质
* @param id
* @return
*/
Honor queryHonorById(int id);
/**
* 根据ID更新一条荣誉资质
* @param honor
* @return
*/
int updateHonor(Honor honor);
/**
* 插入一条荣誉资质
* @param honor
* @return
*/
int insertHonor(Honor honor);
}
其对应的XML文件如下,HonorDao.xml
DELETE FROM
aa05
WHERE aaa501=#{id}
update aa05
aaa502=#{aaa502},
aaa503=#{aaa503},
aaa504=#{aaa504},
aaa505=#{aaa505}
where aaa501=#{aaa501}
INSERT INTO
aa05(Aaa502,Aaa503,Aaa504,Aaa505)
VALUES
(#{aaa502},#{aaa503},#{aaa504},#{aaa505})
唯一觉得好用的地方就是支持动态SQL,就是Update的时候,有的时候可能某些字段并没有更新,不必单独写个SQL语句与其对应。本项目其实我觉得我是用AOP思想来实现代码的,就是对某一功能,从前到后完成,实际上这样效率不高,最好的方式还是先编写好全部后台接口然后直接调用,用来编写JS代码完成前端的设计。再介绍一下Service类吧,这个类其实是对Dao类的分装,例如保存图片的时候,你除了要调用保存图片的SQL还要调用其他的SQL这样可以用事务的方式来管理,如果将多个SQL封装到一个Service里,如果遇到某个文件操作失败时,还涉及事务的回滚。
本章就介绍到这里,其实在做完这个项目之后,我就发现,前端不是自己写的,有很多不是很方便的地方,我就打算自己研究一下前端,这样前后端都自己手写,就好像服务器的配置不懂,我就自己练,一遍一遍的打Linux命令,配置系统。本项目完成了文章的增删改查,前端的排版,后端的登陆,源自我自己的真实项目,只不过该公司不再继续支付服务费了,所以我自己用JAVA做了重构,算是对Spring稍微了解了一点。
下面三张图介绍一下项目的基本样子,其中在子页面里有部分是JS调用函数实现的,局部刷新,这样页面不发生刷新动作就可以完成现实,具体如下: