先吐槽下:第一天研究了一天 照著視頻做就是不對(duì) ,各種錯(cuò)誤 然后睡一覺(jué)
第二天 MMP 好使了 不知道抽什么風(fēng)。
對(duì)于程序員來(lái)說(shuō)痛苦的不是學(xué)習(xí) ,而是莫名其妙的錯(cuò)誤。
數(shù)據(jù)庫(kù)(和Mybatis一樣)

image.png
然后是POM文件 ,添加一個(gè)jpa依賴(lài),當(dāng)然也得需要mysql的支持
之前看了好多 現(xiàn)在數(shù)據(jù)庫(kù)真的五花八門(mén) , 什么h2, HSQLD 等等內(nèi)存型數(shù)據(jù)庫(kù)
無(wú)力吐槽 (聽(tīng)說(shuō)是輕量級(jí))
<?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</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.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>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</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>
目錄結(jié)構(gòu)和上一個(gè)差不多

image.png
控制層
Controller->HelloController
package com.demo.Controller;
import com.demo.Model.Girl;
import com.demo.Respository.GirlRespository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
private GirlRespository girlRespository;
@GetMapping("/id")
public Girl girl(Integer id){
Girl girl = girlRespository.findOne(id);
return girl;
}
}
然后是映射層 感覺(jué)跟mybatis沒(méi)什么區(qū)別
也是接口類(lèi)型
Respository->GirlRespository
package com.demo.Respository;
import com.demo.Model.Girl;
import org.springframework.data.jpa.repository.JpaRepository;
public interface GirlRespository extends JpaRepository<Girl,Integer> {
}
這里說(shuō)明下 JpaRepository會(huì)提供一些方法 也就是說(shuō)到時(shí)候咱們繼承之后直接就可以用 框架會(huì)提供實(shí)現(xiàn)
@Override
List<Girl> findAll();
@Override
List<Girl> findAll(Sort sort);
@Override
List<Girl> findAll(Iterable<Integer> iterable);
@Override
<S extends T> List<S> save(Iterable<S> iterable);
@Override
void flush();
@Override
<S extends T> S saveAndFlush(S s);
@Override
void deleteInBatch(Iterable<Girl> iterable);
@Override
void deleteAllInBatch();
@Override
Girl getOne(Integer integer);
@Override
<S extends T> List<S> findAll(Example<S> example);
@Override
<S extends T> List<S> findAll(Example<S> example, Sort sort);
@Override
Page<Girl> findAll(Pageable pageable);
@Override
<S extends T> S save(S s);
@Override
Girl findOne(Integer integer);
@Override
boolean exists(Integer integer);
@Override
long count();
@Override
void delete(Integer integer);
@Override
void delete(Girl girl);
@Override
void delete(Iterable<? extends Girl> iterable);
@Override
void deleteAll();
@Override
<S extends T> S findOne(Example<S> example);
@Override
<S extends T> Page<S> findAll(Example<S> example, Pageable pageable);
@Override
<S extends T> long count(Example<S> example);
@Override
<S extends T> boolean exists(Example<S> example);
啟動(dòng)項(xiàng)
不需要更改
package com.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
數(shù)據(jù)模型層 這個(gè)有點(diǎn)區(qū)別(我沒(méi)學(xué)過(guò)hibernate)
package com.demo.Model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity(name = "girl")
public class Girl {
public Girl() {
}
@Id
@GeneratedValue
private Integer id;
@Column(name = "use_name")
private String userName;
@Column(name = "cup_size")
private char cupSize;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public char getCupSize() {
return cupSize;
}
public void setCupSize(char cupSize) {
this.cupSize = cupSize;
}
@Override
public String toString() {
return "Girl{" +
"id=" + id +
", userName='" + userName + '\'' +
", cupSize=" + cupSize +
'}';
}
}
@Entity(name = "girl") 告訴這個(gè)類(lèi)你映射的是哪個(gè)標(biāo)
public Girl() { } 需要?jiǎng)?chuàng)建一個(gè)無(wú)參構(gòu)造器 否則會(huì)出錯(cuò)誤(什么錯(cuò)誤我不知道)
主鍵ID上添加 @Id @GeneratedValue這兩個(gè)注解 一個(gè)是標(biāo)記Id 一個(gè)是自增長(zhǎng)
其他列上 需要注解 @Column 好像默認(rèn)駝峰式命名方法 映射到數(shù)據(jù)庫(kù)里變成下劃線(xiàn)
ex: userName -> user_name;
如果想不一致 那么@Column(name = "use_name" ) name是告訴實(shí)體類(lèi) 表中字段叫什么名字
清理下maven 重新編譯
然后基本上可以運(yùn)行了