SpringBoot初級練習


SpringBoot

一、創建項目出現的問題

問題1、application.yml文件無法識別
	*解決方法:File->Settions->Plugins目錄下
	選中YAML,重啟IDEA
問題2、application.yml文件圖標錯誤
	*解決方法:File->Settings->File Types下
	刪除*.yml

二、創建一個SpringBoot的項目

  1. New Project

  2. 選擇Spring Initializr

  3. 選擇Web下的Web,然后Flish

  4. 導入依賴

     <!--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設置,完成熱部署

    1. 在Settings中找到Compiler,選中Build Project automatically
    2. 按Ctrl+Shift+Alt+/:選中compiler.automake.allow.when.app.running

底層分析:

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

三、SpringBoot整合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;

	}
}

四、SpringBoot整合Spring Data JPA

第1步:導入依賴

<!--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>

第2步:創建實體,使用注解進行配置

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 + '\'' +
            '}';
}
}

第3步:創建接口
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();

}

第4步:創建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

第5步:測試

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);
	}
}

五、Redis緩存

第1步:配置yml文件信息

#redis
redis:
	host: 127.0.0.1
	port: 6379

第2步:測試
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);
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM