Serializable
接口?目的: 便于传输(远程调用), 便于存储.
对象序列化可以将任何对象写出到输出流中, 并在之后将其读回.
序列化的重要应用是通过网络将对象集合传送到另一台计算机上. 序列化用序列号代替内存地址, 所以能够将对象集合从一台机器传送到另一台机器.
https://blog.csdn.net/zhangyanyue2016/article/details/51900468
https://blog.csdn.net/gnail_oug/article/details/84653878
1. maven clean compile package
2. 取消i dea 的 work offline 勾选
MySql的时间类型有 Java中与之对应的时间类型
date java.sql.Date
Datetime java.sql.Timestamp
Timestamp java.sql.Timestamp
Time java.sql.Time
Year java.sql.Date
https://www.cnblogs.com/twoheads/p/9987935.html
实际中用的
DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s')
java.util.Date
(但是2年老程序员告诉我不要用Date,要用String…)
标签中定义可复用的语句
套用定义的SQL语句
id, username, password,roleId
为什么用 trim标签?
它可以在你包含的内容前加上某些前缀, 后边加载后缀, 可以把包含内容的部分内容忽略.
https://www.cnblogs.com/qiankun-site/p/5758924.html
group_concat 能将相同的行组合起来.
场景描述: 我一个群组中有多个成员, 现要查出来 所有群组信息 并且格式为: 一个群组信息记录中包含所有成员姓名.
给出数据表
-- 群组表
CREATE TABLE `t_group` (
`id` bigint(19) NOT NULL AUTO_INCREMENT COMMENT '主键',
`group_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '群组名称',
`member_num` bigint(19) DEFAULT NULL COMMENT '成员数',
`time` datetime DEFAULT NULL COMMENT '创建时间',
`resource_id` bigint(19) DEFAULT NULL COMMENT '应急现场的id',
`task_id` bigint(19) DEFAULT NULL COMMENT '应急任务的id',
`group_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '群组序号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;
-- 群组与成员关联表
CREATE TABLE `t_group_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`group_id` bigint(20) NOT NULL COMMENT '群组id',
`user_id` bigint(20) NOT NULL COMMENT '用户id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=latin1;
-- 成员信息表
CREATE TABLE `t_user_info` (
`id` bigint(19) NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_name` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '登录名',
`name` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '姓名',
`mobile` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '手机号',
`email` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '邮箱',
`department` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '部门',
`job` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '职务',
`role_id` bigint(19) DEFAULT NULL COMMENT '角色id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`create_by` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '修改人',
`password` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPACT COMMENT='用户表';
SQL实现
SELECT
tg.id AS id,
tg.group_number AS groupNumber,
tg.group_name AS groupName,
tg.member_num AS memberNum,
tg.resource_id AS resourceId,
ti.resource_name AS resourceName,
tg.task_id AS taskId,
tk.task_name AS taskName,
GROUP_CONCAT(tui.user_name) as userName,
DATE_FORMAT( tg.time, '%Y-%m-%d %H:%i:%s' ) AS time
FROM
t_group tg
LEFT JOIN t_group_user tgu ON tg.id = tgu.group_id
LEFT JOIN t_user_info tui ON tgu.user_id = tui.id
LEFT JOIN t_resource_task AS tk ON tg.task_id = tk.id
LEFT JOIN t_resource_info AS ti ON tg.resource_id = ti.id
GROUP BY
tg.id
ORDER BY
tg.time DESC
遇到个坑,虽然解决了但是不知道原因. 这里记录下, 看后续能不能研究下.
如果MySQL中查出来 列中 有 一行 id 类似这种
我在存数据的时候给的Long 类型 然后只能存进去最后一个id值, 搞了大半天才找到.
把Long类型换成String 就把所有id 都存进去了…
接收一个List类型的参数, 别忘了, 这个list里你可以放对象的.
insert into
t_group_user (group_id, user_id)
VALUES
(#{item.groupId}, #{item.userId})
Filter
接口 重写 doFilter()
HttpServletResponse
的响应头信息 HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse) res;
String originHeader = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", originHeader);
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "0");
response.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("XDomainRequestAllowed","1");
response.setHeader("XDomainRequestAllowed","1");
chain.doFilter(request, response);
header
com.tjtx.filter.HeaderFilter
header
/*
约定好了接口和参数, 但是单词拼错了, 我想改前端说不行, 不能改, 就得按照接口文档来. 蓝瘦,香菇, 我想说 前后端分离, 真正的前后端分离了么???
话说天下大势, 分久必合, 合久必分…