使用sping boot到底有多爽,用下面这幅图来表达
1、开始我们的springboot之旅(后面会给出下载链接)
首先进入https://start.spring.io/ 开始创建我们的工程结构,非常简单,点击下载下来,然后用idea打开或者idea中直接创建工程
idea中创建springboot项目
我们选择new project
然后next
然后直接finish就行了
2、进入工程结构中
你们除了工程自己创建的文件夹,其余是我后来创建要讲的一些内容,我们后期会一点点讲,
1)首先是生成的pom.xml
这是后面配置的一个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>com.liujun</groupId>
<artifactId>spring-boot-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-boot-1</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<mysql-connector>5.1.46</mysql-connector>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>1.0</version>
</dependency>
<!-- MySQL 连接驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector}</version>
</dependency>
<!-- Mybatis 配置依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!--配置redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
当然我这边springboot版本为2.0.4 你们的为2.0.5 ,这个不影响,其中的依赖主要是加了mysql、mybatis和redis的一些依赖
2)我们再来看看我们的application.yml文件,如果说你只是简单的一个demo,不用到数据库,不用到其他的组件,这块也可以不用配置,默认8080端口,因为你其他都不用
但是我们用到了mybatis和mysql还有redis 那么我们这边配置一下
##端口
server:
port: 8888
servlet:
context-path: /spring-boot
#数据库
spring:
datasource:
url: jdbc:mysql://localhost:3306/shmis?useSSL=false&autoReconnectForPools=true&useUnicode=true&characterEncoding=UTF-8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
redis:
database: 0
host: localhost
port: 6379
password:
#mybatis
mybatis:
#
typeAliasesPackage: com.liujun.mapper
#
mapperLocations: classpath:mapper/**/*.xml
#日志
logging:
level:
com.liujun.dao : debug
端口,工程路径,还有一些工具的简单配置,其中的 mapperLocations: classpath:mapper/**/*.xml代表扫描mapper下面所有的xml文件,mybatis就是用xml来写sql语句的。日志主要就是dao层中的日志文件,dao层都是用来跟数据库打交道的,mybatis没有日志,所有将dao层的所有日志打印出来,那么我们前台调用的所有sql语句,所有的入参都会打印在后台,非常方便开发
我把我所有的工程结构放出来
一般的企业结构都是从controller --》service --》dao --》数据库(mybatis),当然还有的企业会多一层serviceImpl 就是service的实现层 或者daoImpl dao层实现层
我们的controller层代码
package com.liujun.demo;
import com.liujun.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "demo")
public class DemoController {
@Autowired
private DemoService demoService;
@Autowired
private RedisTemplate redisTemplate;
@GetMapping(value = "hello")
public String hello(){
System.out.println("hello");
return demoService.getCount();
}
@GetMapping(value = "spring")
public String spring(){
return demoService.getSpring();
}
@GetMapping(value = "redisTest")
public void doRedis(){
System.out.println("开始redis");
//RedisUtil redisUtil = new RedisUtil();
redisTemplate.opsForValue().set("1","123456");
System.out.println(redisTemplate.opsForValue().get("1"));
}
}
我们先来看DemoController,上面增加RestController来进行注解,这样就不用配置任何扫描了,
@RequestMapping(value = “demo”)是该controller的一个路径
@Autowired 是把相应的服务加进来,service层加进来,我们就可以用调用相应的service的相关方法,你也可以把hello改成下面 然后启动项目
@GetMapping(value = "hello")
public String hello(){
return "hello world!";
}
其中的8888是们yml的端口,spring-boot也是我们yml中配置的项目路径,demo是我们controller的路径,hello是我们的方法路径 GetMapping为GET方法 如果要用POST则可以用下面的写法
@RequestMapping(value = "hello",method = RequestMethod.POST)
public String hello(){
return "hello world!";
}
或者你想带参数进来@RequestParam(“param”) 是你传参进来的名称
@GetMapping(value = "hello")
public String hello(@RequestParam("param")String param){
return param;
}
这时候浏览器则(一般浏览器默认为GET方法,如果你用post方法,可以用Postman来请求,可以设置Post和GET方法)
3)我们来看看加入数据库,Mybatis的一个应用,因为我们程序都是跟数据打交道,不可能都是一个静态的东西,SpringBoot很简单,我们的yml里面已经加入了数据库和mybatis的配置文件,没错那些就是全部的配置文件,然后我们再controller中看
@GetMapping(value = "spring")
public String spring(){
return demoService.getSpring();
}
我们去调service中的getSpring()这个方法
package com.liujun.service;
import com.liujun.dao.DemoDao;
import com.liujun.dao.spring.SpringDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DemoService {
@Autowired
private DemoDao demoDao;
@Autowired
private SpringDao springDao;
public String getCount(){
return demoDao.getCount();
}
public String getSpring() {
return springDao.getSpring();
}
}
service的代码也很简单,把dao层的服务加载进来,还有最上面的@service是注解也是扫描,当然你还可以加入@Transactional来加入事物,这边的getSpring只是调用dao层的方法,我们看看dao层的方法
package com.liujun.dao.spring;
import org.springframework.stereotype.Component;
@Component
public interface SpringDao {
String getSpring();
}
返回一个String 的getSpring方法,我们进入mybatis的xml文件中,这边主要在SpringBoot1Application中需要配置扫描dao层
package com.liujun;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
@MapperScan("com.liujun.dao")
public class SpringBoot1Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot1Application.class, args);
}
}
其中的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.liujun.dao.spring.SpringDao">
<select id="getSpring" resultType="java.lang.String">
select id from phones_information where id = 7
</select>
</mapper>
namespace对应dao层的dao文件,然后id为我们到层的方法名字,resultType为String,下面是对应的sql语句, 虽然我们数据库中id可能是int型的,但是这并不影响,其中的数据库和建表语句在工程中spring-boot.sql语句有
我们来访问一下我们的spring
这就是我们的后台日志无参进去,然后sql语句得到一个0,这是我数据库里面没有数据,我找一个有数据的
看看我们的后台日志,如果我们想把495这个id传进去,怎么写
controller
@GetMapping(value = "spring")
public String spring(@RequestParam("id")int id){
return demoService.getSpring(id);
}
service
public String getSpring(int id) {
return springDao.getSpring(id);
}
dao(这里是@Param)
String getSpring(@Param("id")int id);
xml(加入参数类型,然后id= 后面加参数)
<select id="getSpring" resultType="java.lang.String" parameterType="java.lang.Integer">
select id from phones_information where id = #{id}
</select>
重启,输入
后台日志
我们可以看到参数int(495) sql语句为id=? 每一个?代表顺序参数
4)我们来看看redis的应用(引入RedisTemplate,直接用)
@Autowired
private RedisTemplate redisTemplate;
@GetMapping(value = "redisTest")
public Object doRedis(){
System.out.println("开始redis");
//RedisUtil redisUtil = new RedisUtil();
redisTemplate.opsForValue().set("1","123456");
return redisTemplate.opsForValue().get("1");
}
我们将1中放入123456,然后打印到后台以及返回
至于我工程中的redisConfig 和RedisUtil 都是一些拓展,可以不用理会,而多个xml主要是测试路径不一样的效果,都是可以扫描到的,至此我们的springboot基础的集成mybatis和Redis已经完成了
代码链接:
https://download.csdn.net/download/u012832579/10666185