SpringBoot primary practice

SpringBoot

First, create a project problems arise

问题1、application.yml文件无法识别
    *解决方法:File->Settions->Plugins目录下
    选中YAML,重启IDEA
问题2、application.yml文件图标错误
    *解决方法:File->Settings->File Types下
    删除*.yml

Second, create a project SpringBoot

  1. New Project
  2. Select Spring Initializr
  3. Select Web under the Web, and then Flish
  4. Import dependence

     <!--SpringBoot起步依赖-->
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.1.5.RELEASE</version>
     </parent>
    
     <dependencies>
         <!--web功能的起步依赖:SpringBoot集成SpringMVC进行Controller开发-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
         <!--热部署-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-devtools</artifactId>
         </dependency>
     </dependencies>
  5. IDEA set, complete hot deployment

    1. Compiler found in Settings, select the Build Project automatically
    2. 按Ctrl+Shift+Alt+/:选中compiler.automake.allow.when.app.running

The underlying analysis:

spring-boot-starter-parent:springboot起步依赖
    在spring-boot-starter-parent中
    resources资源引入:
        ${basedir}/src/main/resources下的
            application*.yml
            application*.yaml
            application*.properties文件
    在spring-boot-dependencies中
        自动根据spring-boot-starter-parent的版本匹配相应的版本,进行了版本控制的作用
    
自动配置分析:
    @SpringBootApplication
        标志该类是一个配置类:@Configration

Three, SpringBoot integration Mybatis

第1步:导依赖:
<!--mybatis起步依赖-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.1</version>
</dependency>

<!--MySQL依赖-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

第2步:yml配置文件
#数据库配置spring:
#配置Mybatis配置信息
#spring集成Mybatis环境
#pojo别名扫描包
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: 123456

mybatis:
    type-aliases-package: com.zero.domain
    mapper-locations: classpath:mapper/*Mapper.xml

第3步:创建实体
package com.zero.domain;

public class User {
    private Integer id;
    private String name;
    private String pass;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    @Override
    public String toString() {
        return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", pass='" + pass + '\'' +
            '}';
        }
    }

第4步:创建接口
package com.zero.mapper;

import com.zero.domain.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {

    public List<User> queryUserList();

}


第5步:创建映射文件
<?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.zero.mapper.UserMapper">
    <select id="queryUserList" resultType="user">
        SELECT * FROM demo
    </select>
</mapper>


第6步:测试
package com.zero.controller;

import com.zero.domain.User;
import com.zero.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

//以json格式或字符串格式回写
@RestController
public class democontroller {

    @Autowired
    private UserMapper userMapper;

    @RequestMapping("/quick")
    public List<User> queryUserList(){
        List<User> users = userMapper.queryUserList();

        return users;

    }
}

Four, SpringBoot integrate Spring Data JPA

Step 1: introduction dependent

<!--spring-data-jpa-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--Mysql驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>
<!--jdk9需要导入-->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

Step 2: Create entity, configured using annotations

package com.zero.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private String pass;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPass() {
    return pass;
}

public void setPass(String pass) {
    this.pass = pass;
}

@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", pass='" + pass + '\'' +
            '}';
}
}

Step 3: Create an interface
package com.zero.reposytory;

import com.zero.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;

public interface UserReposytory extends JpaRepository<User,Integer> {

    public List<User> findAll();

}

Step 4: Create a configuration yml

spring:
    datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&useSSL=false
        username: root
        password: 123456
#JPA Configuration
    jpa:
        database: MySQL
        show-sql: true
        generate-ddl: true
        hibernate:
            ddl-auto: update

Step 5: Test

package com.zero;

import com.zero.domain.User;
import com.zero.reposytory.UserReposytory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;


@RunWith(SpringRunner.class)
@SpringBootTest(classes = Demo614Application.class)
public class JpaTest {
    @Autowired
    private UserReposytory userReposytory;

    @Test
    public void test(){
        List<User> all = userReposytory.findAll();
        System.out.println(all);
    }
}

Five, Redis cache

Step 1: Configure yml file information

#redis
redis:
    host: 127.0.0.1
    port: 6379

Step 2: Test
package com.zero;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zero.domain.User;
import com.zero.reposytory.UserReposytory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Demo614Application.class)
public class RedisTest {

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    @Autowired
    private UserReposytory userReposytory;

    @Test
    public void test() throws JsonProcessingException {
        //1.从Redis中获取数据,json字符串
        String s = redisTemplate.boundValueOps("user.findall").get();
        //2.判断Redis中是否存在想要的数据
        if(null==s){
            //3.1:不存在,从数据库中查询
            List<User> all = userReposytory.findAll();
            //3.2:将查询出的数据存储到Redis中
            //通过web先将集合换换成json的字符串,使用Jackson进行转换
            ObjectMapper ob = new ObjectMapper();
            s = ob.writeValueAsString(all);
            redisTemplate.boundValueOps("user.findall").set(s);
            System.out.println("从数据库中获取数据");
        }else {
            System.out.println("从Redis缓存中获取数据");
        }

        //4.将数据打印在控制台
        System.out.println(s);
    }
}

Guess you like

Origin www.cnblogs.com/zero-god/p/11026437.html