springboot+SSM Demo框架搭建

源码连接:https://gitee.com/lingyao1/

一、pom.xml文件

首先添加必要的依赖

  1. 加入web模块

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
  2. 整合mybaties

    <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version>
    </dependency>
    
  3. 添加数据库连接依赖(这里用的shimysql)

    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>
    </dependency>
    

    下面是完整的pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><packaging>war</packaging><!-- 添加springboot的父依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.6</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.springboot</groupId><artifactId>mvc_demo</artifactId><version>0.0.1-SNAPSHOT</version><name>ssm_demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><!--web模块--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!-- mysql连接  --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--单元测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><!--maven打包插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

二、数据库建表脚本

#2022-4-14 lingyao建表
DROP TABLE IF EXISTS `login_info`;
CREATE TABLE login_info(`id` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主键',`user_account` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户登录名',`user_password` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户登录密码',`status` VARCHAR(20)  CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '状态: 1、启用-ENABLE  2、禁用-DISABLE',`created_time` DATETIME NOT NULL COMMENT '创建时间',`last_modify_time` DATETIME NOT NULL COMMENT '最后一次修改时间',PRIMARY KEY (`id`),UNIQUE INDEX (`user_account`)
)ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '用户登录信息表';#2022-4-14 lingyao 将表名`login_info`修改为`t_login_info`
ALTER TABLE login_info RENAME t_login_info;
#2022-4-14 lingyao插入一条测试数据
INSERT INTO `t_login_info` VALUES('1','小九','111111','ENABLE',now(),now())

三、创建实体类Entity

package com.springboot.ssm_demo.entity;import java.io.Serializable;
import java.util.Date;/*** @author lingyao* @description 实体类用于对应数据库中的表* mybatis配置文件中默认设置了驼峰转换,所以定义实体类时最好也进行驼峰命名*/
public class LoginEntity implements Serializable {private static final long serialversionUID = 1L;private String id;private String userAccount;private String userPassword;private String status;private Date createdTime;private Date lastModifyTime;/*** 创建无参构造器*/public LoginEntity(){ }/*** 创建有参构造器*/public LoginEntity(String id, String userAccount, String userPassword, String status, Date createdTime,Date lastModifyTime ){id = this.id;userAccount = this.userAccount;userPassword = this.userPassword;status = this.status;createdTime = this.createdTime;lastModifyTime =this.lastModifyTime;}//创建getter、setter方法public String getUserAccount() {return userAccount;}public String getUserPasssword() {return userPassword;}public String getStatus() {return status;}public Date getCreatedTime() {return createdTime;}public Date getLastModifyTime() {return lastModifyTime;}public String getId() {return id;}public void setId(String id) {this.id = id;}public void setUserAccount(String userAccount) {this.userAccount = userAccount;}public void setUserPasssword(String userPasssword) {this.userPassword = userPasssword;}public void setStatus(String status) {this.status = status;}public void setCreatedTime(Date createdTime) {this.createdTime = createdTime;}public void setLastModifyTime(Date lastModifyTime) {this.lastModifyTime = lastModifyTime;}//创建tostring方法@Overridepublic String toString() {return "LoginEntity{" +"id='" + id + '\'' +", userAccount='" + userAccount + '\'' +", userPasssword='" + userPassword + '\'' +", status='" + status + '\'' +", createdTime=" + createdTime +", lastModifyTime=" + lastModifyTime +'}';}
}

四、创建数据访问层Mapper接口以及对应的实现

  • mapper接口:

    package com.springboot.ssm_demo.mapper;import com.springboot.ssm_demo.entity.LoginEntity;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    import org.springframework.stereotype.Repository;import java.util.List;/*** @author lingyao* @description mapper层做数据持久工作的 实现类mapper.xml(也可用注解形式)*/
    @Repository
    @Mapper
    public interface LoginMapper {/*** 通过id查询用户信息*/public LoginEntity queryById(@Param("id") String id);
    //    public List<LoginEntity> test();
    }
    
  • xml配置文件对接口进行实现

这里接口的实现我采用的是xml配置文件(具体xml细节需可以查寻mybaties)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.springboot.ssm_demo.mapper.LoginMapper"><!--查询 t_login_info表的sql片段 --><sql id="t_login_info">select id,user_account,user_password,status,created_time,last_modify_time from t_login_info</sql><!--结果集映射集--><resultMap id="loginResult" type="com.springboot.ssm_demo.entity.LoginEntity"><result property="id" column="id" ></result><result property="userAccount" column="user_account" ></result><result property="userPassword" column="user_password" ></result><result property="status" column="status" ></result><result property="createdTime" column="created_time" ></result><result property="lastModifyTime" column="last_modify_time" ></result></resultMap><!--根据登录id查询登录信息--><select id="queryById"  resultMap="loginResult"><include refid="t_login_info"></include>where id=#{id}</select>
<!--    <select id="test"  resultMap="loginResult">-->
<!--        <include refid="t_login_info"></include>-->
<!--    </select>-->
</mapper>

