此文章只作为本人的实训总结。
做一个Java项目虽然很难,主要还是因为此前并未深入的学习Java,也没有人带领学习,但是实训总归是结束了,结束之后也需进行总结。
一、工程结构应用分层
1、Java项目中的命名java.com.sicau(川农考试系统)
命名也是需要有科学性的
2、分为5个package
-
分别为common、controller、dao、entity、service
-
common层:一些工具包,包括时间倒计时处理工具、password的加密与解密、请求数据返回之后的信息
-
controller层:Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。
自己的理解:如命是一个控制器,Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。
-
dao层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
自己的理解:数据访问层,全称为Data Access Object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查
-
entity层:就是属性类,通常定义在model层里面 ,entity层也可被认为作为是model层。一般的实体类对应一个数据表,其中的属性对应数据表中的字段。(说白了就是为了让程序员在对数据库操作的时候不用写SQL语句,就是一个数据库表生成一个类,这样做对数据库操作起来方便,编写代码较少 提高效率,可以使程序员专注逻辑关系
好处:
1.对对象实体的封装,体现OO思想。
2.属性可以对字段定义和状态进行判断和过滤
3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便
-
service层:Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁
自己的理解:相对具体的业务逻辑服务层,也被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制
3、思想很重要!代码是基于思想来敲的
二、接口
service层中的接口,对应service中serviceImpl的package。
接口的好处:
- 减少代码的书写(上边分析的代码重载)
- 提高了代码的可维护性和扩展性
- 在团队合作中,代码的规范性
三、数据库语句
- mapper:是mybtis框架的映射用到,运用SQL语句与mapper映射文件在dao层用
- 一些数据库语句:
挑选语句:select
-
SELECT * FROM grade WHERE id=#{id} and user_id=#{userId} AND paper_id=#{paperId} AND score=#{score}
-
SELECT * FROM paper WHERE id=#{paperId}
-
SELECT * FROM paper WHERE id=#{paperId} AND title = #{title} AND title_time=#{testTime}
插入语句:
-
INSERT INTO paper VALUE (null ,#{title},#{tsetTime})
-
INSERT INTO grade VALUE (null,#{userId},#{paperId},#{score})
删除语句:
-
DELETE from paper where id = #{paperId}
-
DELETE from question where id = #{questionId}
更新语句:
-
UPDATE question set title = #{title} , option_a = #{optionA},option_b = #{optionB},option_c = #{optionC},option_d = #{optionD} where id = #{id}
-
UPDATE paper set title = #{title} , title_time=#{tsetTime} WHERE id=#{paperId}