为了账号安全,请及时绑定邮箱和手机立即绑定

SSM框架-企业门户网站-2-数据库和实体类的对应

标签:
SSM

该项目里的数据库表受我实习的影响,我将表名设计的不是很好,字段也设计的不够清楚,所以在重构的时候,我就懒得修改数据库了,在原有数据库的基础上用Spring重构了,这个网站的设计思维导图很简单,虽然使用的前后端分离,是代码的前后端分离,大概意思就是,前端的部分显示是从数据库里读出来的,通过JS请求后用JS显示到前端,后台只提供接口,但是在物理上没有分开,我只使用了Tomcat服务器,大部分都是jQuery代码,也嵌入部分js代码。

1.1思维导图如下

https://img1.sycdn.imooc.com//5d8bffce00012d0206280189.jpg

其中entity类和数据库表是一一对应的对应关系如下:

https://img1.sycdn.imooc.com//5d8bffce0001c7bc02950322.jpghttps://img1.sycdn.imooc.com//5d8bffce000197e301610232.jpg

实体类里的变量和数据库里的字段一一对应,这里设计的不是很好,所以不建议大家借鉴我这份实体类的设计方式。现在对其中一个比较有代表性的实体类进行介绍,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;
	}
	
	
	
}

由于我不会使用富文本编辑器,而且原项目的后台全部代码都是我自己写的,所以很粗糙,导致重构的时候也没想太多,这里对文章的编辑进行了限制,只允许三段文章加上三张图片,其实还不如用富文本编辑器呢。下面是对应的数据库的设计内容。

https://img1.sycdn.imooc.com//5d8bffcf00012ac308140448.jpg

本项目使用了MyBatis来进行SQL的使用,所以,对数据进行操作的时候,都是先添加XXXDao.java接口,然后添加XXXDao.xml文件。

https://img1.sycdn.imooc.com//5d8bffcf0001151c03750781.jpg

接口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<Honor> queryHonor();	/**
	 * 查询全部
	 * @return
	 */
	List<Honor> 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

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.caeser.enterpriseportal.dao.HonorDao">
	<select id="queryHonor" resultType="com.caeser.enterpriseportal.entity.Honor">
		SELECT  aaa501,aaa502,aaa503,aaa504,aaa505,aaa506
		FROM aa05
		LIMIT 5	</select>
	<select id="queryHonorAll" resultType="com.caeser.enterpriseportal.entity.Honor">
		SELECT  aaa501,aaa502,aaa503,aaa504,aaa505,aaa506
		FROM aa05	</select>
	<select id="queryHonorById" resultType="com.caeser.enterpriseportal.entity.Honor">
		SELECT  aaa501,aaa502,aaa503,aaa504,aaa505,aaa506
		FROM aa05
		WHERE aaa501=#{id}	</select>
	<delete id="deleteHonerById" parameterType="int">
		DELETE FROM
		aa05
		WHERE aaa501=#{id}	</delete>
	<update id="updateHonor" parameterType="com.caeser.enterpriseportal.entity.Honor">
		update aa05		<set>
			<if test="aaa502 != null">aaa502=#{aaa502},</if>
			<if test="aaa503 != null">aaa503=#{aaa503},</if>
			<if test="aaa504 != null">aaa504=#{aaa504},</if>
			<if test="aaa505 != null">aaa505=#{aaa505}</if>
		</set>
		where aaa501=#{aaa501}	</update>
	<insert id="insertHonor" useGeneratedKeys="true"
		keyProperty="Aaa501" keyColumn="aaa501">
		INSERT INTO
		aa05(Aaa502,Aaa503,Aaa504,Aaa505)
		VALUES
		(#{aaa502},#{aaa503},#{aaa504},#{aaa505})	</insert></mapper>

唯一觉得好用的地方就是支持动态SQL,就是Update的时候,有的时候可能某些字段并没有更新,不必单独写个SQL语句与其对应。本项目其实我觉得我是用AOP思想来实现代码的,就是对某一功能,从前到后完成,实际上这样效率不高,最好的方式还是先编写好全部后台接口然后直接调用,用来编写JS代码完成前端的设计。再介绍一下Service类吧,这个类其实是对Dao类的分装,例如保存图片的时候,你除了要调用保存图片的SQL还要调用其他的SQL这样可以用事务的方式来管理,如果将多个SQL封装到一个Service里,如果遇到某个文件操作失败时,还涉及事务的回滚。

本章就介绍到这里,其实在做完这个项目之后,我就发现,前端不是自己写的,有很多不是很方便的地方,我就打算自己研究一下前端,这样前后端都自己手写,就好像服务器的配置不懂,我就自己练,一遍一遍的打Linux命令,配置系统。本项目完成了文章的增删改查,前端的排版,后端的登陆,源自我自己的真实项目,只不过该公司不再继续支付服务费了,所以我自己用JAVA做了重构,算是对Spring稍微了解了一点。

下面三张图介绍一下项目的基本样子,其中在子页面里有部分是JS调用函数实现的,局部刷新,这样页面不发生刷新动作就可以完成现实,具体如下:

https://img1.sycdn.imooc.com//5d8bffd0000122b318910973.jpg

https://img1.sycdn.imooc.com//5d8bffd300019da918910682.jpg

https://img1.sycdn.imooc.com//5d8bffd5000119ad18910001.jpg


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
30
获赞与收藏
154

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消