框架:springboot组合spring、springmvc、mybatis的一个小demo

Spring+SpringMVC+Mybatis就是大名顶顶的SSM了。

这里我们使用IDEA的SpringBoot和版本控制器MAVEN构建一个SSM的demo。


介绍:

  在搭建过程中spring整合springmvc和mybatis时会有很多的东西需要我们进行配置,这样不仅浪费了时间,也比较容易出错,由于这样问题的产生,Pivotal团队提供了一款全新的框架Spring Boot,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

特点:

1. 创建独立的Spring应用程序

2. 嵌入的Tomcat,无需部署WAR文件

3. 简化Maven配置

4. 自动配置Spring

5. 提供生产就绪型功能,如指标,健康检查和外部配置

6. 绝对没有代码生成和对XML没有要求配置

(以上大部分内容摘自百度百科)

 ok,关于springboot的讲解就到这里大家想了解的更详细可以自行百度。

搭建springboot项目我推荐大家用idea或者sts(spring tool suite spring公司自己研发的一款编辑器),我现在用的是idea,所以接下来我是用idea搭建项目的

 一、创建项目

 框架:springboot组合spring、springmvc、mybatis的一个小demo_第1张图片

 填写完Group和Atrifact后点击下一步,这里我选择的是jar,因为官方文档推荐的是打包成JAR,所以这里就不过多解释了。

 框架:springboot组合spring、springmvc、mybatis的一个小demo_第2张图片

 这里勾选上web

 框架:springboot组合spring、springmvc、mybatis的一个小demo_第3张图片

 这里勾选上MySQL、JDBC和Mybatis点击下一步

 框架:springboot组合spring、springmvc、mybatis的一个小demo_第4张图片

这里输入项目名和项目路径后点击完成

框架:springboot组合spring、springmvc、mybatis的一个小demo_第5张图片

这是新建完成后的项目结构

框架:springboot组合spring、springmvc、mybatis的一个小demo_第6张图片

 

 二、添加pom.xml依赖

因为springboot不推荐使用jsp做页面,如果想要使用就必需的添加jsp的依赖

复制代码



    4.0.0

    com.chaoqi
    springboot_demo2
    0.0.1-SNAPSHOT
    jar

    springboot_demo2
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.0.RELEASE
        
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.2
        

        
            mysql
            mysql-connector-java
            runtime
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            org.springframework.boot
            spring-boot-starter-tomcat
        
        
            org.apache.tomcat.embed
            tomcat-embed-jasper
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


复制代码

 

 

三、springboot整合springmvc

因为在创建项目的时候我们选择了mybatis和jdbc所以在这里也要把他们两也给配置进去

编辑application.properties

复制代码

# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp

#数据源开发配置
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 123456

