一、数据库准备
创建schedule_system数据库并执行如下语句
-- 设置连接的字符集为 utf8mb4
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- 创建日程表
-- ----------------------------
DROP TABLE IF EXISTS `sys_schedule`;
CREATE TABLE `sys_schedule` (
`sid` int NOT NULL AUTO_INCREMENT,
`uid` int NULL DEFAULT NULL,
`title` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`completed` int(1) NULL DEFAULT NULL,
PRIMARY KEY (`sid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- 插入日程数据
-- ----------------------------
-- ----------------------------
-- 创建用户表
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`uid` int NOT NULL AUTO_INCREMENT,
`username` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`user_pwd` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`uid`) USING BTREE,
UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- 插入用户数据
-- ----------------------------
INSERT INTO `sys_user` VALUES (1, 'zhangsan', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `sys_user` VALUES (2, 'lisi', 'e10adc3949ba59abbe56e057f20f883e');
SET FOREIGN_KEY_CHECKS = 1;
获得如下表格
二、项目结构
三、新建Web项目
新建名为 schedule-system
的项目。
很多人在写JAVA项目的时候不太喜欢用 _
,而是比较喜欢用 -
,因为一会我们在Tomcat中部署的时候,Tomcat也会将名字中的 _
改为 -
,因此这里也直接使用 -
命名了。
然后添加Tomcat依赖
然后增加Web资源组件
最后删掉 web/index.jsp
即可
四、IDEA连接数据库
我们为了在这方便在这块也能看到数据库表格,也可以使用IDEA连接数据库,将IDEA作为MySQL客户端来使用。
然后输入连接信息,点击测试,最后Apply、OK即可
然后勾选上我们想要展示的数据库
五、导入依赖
这样做的好处:当你再往这个目录里面再增加其他jar包,都会自动的添加为当前项目的依赖了。
六、pojo包处理
-
新建
com.atguigu.schedule.pojo包
专门用于存放实体类 -
在书写实体类的时候注意驼峰转换,表
sys_user
这种下划线的命名格式,在JAVA中往往会转化为驼峰式SysUser
-
作为跟数据库对应的一些实体类或者VO对象有一些要求:
1 实体类的类名和表格名称应该对应(对应不是一致,需要进行驼峰转换) 2 实体类的属性名和表格的列名应该对应 3 每个属性都必须是私有的 4 每个属性都应该具备 getter setter 5 必须具备无参构造器,阿里的操作手册明确的说,类的无参构造器应该显示的写出来,避免写其他构造器的时候忽略了,造成无参构造器消失的情况 6 全参构造器也可以准备一个 7 应该实现序列化接口(缓存 分布式项目数据传递,在传递的过程中可能会将对象序列化) 8 当我们要查大量数据的时候,考虑到会使用集合来存储对象,应该重写类的hashcode和equals方法 9 toString是否重写都可以
虽然我们的构造器、get、set、toString、hashCode、equals等方法都可以靠IDEA自动生成,但是有时候难以避免属性名写错或者修改属性个数,此时就需要删掉重新写,有点麻烦。
此时使用 lombok
处理 getter setter equals hashcode 构造器
Lombok使用步骤
-
检查idea是否已经安装了lombok插件
-
检查是否勾选了
enable annotation processing
,这个勾选上后,IDEA就可以根据Lombok注解提供相应的getter和setter方法的提示了,并且也会根据注解编译的时候在字节码文件中自动生成这些getter setter equals hashcode 构造器
方法PS:这个勾选未必是永久有效的,有些IDEA版本这个按钮的勾选设置只针对当前namespace生效,例如勾选web01中的
enable annotation processing
,那么在web01下任何子模块都是自动勾选的,但如果你换了一个namespace,那么这个可能就失效了,因此在使用Lombok之前一定要先检查一下这个enable annotation processing
也没有勾选。 -
导入Lombok依赖
-
在实体类上添加注解
//-----------------------------------------------------
package com.atguigu.schedule.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@AllArgsConstructor // 添加了全参构造
@NoArgsConstructor // 添加了五参构造
@Data // @Getter、@Setter、@EqualsAndHashCode、@ToString 可以合并为 @Data
public class SysUser implements Serializable {
private Integer uid;
private String username;
private String userPwd;
}
//------------------------------------------------------
package com.atguigu.schedule.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class SysSchedule implements Serializable {
private Integer sid;
private Integer uid;
private String title;
private Integer completed;
}
//------------------------------------------------------
七、测试包
我们可以建个包专门用来用来写测试各种代码 com.atguigu.schedule.test