1.不使用骨架创建一个maven工程

2.修改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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>lucky</groupId>
<artifactId>day24_springboot_yelou</artifactId>
<version>1.0-SNAPSHOT</version> <!--所有的springBoot工程都必须继承spring-boot-starter-parent-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent> <dependencies>
<!--web工程的起步依赖,这个起步依赖已经帮我们整合SpringMVC了-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies> </project>

3.编写引导类及控制器类

引导类:MySpringBootApplication.java

package lucky;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; //声明该类是一个springboot引导类:springboot应用的入口
@SpringBootApplication
public class MySpringBootApplication {
public static void main(String[] args) {
//run方法:运行SpringBoot的引导类,run参数就是springBoot引导类的字节码对象
SpringApplication.run(MySpringBootApplication.class);
}
}

控制器类:

package lucky.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; @Controller
@RequestMapping(path = "/users")
public class UsersController {
@RequestMapping(path = "/query")
@ResponseBody
public String queryUsers(){
return "hello users";
}
}

至此,springboot整合springmvc完成了。(注意:整合工作由spring-boot-starter-web这个起步依赖帮我们完成)

4.访问静态资源

查看源码,有一个叫做ResourceProperties的类,里面就定义了静态资源的默认查找路径:

 private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
private String[] staticLocations;
private boolean addMappings;
private final ResourceProperties.Chain chain;
private final ResourceProperties.Cache cache;

默认的静态资源路径为:

- classpath:/META-INF/resources/

- classpath:/resources/

- classpath:/static/

- classpath:/public/

只要静态资源放在这些目录中任何一个,SpringMVC都会帮我们处理。

我们习惯会把静态资源放在classpath:/static/目录下。我们创建目录,并且添加一些静态资源:

在浏览器中访问:http://localhost:8080/common.js

5.拦截器

拦截器也是我们经常需要使用的。
拦截器不是一个普通属性,而是一个类,所以就要用到java配置方式了。

(1)定义一个拦截器

package lucky.interceptors;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @Component
public class MyInterceptor implements HandlerInterceptor { @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle method is running!");
return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle method is running!");
} @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion method is running!");
}
}

(2)定义配置类,注册拦截器

