手刃SSM框架--第二弹

2016-10-20  本文已影响594人  Xiangdong_She

@(关键字)[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层代码

此不可能会出现一些问题,请参考文末踩过的坑

<!--数据库连接信息 -->
<jdbcConnection 
driverClass="com.mysql.jdbc.Driver" 
connectionURL="jdbc:mysql://localhost:3306/springrain?useUnicode=true&characterEncoding=utf-8" 
userId="root" 
password="root"></jdbcConnection>
<!--生成的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文件 路径 -->
<sqlMapGenerator targetPackage="com.person.mapper" targetProject="src/main/java"> 
<property name="enableSubPackages" value="ture" />
</sqlMapGenerator>
<!-- 生成的Dao接口 的包路径 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.person.dao" targetProject="src/main/java"> 
<property name="enableSubPackages" value="ture" /></javaClientGenerator>
<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>

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/,即可看到如下页面。

第二弹_测试页面.png

6.事先在数据库中插入一条数据,如下:

第二弹_数据库数据.png

7.在浏览器页面中输入数据,若和数据库中匹配则会跳转到"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

五、反馈与建议


非常感谢您阅读这份帮助文档。点击分享按钮,分享给更多的人呗。


wechat.jpg
上一篇下一篇

猜你喜欢

热点阅读