ssh架构的学生成绩管理系统Word文档下载推荐.docx
- 文档编号:16269230
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:19
- 大小:24.57KB
ssh架构的学生成绩管理系统Word文档下载推荐.docx
《ssh架构的学生成绩管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ssh架构的学生成绩管理系统Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
数据类型
可空
默认值
说明
XH
学号
Char(6)
×
无
主键
XM
姓名
Char(8)
XB
性别
bit
1:
男,0:
女
CSSJ
出生时间
datetime
√
ZY_ID
专业ID
int
ZXF
总学分
BZ
备注
Varchar(200)
ZP
照片
mediumblob
登录表:
dlb
id
标识
自增1
主键,自增
xh
登录号
char(6)
外键,xsb中xh
kl
口令
char(20)
专业表:
zyb
ID
zym
专业名
char(12)
rs
人数
fdy
辅导员
char(8)
课程表:
kcb
kch
课程号
Char(3)
否
kcm
课程名
Char(12)
是
kxxq
开课学期
smallint
1-8
xs
学时
xf
学分
连接表:
xs_kcb
char(3)
成绩表:
cjb
Xh
Kch
Cj
成绩
2、设计系统架构
利用分层架构模式,设计系统架构,系统可分为表示层、业务逻辑层和数据持久层。
如下图所示:
建立相应package。
(1)定义UserLibrary
(2)增加Spring开发能力(添加jar包——使用UserLibrary,新建applicationContext.xml)
注:
可以不增加UserLibrary,直接把需要的jar包拷贝到classpath下。
4、实现Hibernate持久层
(1)添加Hibernate开发能力
添加jar包:
如果第一步中已增加,此步可以省略。
注意:
需要把Hibernate交由Spring来管理,其中包括在Spring中配置“dataSource”和“sessionFactory”
(2)通过MyEclipse中Hibernate反向工程,分别生成表对应的POJO类及相应的映射文件。
所有的POJO类和映射文件(*.hbm.xml)放在org.model这个package下。
难点1:
xsb(学生表)的映射文件中需要设置和专业的多对一关系,参考代码如下:
<
?
xmlversion="
1.0"
encoding="
utf-8"
>
!
DOCTYPEhibernate-mappingPUBLIC"
-//Hibernate/HibernateMappingDTD3.0//EN"
"
hibernate-mapping>
classname="
org.model.Xsb"
table="
XSB"
schema="
dbo"
catalog="
XSCJ"
idname="
xh"
type="
java.lang.String"
columnname="
XH"
length="
6"
/>
generatorclass="
assigned"
/id>
propertyname="
xm"
XM"
50"
/property>
xb"
java.lang.Byte"
XB"
cssj"
java.util.Date"
CSSJ"
23"
zxf"
java.lang.Integer"
ZXF"
bz"
BZ"
500"
zp"
ZP"
many-to-onename="
zyb"
class="
org.model.Zyb"
fetch="
select"
lazy="
false"
<
ZY_ID"
/many-to-one>
/class>
/hibernate-mapping>
难点2:
成绩表(cjb)中需要配置复合主键,因为成绩表中的主键是由xh和kch组成,参考代码如下:
--
MappingbyMyEclipsePersistenceTools
-->
org.model.Cjb"
CJB"
--复合主键配置其中两个key-property,分别对应两个主键-->
composite-idname="
id"
org.model.CjbId"
key-propertyname="
/key-property>
kch"
KCH"
4"
/composite-id>
cj"
CJ"
xf"
XF"
对应的POJO类由复合主键的POJO类和成绩表的POJO类组成,参考代码如下:
CjbId.java
packageorg.model;
publicclassCjbIdimplementsjava.io.Serializable{
privateStringxh;
privateStringkch;
publicCjbId(){
}
publicCjbId(Stringxh,Stringkch){
this.xh=xh;
this.kch=kch;
publicStringgetXh(){
returnthis.xh;
publicvoidsetXh(Stringxh){
publicStringgetKch(){
returnthis.kch;
publicvoidsetKch(Stringkch){
}
Cjb.java
publicclassCjbimplementsjava.io.Serializable{
privateCjbIdid;
privateIntegercj;
privateIntegerxf;
publicCjb(){
publicCjb(CjbIdid){
this.id=id;
publicCjb(CjbIdid,Integercj,Integerxf){
this.cj=cj;
this.xf=xf;
publicCjbIdgetId(){
returnthis.id;
publicvoidsetId(CjbIdid){
publicIntegergetCj(){
returnthis.cj;
publicvoidsetCj(Integercj){
publicIntegergetXf(){
returnthis.xf;
publicvoidsetXf(Integerxf){
重点:
所有的映射文件需要在Spring配置文件中注册,参考applicationContext.xml如下:
……
beanid="
datasource"
mons.dbcp.BasicDataSource"
--定义数据库驱动-->
driverClassName"
value="
com.mysql.jdbc.Driver"
--定义数据库URL-->
url"
jdbc:
mysql:
//localhost:
3306/xscj"
--定义数据库的用户名-->
username"
value="
root"
--定义数据库密码-->
password"
/bean>
--定义Hibernate的SessionFactory-->
sessionFactory"
org.springframework.orm.hibernate3.LocalSessionFactoryBean"
--定义SessionFactory必须注入DataSource-->
dataSource"
<
refbean="
--定义Hibernate的SessionFactory属性-->
hibernateProperties"
props>
<
propkey="
hibernate.dialect"
org.hibernate.dialect.MySQLDialect
/prop>
/props>
--定义POJO的映射文件-->
mappingResources"
list>
value>
org/model/Dlb.hbm.xml<
/value>
<
org/model/Xsb.hbm.xml<
org/model/Kcb.hbm.xml<
org/model/Zyb.hbm.xml<
org/model/Cjb.hbm.xml<
/list>
5、实现DAO
所有DAO层的实现类需要继承HibernateDaoSupport类,参考代码如下:
packageorg.dao.imp;
importjava.util.List;
importorg.dao.DlDao;
importorg.model.Dlb;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
publicclassDlDaoImpextendsHibernateDaoSupportimplementsDlDao{
publicbooleanexistXh(Stringxh){
Listlist=getHibernateTemplate().find("
fromDlbwherexh=?
xh);
if(list.size()>
0)
returntrue;
else
returnfalse;
publicDlbfind(Stringxh,Stringkl){
Stringstr[]={xh,kl};
andkl=?
str);
return(Dlb)list.get(0);
else
returnnull;
publicvoidsave(Dlbuser){
getHibernateTemplate().save(user);
所有DAO层的实现类都需要在Spring配置,并且必须获得一个SessionFactory的引用,然后才能完成持久化访问。
换句话说,DAO的实现类都交由Spring容器的Bean来管理。
参考Spring中的配置DAO的部分代码如下“
dlDao"
org.dao.imp.DlDaoImp"
xsDao"
org.dao.imp.XsDaoImp"
/>
kcDao"
org.dao.imp.KcDaoImp"
zyDao"
org.dao.imp.ZyDaoImp"
cjDao"
org.dao.imp.CjDaoImp"
6、实现业务逻辑层(Service层)
主要实现对DAO层的调用。
依赖注入
依赖注入首先要在需要注入的类中声明一个变量(对象),同时生成该变量(对象)的setter方法。
其次需要在Spring配置文件中设置需要注入的对象。
例如,需要在登录的DlServiceManage类中注入DlDaoImp实例化后的对象,步骤有二:
首先,在DlServiceManage中声明dlDao,同时生成dlDao的setter方法,参考代码如下:
packageorg.service.imp;
importorg.service.DlService;
publicclassDlServiceManageimplementsDlService{
//对DlDao进行依赖注入
privateDlDaodlDao;
publicvoidsetDlDao(DlDaodlDao){
this.dlDao=dlDao;
returndlDao.existXh(xh);
returndlDao.find(xh,kl);
dlDao.save(user);
其次,在Spring的配置文件中进行配置:
dlService"
org.service.imp.DlServiceManage"
7、对业务逻辑增加事务管理
采用BeanNameAutoProxyCreator,根据BeanName自动生成事务代理的方式。
参考代码:
transactionManager"
class="
org.springframework.orm.hibernate3.HibernateTransactionManager"
--HibernateTransactionManagerbean需要依赖注入一个SessionFactorybean的引用-->
reflocal="
--配置事务拦截器-->
transactionInterceptor"
org.springframework.transaction.interceptor.TransactionInterceptor"
--事务拦截器bean需要依赖注入一个事务管理器-->
ref="
transactionAttributes"
--下面定义事务传播属性-->
delete*"
PROPAGATION_REQUIRED<
*"
--定义BeanNameAutoProxyCreator,该bean无需被引用,因此没有id属性,这个bean根据事务拦截器为目标bean自动创建事务代理-->
beanclass="
org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"
--指定对满足哪些beanname的bean自动生成业务代理-->
beanName
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ssh 架构 学生 成绩管理系统
![提示](https://static.bdocx.com/images/bang_tan.gif)