package lucky.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration
public class MvcConfiguration implements WebMvcConfigurer { @Autowired
private HandlerInterceptor myInterceptor; /**
* 重写接口中的addInterceptors方法,添加自定义拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}

控制台输出:

6.整合连接池

jdbc连接池是spring配置中的重要一环,我们只要找到SpringBoot提供的启动器即可。

在pom.xml中引入jdbc的启动器:

<!--jdbc的启动器,默认使用HikariCP连接池-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--不要忘记数据库驱动,因为springboot不知道我们使用的什么数据库,这里选择mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

SpringBoot已经自动帮我们引入了一个连接池:

HikariCP应该是目前速度最快的连接池了,我们看看它与c3p0的对比:

#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=plj824 #spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=lucky.domain
#加载Mybatis映射文件
#mybatis.mapper-locations=classpath:mapper/*Mapper.xml # 设置org.springframework包的日志级别为debug
logging.level.org.springframework=debug

需要注意,这里没有配置mapper接口扫描包,因此我们需要给每一个Mapper接口添加@Mapper注解,才能被识别。

使用通用Mapper,在POM.xml文件中添加如下内容。

 <!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>

数据库表对应实体类:

注意:@Table、@Id等注解是通用Mapper提供的

参考文献:

package lucky.domain;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; @Table(name="users")
public class Users { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // 主 键
private String username; // 用户名
private String password; // 密 码
private String name; // 姓 名 public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
'}';
}
}

UsersMapper.java

package lucky.mapper;

import lucky.domain.Users;
import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper
public interface UsersMapper extends tk.mybatis.mapper.common.Mapper<Users>{ }

7.控制器及service代码

UsersService.java

package lucky.service;

import lucky.domain.Users;
import lucky.mapper.UsersMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; @Service
public class UsersService { @Autowired
private UsersMapper usersMapper; public Users queryUsersById(Integer id){
return this.usersMapper.selectByPrimaryKey(id);
} @Transactional
public void deleteUserById(Long id){
this.usersMapper.deleteByPrimaryKey(id);
}
}

UsersController.java

package lucky.controller;

import lucky.domain.Users;
import lucky.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; @Controller
@RequestMapping(path = "/users")
public class UsersController { @Autowired
private UsersService usersService; @RequestMapping(path = "/query")
@ResponseBody
public String queryUsers(){
return "hello users";
} @RequestMapping(path = "/queryUsersById")
@ResponseBody
public Users queryUsersById(@RequestParam("id") Integer id){
return this.usersService.queryUsersById(id);
} }

8.运行效果

003 SpringBoot整合SpringMVC、Mybatis 案例的更多相关文章

  1. 【SpringBoot】11.Springboot整合SpringMVC+Mybatis(上)

    Springboot整合SpringMVC+Mybatis 需求分析:通过使用Springboot+SpringMVC+Mybatis 整合实现一个对数据库表users表的CRUD操作. 1.创建项目 ...

  2. 【SpringBoot】11-1.Springboot整合Springmvc+Mybatis增删改查操作(下)

    整合过程:https://www.isdxh.com/68.html 一.增--增加用户 1.创建实体类 package com.dxh.pojo; public class Users { priv ...

  3. springboot整合Shiro功能案例

    Shiro 核心功能案例讲解 基于SpringBoot 有源码 从实战中学习Shiro的用法.本章使用SpringBoot快速搭建项目.整合SiteMesh框架布局页面.整合Shiro框架实现用身份认 ...

  4. 关于CKEditor4.5.6的使用,自定义toolbar配置,上传图片案例(SpringMVC+MyBatis案例),自定义行高,去编辑器的中内容,将编辑器中内容设置到指定的位置等

     关于CKEditor的一个配置整理,改文件为config.js: 文件内容如下: /** * @license Copyright (c) 2003-2016, CKSource - Frede ...

  5. 【Spring 整合篇】整合SpringMVC+Mybatis(一)

    首先,创建Maven Project,packaging为war,修改pom.xml. <properties> <!-- JDK版本 --> <java.version ...

  6. spring boot整合 springmvc+mybatis

    需要以下依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId&g ...

  7. Spring整合SpringMVC + Mybatis基础框架的配置文件

    目录 前言 1. Mybatis层编写 2. Spring层编写 1. Spring整合Mybatis 2. Spring整合service 3. SpringMVC层编写 1. 编写web.xml ...

  8. SpringBoot整合Freemarker+Mybatis

    开发工具 , 开始 新建工程 .选择Spring Initializr 下一步 下一步,选择需要的组件 ..改一下工程名,Finish ..目录结构 首先,修改pom文件 然后,将applicatio ...

  9. Java知识总结---整合SpringMVC+Mybatis+Spring(二)

    在如今的Java Web开发过程中,各种各样框架层出不穷.在工作中,框架的使用也越来越频繁. 今天介绍一下如今比較流行的SpringMVC.Mybatis和Spring框架.学习一下怎样在项目中使用它 ...

随机推荐

  1. rust crates 国内镜像加速配置

    rust 很不错,但是crates 经常下载有点慢,当前阿里云还没有相关的镜像,还有科大为我们提供了一个 配置方法 添加crates 配置 $HOME/.cargo/config 目录 [regist ...

  2. redisql 试用

    redisql 是一个redis 模块,可以让redis 支持sql 查询,基于rust编写 具有以下特性 快速,每秒130k的插入 使用标准sql 容易操作,基于redis,使用标准的redis 二 ...

  3. 【JZOJ6245】【20190627】A

    题目 给定一颗\(n\)个点的树,边权为1,并给出\(\{w_i\}\)满足\(w_0=0\) \[ f(i) = \sum_{j=1}^{n} w_{dis(i,j)} \] 依次输出每一个\(f_ ...

  4. cesium地下模式(地表透明)2

    接上一篇博客,这篇直接分析火星的源码,看它到底改了些什么. 注意:在cesium1.63.1版本改变了模块化方式,由AMD改为ES6模块化.注意引入文件加载模块时做出对应修改. 1.火星代码里修改了4 ...

  5. [技术博客]采用Qthread实现多线程连接等待

    采用Qthread实现多线程连接等待 ​ 本组的安卓自动化测试软件中,在测试开始前需要进行连接设备的操作,如下图左侧的按钮 ​ ​ 后端MonkeyRunner相关操作的程序中提供了connect() ...

  6. Unity资源商店 Asset store下载文件夹的位置

    Win10 C:\Users\用户名\AppData\Roaming\Unity\Asset Store-5.x\ Mac OS X ~/Library/Unity/Asset Store

  7. jcenter下载不了时,用国内镜像下载解决

    修改build.gradle,以下是原本的配置信息 buildscript { repositories { google() jcenter() } dependencies { classpath ...

  8. 对数损失函数logloss详解和python代码

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...

  9. Linux虚拟机:发布WebService接口出现异常,无法访问接口

    Linux虚拟机:发布WebService接口出现异常,无法访问接口 今天在部署WebService工程的时候遇到的问题: 在Linux虚拟机上部署一个tomcat同时在tomcat下放置2个工程,其 ...

  10. 011 webpack中使用vue

    一:在webpack中使用vue 1.安装vue的包 2.index.html <!DOCTYPE html> <html lang="en"> <h ...