springboot+springmvc+mybatis项目整合
介绍:
上篇给大家介绍了ssm多模块项目的搭建,在搭建过程中spring整合springmvc和mybatis时会有很多的东西需要我们进行配置,这样不仅浪费了时间,也比较容易出错,由于这样问题的产生,Pivotal团队提供了一款全新的框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
特点:
ok,关于springboot的讲解就到这里大家想了解的更详细可以自行百度。
搭建springboot项目我推荐大家用idea或者sts(spring tool suite spring公司自己研发的一款编辑器),我现在用的是idea,所以接下来我是用idea搭建项目的
一、创建项目

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

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

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

二、添加pom.xml依赖
因为springboot不推荐使用jsp做页面,如果想要使用就必需的添加jsp的依赖
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.chaoqi</groupId>
<artifactId>springboot_demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>springboot_demo2</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--添加jsp依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
三、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目录,结构如下

新建IndexController

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整合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 ('', '小三', '3.2M', '起风了');
INSERT INTO `music_info` VALUES ('', '刘德华', '3.0M', '忘情水');
INSERT INTO `music_info` VALUES ('', '猪点点', '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
<?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.chaoqi.springboot_test.dao.mapper.MusicInfoMapper">
<resultMap id="BaseResultMap" type="com.chaoqi.springboot_test.dao.domain.MusicInfo">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="singer_name" jdbcType="VARCHAR" property="singerName" />
<result column="music_size" jdbcType="VARCHAR" property="musicSize" />
<result column="music_name" jdbcType="VARCHAR" property="musicName" />
</resultMap>
</mapper>
创建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<MusicInfo> 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<MusicInfo> 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<MusicInfo> getMusicInfo(MusicInfo musicInfo) {
List<MusicInfo> musicInfos = musicInfoMapper.selectAll(null);
return musicInfos;
}
}
创建完成后的结构如下

编辑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<MusicInfo> getMusicInfo(MusicInfo musicInfo) {
List<MusicInfo> 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这个框架流行的时间还不长,在搭建框架中可能会出现一些意向不到的错误,可能有些错误百度也不一定有答案,如果实在解决不了不妨加一下我们的java开发群294357875里面有很多大神为大家解决各种疑难杂症。
springboot+springmvc+mybatis项目整合的更多相关文章
- SpringBoot+SpringMVC+MyBatis快速整合搭建
作为开发人员,大家都知道,SpringBoot是基于Spring4.0设计的,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程.另外Spr ...
- SSM(Spring,SpringMVC,Mybatis)框架整合项目
快速上手SSM(Spring,SpringMVC,Mybatis)框架整合项目 环境要求: IDEA MySQL 8.0.25 Tomcat 9 Maven 3.6 数据库环境: 创建一个存放书籍数据 ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十五)阶段总结
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 一 每个阶段在结尾时都会有一个阶段总结,在<SSM整合基础篇& ...
- IDEA中maven搭建Spring+SpringMVC+mybatis项目
一.介绍 使用IDEA搭建maven web项目,整合框架Spring+SpringMVC+mybatis 项目结构图:
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM
写在前面的话 承接前文<Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven>,本篇所讲述的是如何使用maven与原ssm项目整合,使得一个普 ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复
写在前面的话 在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录.本文就是写一下发现问题的过程及解决方法.此bug在第一个项目中点这里还存在, ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(十一)SVN服务器进阶
日常啰嗦 上一篇文章<Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建>简单的讲了一下SVN服务器的搭建,并没有详细的介绍配置文件及一些复杂的功能, ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结
不知不觉,已经到了基础篇的收尾阶段了,看着前面的十几篇文章,真的有点不敢相信,自己竟然真的坚持了下来,虽然过程中也有过懒散和焦虑,不过结果还是自己所希望的,克服了很多的问题,将自己的作品展现出来,也发 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(二)Log4j讲解与整合
日常啰嗦 上一篇文章主要讲述了一下syso和Log间的一些区别与比较,重点是在项目的日志功能上,因此,承接前文<Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)Sy ...
随机推荐
- STL源码剖析之序列式容器
最近由于找工作需要,准备深入学习一下STL源码,我看的是侯捷所著的<STL源码剖析>.之所以看这本书主要是由于我过去曾经接触过一些台湾人,我一直觉得台湾人非常不错(这里不涉及任何政治,仅限 ...
- js获取某个日期所在周周一的日期
第一次写,做个小笔记. 第一步:获取该日期的星期数: 第二步:在该日期上减去他的星期数再减1,(注:星期日获取到的星期数是0): 下面是具体代码: function GetMonday(dd) { v ...
- mysql3 - 常规数据检索、常见操作与函数
一.常规数据检索 二.常见操作与函数
- SpringBoot中过滤器、监听器以及拦截器
属于javax.servlet所提供的Api 拦截器原理 简单来讲是通过动态代理实现,被访问的目标方法通过代理类(方法)来执行,这样我们就可以在真正要执行的方法执行前.后做一些处理: 通过拦截器这种方 ...
- Android动态加载技术(插件化技术)
No1: 插件化技术的好处: 1)减轻应用的内存和CPU占用 2)实现热插拔,即在不发布新版本的情况下更新某些模块 No2: 插件化方案必须要解决三个基础性问题:资源访问.Activity生命周期的管 ...
- CompletableFuture CompletableFuture.supplyAsync 异常处理
CompletableFuture 异常处理completeExceptionally可以把异常抛到主线程 /** * User: laizhenwei * Date: 2018-01-30 Time ...
- SpringBoot整合Mybatis,多数据源,事务,支持java -jar 启动.
用了一段时间SpringBoot,之前配置MYBATIS ,在打包WAR 放到tomcat下正常,但是WAR已经过时了,现在流行直接打包JAR 丢到DOCKER 里,无奈JAR 启动的时候MAPPER ...
- mac的一些小技巧
切换到超级管理员: sudo -s: 让你很快的全屏之间进行切换!很方便!很实用! command+tab 今天的感觉到公司的每一个人员,对于mac的系统的使用都是非常的熟悉的,我还什么都不会. 我得 ...
- 基于Python的Flask的开发实战(第二节程序的基本结构)
1.初始化 所有的flask程序都必须创建一个程序实例 web服务器使用wsgi接口协议,把接收客户端的请求都转发给这个程序实例来进行处理.这个程序实例就是flask对象 from flask imp ...
- 使用axios以及http-proxy-middleware代理处理跨域的问题
axios现在以及是尤大大推荐使用的了,官方不在维护vue-reresource. 由于是地第一次使用axios, 在使用过程中猜了很大的坑 首先我们使用vue-cli创建的项目, 访问接口肯定是跨域 ...