失败的案例

mvn archetype:generate -DgroupId=com.xf -DartifactId=Menu -DarchetypeArtifactId=maven-archetype-webapp
1.准备工作
1.1.创建数据库表
创建database
create database Menu
– 创建菜单表
CREATE TABLE book (
book_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘id’,
name varchar(100) NOT NULL COMMENT ‘菜名’,
introd varchar(1000) NOT NULL COMMENT ‘简介’,
number int(11) NOT NULL COMMENT ‘做法数量’,
PRIMARY KEY (book_id)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT=‘菜单表’;

– 初始化数据
INSERT INTO book (book_id, name, introd,number)
VALUES
(1000, ‘炒泡面’, ‘煮泡面,过水,炒鸡蛋,炒泡面,下酱料’,10);

– 创建收藏菜单表
CREATE TABLE appointment (
book_id bigint(20) NOT NULL COMMENT ‘ID’,
student_id bigint(20) NOT NULL COMMENT ‘学号’,
appoint_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘收藏时间’ ,
PRIMARY KEY (book_id, student_id),
INDEX idx_appoint_time (appoint_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘收藏菜单表’;
– 创建学生数据表
CREATE TABLE student(
student_id bigint(20) NOT NULL COMMENT ‘学生ID’,
password bigint(20) NOT NULL COMMENT ‘密码’,
PRIMARY KEY(student_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘学生统计表’;
– 初始化学生数据
INSERT INTO student(student_id,password)
VALUES
(3176017011,123456);
1.2.在pom.xml中注入依赖

2.根据数据库对象创建实体类
在entity包里创建两个类
一个是Book(从数据库取出菜单后放入该包),
一个是Appointment(存放从数据库取出的收藏菜单信息),
还有一个Student(取出学号)

3.dao层开发
1、学生类与数据库交互;
2、收藏时与数据库交互;
3、查询菜单时与时与数据库交互
StudentDao.java
AppointmentDao
BookDao

因为spring的配置太多,我们这里分三层,分别是dao service web。我们这里先写spring-dao.xml,其他的等我们实现相应包后再去配置。 配置时,主要注意一下几个方面:
1、读入数据库连接相关参数(可选)
2、配置数据连接池
3、配置连接属性,可以不读配置项文件直接在这里写死
4、配置c3p0,只配了几个常用的
5、配置SqlSessionFactory对象(mybatis)
6、扫描dao层接口,动态实现dao接口,也就是说不需要daoImpl,sql和参数都写在xml文件上
spring-dao.xml

配置jdbc.properties文件

配置mybatis
需要配置mybatis核心文件,在recources文件夹里新建mybatis-config.xml文件。4.
1、使用自增主键
2、使用列别名
3、开启驼峰命名转换 create_time -> createTime
mybatis-config.xml

配置实现接口的xml
我们要开始写DAO接口的实现类,因为我们配置扫描sql配置文件路径是:mapper下的xml,所有我们应该在resourse下新建mapper文件夹,在这里存放实现DAO接口的各种xml
BookDao.xml

AppointmentDao.xml

StudentDao.xml

4.service层
首先写service接口类
BookService.java

可以看到,这个接口类中基本和DAO中的没啥区别,有区别的是某些类他是在dao上更进一步,需要多个dao类一起组织,或者在加入其它逻辑才能实现
为了实现BookService的借口,我们得写BookServiceImpl类。但是想让我们想想,为了写BookServiceImpl,我们需要什么,上面我们已经写出预约成功的实体类是AppointExecution,所以当然我们得写出该类,因为该类交互service和web,对这类有点像entiy包我们管叫bto包(bto包和其他包一起存放在appoint下)。对于AppointExecution来说,作用就是预约成功后给web层提供返回的信息。(就是返回预约成功、预约失败、无库存、之类的信息)

AppointExecution.java

除此之外,我们在预约图书时可能出现异常,例如重复预约、无库存、和其他异常,我们需要事先设计好异常类,来接收这类异常,方便处理,而不是直接报错。因此在appoint包下新建excption包,报下新建三个类:
AppoinException.java;

NoNumberException.java;

RepeatAppoint.java

现在可以写接口的实现类啦:
BookServiceImpl.java

写service层配置的
spring-service.xml

5.web层
在写具体的代码之前,先配置web层,在这里主要实现的作用是:
1、开启SpringMVC注解模式,可以使用@RequestMapping,@PathVariable,@ResponseBody等
2、对静态资源处理,如js,css,jpg等
3、配置jsp 显示ViewResolver,例如在controller中某个方法返回一个string类型的"login",实际上会返回"/WEB-INF/login.jsp"
4、扫描web层 @Controller
详细见xml中每一步的注释
spring-web.xml

当然我们必须修改web.xml文件,它在webapp的WEB-INF下,这个文件配置servlet,并初始化,指定扫描spring相关的配置,最后我们将所有的url都拦截下来
web.xml

因为在运行时,我们经常会查看日志什么的,所以我们把这个配置进去
logback.xml

最后我们开始组织我们web的逻辑,也就是具体的controller层代码的编写。
BookController.java

为了把执行预约逻辑是否返回的不同信息封装起来,我们创建一个Result类,它是类型T的集合。
Result.java

为了给web显示预约后的反馈信息,我们建立一个常量数据字典类存放这些要反馈给客户的信息
AppointStateEnum.java

前端开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值