注意事项:

  1. xml文件名应与mapper接口名对应

  2. xml文件里的namespace应该对应接口所在的包的完整路径(例如:com.springboot.ssm_demo.mapper.LoginMapper)

  3. select标签的id属性应该和mapper接口中的方法相同(id="queryById就对应就扣中的queryById接口方法)

  4. 注意查询参数类型要正确。

  5. 返回的查询结果类型要正确。(特别注意返回结果实体Entity的属性和数据库表字段的对应,可以用resultmap解决)

    五、services层

    1. 接口

      package com.springboot.ssm_demo.service;import com.springboot.ssm_demo.entity.LoginEntity;
      /*** @author lingyao* @description 业务程用于处理业务逻辑*/
      public interface LoginService {public LoginEntity queryById(String id);
      }
      
    2. 接口实现类

      package com.springboot.ssm_demo.service;import com.springboot.ssm_demo.entity.LoginEntity;
      import com.springboot.ssm_demo.mapper.LoginMapper;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;/*** @author lingyao* @description*/
      @Service
      public class LoginServiceImpl implements LoginService {@Autowiredprivate LoginMapper loginMapper;@Overridepublic LoginEntity queryById(String id) {return loginMapper.queryById(id);}
      }
      

      五、controller层

      package com.springboot.ssm_demo.controller;import org.omg.CORBA.PUBLIC_MEMBER;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RestController;/*** @author lingyao* @description view层,前后端数据交互层* //@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。也可以在方法上加@ResponseBody注解,返回实体对象。* @RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面*/
      @RestController
      public class LoginController {@RequestMapping(value = "/")String index() {return "this is Spring Boot!";}public void test (){System.out.println("单元测试!");}
      }
      

六、配置文件

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword:url: jdbc:mysql://localhost:3306/shop_demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
#扫描mapperxml文件
mybatis:mapper-locations: classpath*:mapper/*.xml
#  type-aliases-package: classpath:com/springboot/ssm/entity
#打印sql日志
logging:level:com.springboot.ssm_demo.mapper: debug

七、附录

  1. sql脚本,用于测试框架是否搭建成功,应在测试前执行。
#2022-4-14 lingyao建表
DROP TABLE IF EXISTS `login_info`;
CREATE TABLE login_info(`id` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主键',`user_account` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户登录名',`user_password` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户登录密码',`status` VARCHAR(20)  CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '状态: 1、启用-ENABLE  2、禁用-DISABLE',`created_time` DATETIME NOT NULL COMMENT '创建时间',`last_modify_time` DATETIME NOT NULL COMMENT '最后一次修改时间',PRIMARY KEY (`id`),UNIQUE INDEX (`user_account`)
)ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '用户登录信息表';#2022-4-14 lingyao 修改表名
ALTER TABLE login_info RENAME t_login_info;
#2022-4-14 lingyao插入一条测试数据
INSERT INTO `t_login_info` VALUES('1','小九','111111','ENABLE',now(),now())

八、测试

  1. 找到启动类SsmDemoApplication,启动项目,项目未报错,然后在浏览器中输入输入controller类中的index方法的路径(localhost:8080/)浏览器页面出现‘this is Spring Boot!’那么表示项目启动成功。

  2. 在测试类中进行单元测试查看通过接口能否调用到数据库里的数据

  3. 在测试类中调用service层中的queryById(id)方法,并运行查询到下面的结果表示测试成功。至此框架全部搭建成功。

    注意:在测试数据库数据调用之前要在本地数据库执行附录中的sql脚本

n_info RENAME t_login_info;
#2022-4-14 lingyao插入一条测试数据
INSERT INTO t_login_info VALUES(‘1’,‘小九’,‘111111’,‘ENABLE’,now(),now())


## 八、测试1. 找到启动类SsmDemoApplication,启动项目,项目未报错,然后在浏览器中输入输入controller类中的index方法的路径(localhost:8080/)浏览器页面出现‘this is Spring Boot!’那么表示项目启动成功。2. 在测试类中进行单元测试查看通过接口能否调用到数据库里的数据3. 在测试类中调用service层中的queryById(id)方法,并运行查询到下面的结果表示测试成功。至此框架全部搭建成功。**注意:在测试数据库数据调用之前要在本地数据库执行附录中的sql脚本**

springboot+SSM Demo框架搭建相关推荐

  1. SpringBoot后端项目框架搭建

    SpringBoot后端项目框架搭建 本节内容服务于SpringBoot + Vue 搭建 JavaWeb 增删改查项目. 工具安装 电脑已安装\配置如下工具: IDEA.jdk.MySQL及其可视化 ...

  2. SSM整合框架搭建(适合新手)

    SSM整合(SpringMvc+Spring+Mybatis) 首先创建一个Dynamic Web Project(JavaWeb动态工程) 创建一个xxx.xxx.xxx.controller包用来 ...

  3. springboot整合tk-mybatis框架搭建

    项目结构截图放在文末了,图片太大怕影响观看体验,想模仿搭建项目的可以拉到底看下截图再动手不迟. 第一步:依赖 <properties><project.build.sourceEnc ...

  4. springboot+dubbo+zookeeper详细搭建

    springboot+dubbo+zookeeper框架搭建 环境搭建 启动zookeeper 启动dubbo-addmin-2.6.0监控平台(可省) 服务提供者 引包 配置参数 启动类 demo ...

  5. ssm框架搭建连接mysql_从零开始搭建SSM框架(Spring + Spring MVC + Mybatis)

    最近在回顾和总结一些技术,想到了把之前比较火的 SSM 框架重新搭建出来,作为一个小结,同时也希望本文章写出来能对大家有一些帮助和启发,因本人水平有限,难免可能会有一些不对之处,欢迎各位大神拍砖指教, ...

  6. ssm框架整合_框架整合战斗压缩粮篇SpringCloud+SpringBoot+SSM

    各位小伙伴今天又敲了多少Bug了,今天改Bug又花了多长时间啦,我们每天就是敲Bug,敲完改,改完敲,习惯就好啦,心态摆正.Debug起来!!! 上次是Dubbo整合,今天终结篇Cloud整合,不要废 ...

  7. java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成、解析、下载

    java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成.解析.下载 自己用java搭建一个属于自己APP二维码合成网站.我的思路是这样的: 1.用户在前台表单提交APP的IOS和Andro ...

  8. 从零开始搭建SpringBoot的Demo

    从零开始搭建SpringBoot的Demo 版本说明: ​ Sprngboot:2.1.3.RELEASE ​ jdk:1.8 ​ Mysql:5.7 ​ Idea:2018.2.4 功能:集成通用M ...

  9. java实现登陆ssm框架_SSM框架搭建web服务器实现登录功能(Spring+SpringMVC+Mybatis)

    初学java EE,虽然知道使用框架会使开发更加便捷高效,但是对于初学者来说,感到使用框架比较迷惑,尤其是各种jar包的引用.各种框架的配置.注解的使用等等. 最好的学习方法就是实践,于是下载了一个现 ...

  10. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbo zookeeper 更多 个人分类: ...

最新文章

  1. CSDN 居然免费送会员?程序员们快来领!
  2. Spring Boot集成Quartz注入Spring管理的类
  3. OpenStack 界面开发中的排序问题
  4. python如何调用字典_如何访问python字典里的值?(实例解析)
  5. Matlab之while循环语句
  6. nginx+lua (一)
  7. android 程序退出广播,android 利用广播实现程序的强制退出
  8. w3c 跨域请求规范
  9. 利用Caffe实现mnist的数据训练
  10. linux安装docker部署java项目
  11. scala 类中的对象是类_Scala中的类和对象
  12. 教你实现图片的惰性加载
  13. java上传图片特征码到服务器,记一个Base64编码后经网络传输产生的问题
  14. Nvidia-Docker
  15. zetoro导入csl 软件学报
  16. 离散数学——容斥原理
  17. 最新最全张家界旅游攻略(您必须知道的张家界攻略)
  18. 岁月温柔-8 妈妈的抑郁症?
  19. emp和emn是什么文件,emnemp是什么文件
  20. Canvas之绘制时钟

热门文章

  1. 谷歌gmail注册入口_如何更改,恢复,重设Gmail,Google云端硬盘,Android,Chrome的Google帐户密码?...
  2. Python使用APP Inventor网络微数据库TinyWebDB
  3. 网络安全-MySQL数据库
  4. 实际利率 名义利率
  5. 中兴a2018拆机图片_中兴a2s拆机视频
  6. flash cs3下停止movieClip的播放
  7. 用好小程序码这张小程序专有的名片
  8. 9.2-Scrapy框架爬虫【进阶】-spiders用法
  9. 33种著名汽车标志及来历
  10. 配置git mergetool不产生*.orig文件