@(关键字)[Spring|SpringMVC|Mybatis]
一、写在前面
在上篇的文章中总结了搭建SSM框架的详细步骤,本章将对此框架进行测试。通过搭建一个权限管理系统,来证明使用框架的优越性。
项目地址:sombie007/SpringRain
二、动手干起来
1.搭建数据库以下为建数据库及建表脚本:
/*
Navicat MySQL Data Transfer
Source Server : 127.0.0.1
Source Server Version : 50714
Source Host : localhost:3306
Source Database : springrain
Target Server Type : MYSQL
Target Server Version : 50714
File Encoding : 65001
Date: 2016-10-18 19:42:03
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for permission
-- ----------------------------
DROP TABLE IF EXISTS `permission`;
CREATE TABLE `permission` (
`id` bigint(20) NOT NULL COMMENT '主键',
`pid` bigint(20) NOT NULL DEFAULT '0' COMMENT '上级ID',
`title` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '标题',
`type` smallint(6) NOT NULL DEFAULT '0' COMMENT '类型 0、菜单 1、功能',
`state` smallint(6) NOT NULL DEFAULT '0' COMMENT '状态 0、正常 1、禁用',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
`url` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '地址',
`permCode` varchar(30) COLLATE utf8_bin DEFAULT NULL COMMENT '权限编码',
`icon` varchar(30) COLLATE utf8_bin DEFAULT NULL COMMENT '图标',
`description` varchar(80) COLLATE utf8_bin NOT NULL COMMENT '描述',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='权限表';
-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`id` bigint(20) NOT NULL COMMENT '主键',
`name` varchar(30) NOT NULL COMMENT '角色',
`sort` smallint(6) NOT NULL DEFAULT '0' COMMENT '排序',
`description` varchar(60) NOT NULL COMMENT '描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表';
-- ----------------------------
-- Table structure for role_permission
-- ----------------------------
DROP TABLE IF EXISTS `role_permission`;
CREATE TABLE `role_permission` (
`id` bigint(20) NOT NULL COMMENT '主键',
`rid` bigint(20) NOT NULL COMMENT '角色ID',
`pid` bigint(20) NOT NULL COMMENT '权限ID',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='角色权限表';
-- ----------------------------
-- Table structure for sys_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_log`;
CREATE TABLE `sys_log` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`uid` bigint(20) unsigned DEFAULT NULL COMMENT '用户ID',
`content` varchar(600) NOT NULL DEFAULT '' COMMENT '日志内容',
`operation` varchar(250) DEFAULT NULL COMMENT '用户操作',
`crTime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=479615319648763905 DEFAULT CHARSET=utf8 COMMENT='操作日志表';
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`loginName` varchar(30) NOT NULL COMMENT '登录名称',
`password` varchar(32) NOT NULL COMMENT '密码',
`email` varchar(60) DEFAULT NULL COMMENT '邮箱',
`type` smallint(6) NOT NULL DEFAULT '0' COMMENT '0、普通用户 1、管理员',
`status` smallint(6) NOT NULL DEFAULT '1' COMMENT '0、禁用 1、正常',
`crTime` datetime NOT NULL COMMENT '创建时间',
`lastTime` datetime NOT NULL COMMENT '最后登录时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
-- ----------------------------
-- Table structure for user_role
-- ----------------------------
DROP TABLE IF EXISTS `user_role`;
CREATE TABLE `user_role` (
`id` bigint(20) NOT NULL COMMENT '主键',
`uid` bigint(20) NOT NULL COMMENT '用户ID',
`rid` bigint(20) NOT NULL COMMENT '角色ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户角色表';
2.使用generatorConfig.xml生成model(entity)和dao层代码
此不可能会出现一些问题,请参考文末踩过的坑;
- 配置generatorConfig.xml文件中数据库相关的信息,如下:
<!--数据库连接信息 -->
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/springrain?useUnicode=true&characterEncoding=utf-8"
userId="root"
password="root"></jdbcConnection>
- 配置model的生成路径
<!--生成的model 包路径 -->
<javaModelGenerator targetPackage="com.person.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="ture" />
<property name="trimStrings" value="true" />
<property name="rootClass" value="com.person.entity.BaseEntity" />
</javaModelGenerator>
- 配置xml Mapper的生成路径
<!--生成xml mapper文件 路径 -->
<sqlMapGenerator targetPackage="com.person.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="ture" />
</sqlMapGenerator>
- 配置dao层接口生成路径
<!-- 生成的Dao接口 的包路径 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.person.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="ture" /></javaClientGenerator>
- 将数据表和Entity映射起来,可同时配置多个
<table tableName="user" domainObjectName="User"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
<generatedKey column="id" sqlStatement="Mysql" type="post" identity="true" />
</table>
- 在项目名生点击右键,选择
Run as->Maven build
,在Golds
中输入mybatis-generator:generate
,然后点击Run
。
3.在src/main/java/service
包中建立Service接口,并建立其实现类;
/**
* @ClassName: UserService.java
* @Description: UserService接口
*
* @version: v1.1.0
* @author: She Xiangdong
* @date: Oct 19, 2016 11:19:13 PM
*
* Modification History:
* Date Author Version Description
*------------------------------------------------------------
* Oct 19, 2016 She Xiangdong v1.1.0 修改原因
*/
public interface UserService extends BaseService<User> {
User findUser(User user);
}
4.在src/main/java/controller
包中加入Controller层;
/**
*
* @ClassName: UserController.java
* @Description:User
*
* @version: v1.1.0
* @author: She Xiangdong
* @date: Oct 19, 2016 11:59:46 PM
*
* Modification History:
* Date Author Version Description
*------------------------------------------------------------
* Oct 19, 2016 She Xiangdong v1.1.0 修改原因
*/
@Controller
@RequestMapping("/userAction")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public String login(HttpServletRequest req, User user) {
System.out.println(user.toString());
User user1=new User();
user1=userService.findUser(user);
if (user1==null) {
return "fail";
}
return "success";
}
}
5.在项目名上点击右键,选择Run as
->Run on Server
,将项目部署在tomcat中,之后在浏览器中访问http://localhost:8080/SpringRain/
,即可看到如下页面。
6.事先在数据库中插入一条数据,如下:
第二弹_数据库数据.png7.在浏览器页面中输入数据,若和数据库中匹配则会跳转到"success.jsp"页面,若失败,则跳转"fail.jsp"页面;
三、总结
经过上一篇(手刃SSM--第一弹),和本篇的讲解,最终实现了SSM框架的搭建,并完成了框架的测试。在之后,可能会搭建一个权限管理系统,敬请关注。。。。。
四、踩过的坑
错误 1: 在执行
mybatis-generator:generate
时,出现以下错误:The POM for org.apache.maven:maven-plugin-api:jar:3.0.4 is missing, no dependency information available [WARNING] The POM for org.mybatis.generator:mybatis-generator-core:jar:1.3.2 is missing, no dependency information available [WARNING] The POM for org.apache.maven:maven-project:jar:3.0-alpha-2 is missing, no dependency information available
原因:maven不能找到相关的依赖包
解决:手动将jar包安装到本地。执行下面命令即可.-Dfile
代表jar存在路径.mvn install:install-file -DgroupId=org.apache.maven -DartifactId=maven-project -Dversion=3.0-alpha-2 -Dpackaging=jar -Dfile=C:\Users\shexd\Downloads\maven-project-3.0-alpha-2.jar
五、反馈与建议
- 微博:[@SombieFF]
- 邮箱:shexd1001@gmail.com
- 微信:WeChatId:wxxdong2102
非常感谢您阅读这份帮助文档。点击分享按钮,分享给更多的人呗。
wechat.jpg
网友评论