美文网首页
手刃SSM框架--第二弹

手刃SSM框架--第二弹

作者: Xiangdong_She | 来源:发表于2016-10-20 00:20 被阅读594次

    @(关键字)[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/,即可看到如下页面。

    第二弹_测试页面.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

    相关文章

      网友评论

          本文标题:手刃SSM框架--第二弹

          本文链接:https://www.haomeiwen.com/subject/zgffuttx.html