# mybatis接口文件位置
mybatis.mapper-locations: classpath:mapper/*.xml
mybatis.type-aliases-package: com.chaoqi.springboot_demo2.domain

复制代码

如果大家习惯用application.yml那也可以用,但是用application.yml在第一次启动项目的时候一定要maven clean一下,不然会报错。

复制代码

server:
  port: 8080

spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
  datasource:
    url: jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

mybatis:
  mapper-locations: classpath:mapping/*.xml
  type-aliases-package: com.chaoqi.springboot_demo2.domain

复制代码

编辑完application.properties之后再src/mian下创建webapp目录,结构如下

框架:springboot组合spring、springmvc、mybatis的一个小demo_第7张图片

 

新建IndexController

框架:springboot组合spring、springmvc、mybatis的一个小demo_第8张图片

 

 

复制代码

package com.chaoqi.springboot_test.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class IndexController {
  private static final String INDEX = "index";
    @RequestMapping("/show")
    public String getIndex() {
        return INDEX;
    }
}

复制代码

 

运行main函数

框架:springboot组合spring、springmvc、mybatis的一个小demo_第9张图片

访问页面,成功

 框架:springboot组合spring、springmvc、mybatis的一个小demo_第10张图片

四、springboot整合mybatis

 创建数据库表

复制代码

-- ----------------------------
-- Table structure for music_info
-- ----------------------------
DROP TABLE IF EXISTS `music_info`;
CREATE TABLE `music_info` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `singer_name` varchar(100) NOT NULL COMMENT '歌手名',
  `music_size` varchar(100) NOT NULL COMMENT '歌曲大小',
  `music_name` varchar(100) NOT NULL COMMENT '歌曲名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of music_info
-- ----------------------------
INSERT INTO `music_info` VALUES ('1', '小三', '3.2M', '起风了');
INSERT INTO `music_info` VALUES ('2', '刘德华', '3.0M', '忘情水');
INSERT INTO `music_info` VALUES ('3', '猪点点', '5.0M', '会写程序的小猪');

复制代码

创建pojo

复制代码

package com.chaoqi.springboot_test.dao.domain;

public class MusicInfo {
    // 主键id
    private Integer id;

    // 歌手名
    private String singerName;

    // 歌曲大小
    private String musicSize;

    // 歌曲名
    private String musicName;

    /**
     * 获取 主键id music_info.id
     *
     * @return 主键id
     */
    public Integer getId() {
        return id;
    }

    /**
     * 设置 主键id music_info.id
     *
     * @param id 主键id
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 获取 歌手名 music_info.singer_name
     *
     * @return 歌手名
     */
    public String getSingerName() {
        return singerName;
    }

    /**
     * 设置 歌手名 music_info.singer_name
     *
     * @param singerName 歌手名
     */
    public void setSingerName(String singerName) {
        this.singerName = singerName == null ? null : singerName.trim();
    }

    /**
     * 获取 歌曲大小 music_info.music_size
     *
     * @return 歌曲大小
     */
    public String getMusicSize() {
        return musicSize;
    }

    /**
     * 设置 歌曲大小 music_info.music_size
     *
     * @param musicSize 歌曲大小
     */
    public void setMusicSize(String musicSize) {
        this.musicSize = musicSize == null ? null : musicSize.trim();
    }

    /**
     * 获取 歌曲名 music_info.music_name
     *
     * @return 歌曲名
     */
    public String getMusicName() {
        return musicName;
    }

    /**
     * 设置 歌曲名 music_info.music_name
     *
     * @param musicName 歌曲名
     */
    public void setMusicName(String musicName) {
        this.musicName = musicName == null ? null : musicName.trim();
    }

    @Override
    public String toString() {
        return "MusicInfo{" +
                "id=" + id +
                ", singerName='" + singerName + '\'' +
                ", musicSize='" + musicSize + '\'' +
                ", musicName='" + musicName + '\'' +
                '}';
    }
}

复制代码

 

创建mapper.xml

复制代码




  
    
    
    
    
  

复制代码

创建mapper

复制代码

package com.chaoqi.springboot_test.dao.mapper;

import com.chaoqi.springboot_test.dao.domain.MusicInfo;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface MusicInfoMapper {
    @ResultMap("BaseResultMap")
    @Select("select * from music_info")
    List selectAll(MusicInfo musicInfo);
}

复制代码

service接口

复制代码

package com.chaoqi.springboot_test.service;


import com.chaoqi.springboot_test.dao.domain.MusicInfo;

import java.util.List;

public interface MusicInfoService {

    public List getMusicInfo(MusicInfo musicInfo);
}

复制代码

service实现类

复制代码

package com.chaoqi.springboot_test.service.impl;

import com.chaoqi.springboot_test.dao.domain.MusicInfo;
import com.chaoqi.springboot_test.dao.mapper.MusicInfoMapper;
import com.chaoqi.springboot_test.service.MusicInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class MusicInfoServiceImpl  implements MusicInfoService {

    @Autowired
    private MusicInfoMapper musicInfoMapper;

    @Override
    public List getMusicInfo(MusicInfo musicInfo) {
        List musicInfos = musicInfoMapper.selectAll(null);
        return musicInfos;
    }
}

复制代码

创建完成后的结构如下

框架:springboot组合spring、springmvc、mybatis的一个小demo_第11张图片

 

编辑indexController

 

复制代码

package com.chaoqi.springboot_test.web;

import com.chaoqi.springboot_test.dao.domain.MusicInfo;
import com.chaoqi.springboot_test.service.MusicInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class IndexController {

    private static final String INDEX = "index";
    @Autowired
    private MusicInfoService musicInfoService;

    @RequestMapping("/show")
    public String getIndex() {
        return INDEX;
    }

    @RequestMapping("/music")
    @ResponseBody
    public List getMusicInfo(MusicInfo musicInfo) {
        List musicInfoList = musicInfoService.getMusicInfo(null);
        return musicInfoList;
    }
}

复制代码

给SpringbootTestApplication类加上注解@MapperScan("com.chaoqi.springboot_test.dao.mapper")

复制代码

package com.chaoqi.springboot_test;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@MapperScan("com.chaoqi.springboot_test.dao.mapper")
public class SpringbootTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootTestApplication.class, args);
    }
}

复制代码

运行项目,成功,springboot+springmvc+mybatis整合完成(源码下载地址:https://github.com/caicahoqi/ChaoqiIsPrivateLibrary)

框架:springboot组合spring、springmvc、mybatis的一个小demo_第12张图片

你可能感兴趣的:(Java框架)