SpringBoot學習

慕課網連接java

建立SpringBoot項目


項目目錄結構

 

項目建立完成以後能夠打開pom.xml看一下mysql

<?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.imooc</groupId>
    <artifactId>girl</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>girl</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.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>
        <!--爲項目添加web服務-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--項目測試使用-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
        <!--項目編譯-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

springboot 三種啓動方式 

1.直接在idea啓動

    2.(命令行模式:進入到項目路徑下)mvn spring-boot:run

    3.(命令行模式:進入到項目路徑下)編譯程序 mvn install 進入target java -jar XXXX.jar

屬性配置

.properties文件

在rescourse下面有屬性文件,可經過屬性文件對象的屬性進行配置(application.properties):web

server.port=8081
server.comtent-path=/demo

girl.age=18
girl.name=小紅
girl.cupSize=F

#配置文件中使用配置文件中的屬性
people: "age:${girl.age},cupSize:${girl.cupSize}"

.yml文件

也可使用application.yml配置文件:spring

server:
  port: 8080
  context-path: /demo

girl:
  age: 18
  name: 小紅
  cupsize: F

獲取屬性文件中的屬性值

方式一

在java類中使用如下方法能夠得到配置文件的屬性sql

@Value("${girl.age}")           //獲取.properties的屬性值
    private String age;
    @Value("${girl.name}")
    private String name;
    @Value("${girl.cupSize}")
    private String cupSize;

girl每有一個屬性就須要使用一次@value註解數據庫

方式二

可以使用girl類一次性賦值進去apache

@Component
@ConfigurationProperties(prefix = "girl")     //獲取前綴是girl的屬性
public class Girl{
    private int age;
    private String name;
    private String cupSize;

/**
* 添加屬性的setter和getter方法
*/
}

經過下面代碼獲取配置文件屬性賦值以後的對象json

@Autowired
private Girl girl;

若是有多個配置文件,那麼如何修改生產和測試環境下的配置文件內容呢?

總不能每次換版本都從新修改配置文件吧springboot

能夠在rescourses文件夾新建application-pro.yml和application-test.yml兩個配置文件app

並在兩個文件中分別配置產品和測試所須要的屬性及屬性值

並在application.yml修改配置。決定運行時使用的是哪個屬性配置文件(以下代碼,使用的是application-test.yml的屬性配置)

spring:
  profiles:
    active: test

SpringBoot中的註解

@Controller //聲明控制器類

@RestController //該註解類的方法返回json數據;=@ResponseBody + @Controller

@RequestMapping(value = {"/hello", "/hi"}, method = RequestMethod.GET) 
/*              兩個url路徑均可以訪問同一個方法
                當不指定請求方式時,get/post均可以請求到,可是不推薦。
                該註解能夠給整個類指定Url*/

//處理url裏面的參數:

@PathVariable //獲取url中的數據

          @RequestMapping("/hello/{id}")
          public void hello(@PathVariable Integer id){}

@RequestParam //獲取請求參數的值

@GetMapping/PostMapping //組合註解

數據庫操做

準備階段(添加依賴)

爲了使用數據庫,須要在pom.xml文件中,加入兩個依賴:
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

添加配置

在application.yml文件中做相應配置:
1)mysql的相關配置
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dbgirl
    username: root
    password: root
2)jpa的配置
spring:
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
ddl-auto:creat、update、none、creat-drop、validate
creat每次運行時,都會建立新表(如有,刪除原有的,再建新的),update不會刪除原有的,保留改變的,更新,create-drop不運行時,刪表,none什麼也不做,validate驗證類裏面屬性是否與表結構一致,不一致報錯;

新建數據庫表

新建數據庫;
在main/imooc下新建Girl類,(和數據庫對應)包括:
1)類的前面有@Entity註解(表示此類對應數據庫中的一個表)
2)類中包含屬性,其前有註解@Id @GeneratedValue,(主鍵並自增)
3)有無參的構造方法,以及set和get方法;

數據庫操做

建立Dao接口繼承JpaRepository接口,該接口有泛型<Girl , id>
能夠用該接口實例進行數據庫操做

public interface GirlRepository extends JpaRepository<Girl, Integer> {
}

數據庫的一系列操做

@Autowired
    private GirlRepository girlRepository;

    @GetMapping(value = "/girls")
    public List<Girl> girlList() {
        return girlRepository.findAll();
    }

    @GetMapping(value = "/girls/{id}")
    public Girl girlFindOne(@PathVariable("id") Integer id) {
        return girlRepository.findOne(id);
    }

   ................

若是要實現本身添加的方法,有嚴格的命名規範(在接口GirlRepository中添加方法)

public interface GirlRepository extends JpaRepository<Girl, Integer> {

    //經過年齡來查詢
    public List<Girl> findByAge(Integer age);
}

事務的使用

實現事務,能夠在@Service中,指定方法前加@Transactional註解

mysql 表存儲引擎爲MyISAM ,不支持事物回滾,須要設置爲InnoDB

相關文章
相關標籤/搜索