搭建ssm和mysql_EasyOA 基于SSM的实现 数据库设计以及SSM配置搭建

数据库设计

创建数据库 字符集 utf8 排序规则 utf8_bin

23d030dffc4c

创建数据库

表名 eoa_user 描述:用户基本信息表

序号

字段名

字段类型

备注

1

id

int(11)

id 主 无意义

2

username

varchar(30)

用户名

3

password

varchar(80)

用户密码

4

regtime

timestamp

注册时间

5

email

varchar(50)

邮箱地址

6

address

varchar(255)

地址

7

headImg

varchar(255)

用户头像

CREATE TABLE `eoa_user` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id,主键,无意义',

`username` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '用户名',

`password` varchar(80) COLLATE utf8_bin NOT NULL COMMENT '用户密码',

`regtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '注册时间',

`email` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '邮箱地址',

`address` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '地址',

`headImg` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '用户头像',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

表名 eoa_role 描述: 用户角色表

序号

字段名

字段类型

备注

1

id

int(11)

id 主键 无意义

2

roleName

varchar(30)

role角色名称

3

roleDesc

varchar(50)

role角色描述

CREATE TABLE `eoa_role` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',

`roleName` varchar(30) COLLATE utf8_bin NOT NULL COMMENT 'role角色名称',

`roleDesc` varchar(50) COLLATE utf8_bin NOT NULL COMMENT 'role角色描述',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

表名 eoa_user_role 描述: 用户和角色关联表

序号

字段名

字段类型

备注

1

userId

int(11)

用户id

2

roleId

int(11)

角色id

CREATE TABLE `eoa_user_role` (

`userId` int(11) DEFAULT NULL COMMENT '用户id',

`roleId` int(11) DEFAULT NULL COMMENT '角色id'

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

表名 eoa_usersendemail 描述:用户发送的邮件表

序号

字段名

字段类型

备注

1

id

int(11)

id 主键 无意义

2

userSendMessage

text

需要发送的内容

3

sendTime

timestamp

需要发送的时间

4

isSended

int(11)

是否已经发送(0[N] 1[Y])

CREATE TABLE `eoa_usersendemail` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',

`userSendMessage` text COLLATE utf8_bin NOT NULL COMMENT '需要发送的内容',

`sendTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '需要发送的时间',

`isSended` int(11) NOT NULL COMMENT '是否已经发送 0[N] 1[Y]',

PRIMARY KEY (`id`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=COMPACT;

表名 eoa_user_usersendemail描述:用户id和用户发送的邮件表id关联表

序号

字段名

字段类型

备注

1

userId

int(11)

需要发送的用户id

2

userSendEmailId

int(11)

需要发送的邮件id

CREATE TABLE `eoa_user_usersendemail` (

`userId` int(11) NOT NULL COMMENT '需要发送的用户id',

`userSendEmailId` int(11) NOT NULL COMMENT '需要发送的邮件id'

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

表名 eoa_adminsendemail 描述:管理员发送邮件 adminId 就是用户 id 可以根据角色表查询是哪个权限和具体的操作者

序号

字段名

字段类型

备注

1

id

int(11)

id 主键 无意义

2

userId

int(11)

给指定用户发送邮件 为[0] 就是群发

3

adminSendEmail

text

需要发送的内容

4

adminId

int(11)

哪位管理员发的

5

sendTime

timestamp

发送的时间

CREATE TABLE `eoa_adminsendemail` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',

`userId` int(11) DEFAULT NULL COMMENT '给指定用户发送邮件 为[0] 就是群发',

`adminSendEmail` text COLLATE utf8_bin NOT NULL COMMENT '需要发送的内容',

`adminId` int(11) NOT NULL COMMENT '哪位管理员发的',

`sendTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '发送的时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

表名 eoa_maintenance_record 描述: 报障平台的数据导入导出

序号

字段名

字段类型

备注

1

id

int(11)

主键 唯一 无意义

2

userId

int(11)

维护人员id

3

recordTime

timestamp

维护的时间

4

recordArea

varchar(255)

维护信息

5

recordInfo

varchar(255)

维护信息

6

replaceEquipment

varchar(255)

更换器材

7

remarks

varchar(255)

备注

CREATE TABLE `eoa_maintenance_record` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 唯一 无意义',

`userId` int(11) DEFAULT NULL COMMENT '维护人员id',

`recordTime` timestamp NULL DEFAULT NULL COMMENT '维护的时间',

`recordArea` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '维护地点',

`recordInfo` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '维护信息',

`replaceEquipment` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '更换器材',

`remarks` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '备注',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

表名 eoa_user_leave_message 描述: 用户留言信息

序号

字段名

字段类型

备注

1

id

int(11)

主键 唯一 无意义

2

theme

varchar(255)

留言主题

3

userId

int(11)

'留言人

4

messageContent

varchar(255)

留言内容

CREATE TABLE `eoa_user_leave_message` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id 主键 无意义',

`theme` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '留言主题',

`userId` int(11) NOT NULL COMMENT '留言人',

`messageContent` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '留言内容',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

表名 eoa_log 描述: 用户浏览界面的日志记录

序号

字段名

字段类型

备注

1

id

int(11)

无意义,主键id

2

visitTime

timestamp

访问时间

3

userId

int(11))

操作者id

4

ip

varchar(50)

操作者访问的 ip 地址

5

url

varchar(500)

访问资源 url

6

executionTime

int(11)

执行时长 毫秒

7

method

varchar(500)

访问的方法

CREATE TABLE `eoa_log` (

`id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '无意义,主键id',

`visitTime` timestamp NULL DEFAULT NULL COMMENT '访问时间',

`userId` int(11) DEFAULT NULL COMMENT '操作者id',

`ip` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '操作者访问的 ip 地址',

`url` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT '访问资源 url',

`executionTime` int(11) DEFAULT NULL COMMENT '执行时长 毫秒',

`method` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT '访问的方法',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=244 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

暂时的数据表就以上述的九张表为基础

23d030dffc4c

九张表

SSM配置搭建

因为需要进行POI导入导出,以及文件上传 所以此处再次在父工程导入新的依赖

commons-fileupload

commons-fileupload

1.3.1

commons-io

commons-io

2.5

org.apache.poi

poi

3.17

org.apache.poi

poi-ooxml

3.17

书写 domain 模块 JavaBean

PS:因为之前的模块依赖是

我的依赖规则

dao 模块 依赖 domain 模块

service 模块 依赖 dao 模块 依赖 utils 模块 依赖 exception 模块

web 模块依赖 service

但是因为JavaBean的格式转换需要使用到 utils 模块 所以需要更改依赖 现在修改之后的依赖是

domain 模块 依赖 utils 模块

dao 模块 依赖 domain 模块

service 模块 依赖 dao 模块 依赖 exception 模块

web 模块依赖 service

utils模块中的时间格式转换代码

package cn.icanci.easyoa.utils;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

* @Author: icanci

* @ProjectName: easyoa

* @PackageName: cn.icanci.easyoa.utils

* @Date: Created in 2020/2/9 17:00

* @ClassAction: 时间转换 由String转换到Date

*/

public class String2Date {

public static Date string2Date(String timeStr,String pattern){

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

try {

return sdf.parse(timeStr);

} catch (ParseException e) {

e.printStackTrace();

}

return null;

}

}

package cn.icanci.easyoa.utils;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

* @Author: icanci

* @ProjectName: easyoa

* @PackageName: cn.icanci.easyoa.utils

* @Date: Created in 2020/2/9 16:58

* @ClassAction: 时间转换 由时间转换到String

*/

public class Date2String {

public static String data2String(Date data, String pattern) {

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

return sdf.format(data);

}

}

单元测试

package cn.icnaci.easyoa.test;

import cn.icanci.easyoa.utils.Date2String;

import cn.icanci.easyoa.utils.String2Date;

import org.junit.Test;

import java.util.Date;

/**

* @Author: icanci

* @ProjectName: easyoa

* @PackageName: cn.icnaci.easyoa.test

* @Date: Created in 2020/2/9 17:18

* @ClassAction: 测试时间和字符串的转换

*/

public class DateAndStringFormatTest {

@Test

public void testDateAndStringFormat(){

String string = Date2String.data2String(new Date(), "yyyy-MM-dd HH:mm:ss");

System.out.println(string);

Date date = String2Date.string2Date(string, "yyyy-MM-dd HH:mm:ss");

System.out.println(date);

}

}

测试通过

2020-02-09 17:20:42

Sun Feb 09 17:20:42 CST 2020

修改之后继续 User的JavaBean Lombok插件不了解的可以看一下 @简单粗暴节省JavaBean代码Lombok插件

package cn.icanci.easyoa.domain;

import cn.icanci.easyoa.utils.Date2String;

import lombok.Data;

import java.io.Serializable;

import java.util.Date;

/**

* @Author: icanci

* @ProjectName: easyoa

* @PackageName: cn.icanci.easyoa.domain

* @Date: Created in 2020/2/9 16:51

* @ClassAction: 数据表 eoa_user 对应的javaBean

*/

@Data

public class User implements Serializable {

private static final long serialVersionUID = 1L;

/**

* id 主键 无意义

*/

private Integer id;

/**

* 用户名

*/

private String username;

/**

* 密码

*/

private String password;

/**

* 注册时间

*/

private Date regtime;

/**

* 时间转化 为字符串

*/

private String regtimeDesc;

/**

* 邮箱

*/

private String email;

/**

* 地址

*/

private String address;

/**

* 头像地址

*/

private String headImg;

public String getRegtimeDesc() {

return Date2String.data2String(this.regtime,"yyyy-MM-dd HH:mm:ss");

}

}

因为JavaBean的代码比较简单 其他的不再书写 全部JavaBean如下 关联表不需要创建

23d030dffc4c

JavaBean

编写好JavaBean之后,开始编写Dao 和 Service 模块 现在以 IUserDao 为例 其他的 Dao 以及Service很类似 这里使用注解的方式实现增删改查

package cn.icanci.esayoa.dao;

import cn.icanci.easyoa.domain.User;

/**

* @Author: icanci

* @ProjectName: easyoa

* @PackageName: cn.icanci.esayoa.dao

* @Date: Created in 2020/2/9 17:54

* @ClassAction: User 的CRUD

*/

public interface IUserDao {

/**

* 保存一个用户

* @param user 需要保存的用户对象

*/

void save(User user);

/**

* 根据用户id删除id,或者是拉黑

* @param userId 需要删除的 用户id

*/

void delete(Integer userId);

/**

* 根据用户修改信息

* @param user 需要修改的用户对象信息

*/

void update(User user);

/**

* 根据用户id查询用户的信息

* @param userId 需要查询的用户id

* @return 如果查到了 返回一个 User 对象

*/

User findOne(Integer userId);

}

package cn.icanci.easyoa.service;

import cn.icanci.easyoa.domain.User;

import org.apache.ibatis.annotations.Insert;

/**

* @Author: icanci

* @ProjectName: easyoa

* @PackageName: cn.icanci.easyoa.service

* @Date: Created in 2020/2/9 18:18

* @ClassAction: IUserService User的业务层接口

*/

public interface IUserService {

/**

* 保存一个用户

* @param user 需要保存的用户对象

*/

@Insert("insert into ")

void save(User user);

/**

* 根据用户id删除id,或者是拉黑

* @param userId 需要删除的 用户id

*/

void delete(Integer userId);

/**

* 根据用户修改信息

* @param user 需要修改的用户对象信息

*/

void update(User user);

/**

* 根据用户id查询用户的信息

* @param userId 需要查询的用户id

* @return 如果查到了 返回一个 User 对象

*/

User findOne(Integer userId);

}

package cn.icanci.easyoa.service.impl;

import cn.icanci.easyoa.domain.User;

import cn.icanci.easyoa.service.IUserService;

/**

* @Author: icanci

* @ProjectName: easyoa

* @PackageName: cn.icanci.easyoa.service.impl

* @Date: Created in 2020/2/9 18:19

* @ClassAction: User 的业务层实现

*/

public class UserServiceImpl implements IUserService {

@Override

public void save(User user) {

}

@Override

public void delete(Integer userId) {

}

@Override

public void update(User user) {

}

@Override

public User findOne(Integer userId) {

return null;

}

}

具体逻辑代码还没有书写 现在先写一下配置文件

配置log4j.properties的信息

# Set root category priority to INFO and its only appender to CONSOLE.

#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal

log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.

log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.

log4j.appender.LOGFILE=org.apache.log4j.FileAppender

log4j.appender.LOGFILE.File=E:/AllLogs/idea2019/maven/oasyoa/log.log

log4j.appender.LOGFILE.Append=true

log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout

log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

在web模块中创建applicationContext.xml的配置文件 编写具体的配置信息

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd">

mysql

true

这里有个坑 也就是配置dao接口的时候,如果只配置了注解扫描而没有配置扫描注解驱动 dao模块的接口就扫描不出来

配置db.properties

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/easyoa

jdbc.username=root

jdbc.password=ok

配置spring-mvc.xml

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd">

配置web.xml

xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

contextConfigLocation

classpath*:applicationContext.xml,classpath*:spring-mvc.xml

org.springframework.web.context.ContextLoaderListener

org.springframework.web.context.request.RequestContextListener

dispatcherServlet

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:spring-mvc.xml

1

dispatcherServlet

*.do

characterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

characterEncodingFilter

/*

404

/error/404.jsp

403

/error/403.jsp

500

/error/500.jsp

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

配置好之后开始书写 dao 模块 service 模块 此处比较基础 就不上代码 然后提交到SVN

23d030dffc4c

dao模块和service模块

确认提交之后,到本地SVN仓库检查 或者浏览器登陆SVN查询

23d030dffc4c

确认提交之后检查

23d030dffc4c

浏览器查询

今天跳坑很多 明天完成基本操作 crud的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值