环境 :
IntelliJ IDEA 2016.2(推荐使用)
mysql
jdk 1.7.0_17
maven 3.3.9
(这个是我本地用的版本)
环境和工具安装好后,开始创建项目。
第一步:打开 IDEA 新建项目,创建一个新项目
然后:
点击 “Next” 按钮继续,会出来一个选项卡,如下图:
选择完成后点击“Next”继续,然后又出来一个面板:
选择完成后点击“Next”继续,选择你的存放路径:
选择完成,项目这是正在打开并加载maven配置,等加载完再继续下一步;
第二步:
项目打开,删除没用文件夹以及文件:
新建一个类HelloController:
然后启动项目,在启动类SpringbootDemoApplication中点击右键,选择Run:
页面访问查看工程:
http://127.0.0.1:8080/hellow/say
第三步,添加配置,连接数据库添加功能:
删除 多余的包:
配置文件 推荐使用application.yml文件,先看一下 application.properties 和application.yml文件的差别:
application.yml 相对简便一点;必须注意application.yml 中,变量和值之间必须有空格,否则变量变灰,配置会报错如图:
认识spring-boot就到这里;
下边是我做的一个例子,仅供参考:
pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
application.yml (总配置文件):
spring: profiles: active: prod datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/demo username: root password: 123456 jpa: hibernate: ddl-auto: update show-sql: true
application-dev.yml (测试环境配置文件)
server:
port: 8080
girl:
cupSize: B
age: 20
application-prod.yml(生产环境配置文件)
server:
port: 8085
girl:
cupSize: G
age: 20
实体类Girl.class:
package com.imooc;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
* Created by user on 2017/4/11.
* 加注解Entity , 就表明 Girl类是和数据库对应的 , Girl类中的字段会生成数据库Girl表中的字段
*/
@Entity
public class Girl {
@Id
@GeneratedValue //表示id为自增长
private Integer id;
private String cupSize;
private Integer age;
//Constructor 构建无参的构造方法,必须要选无参的,否则连接数据库就报错
public Girl() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
新建GirlController.class:
package com.imooc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Created by user on 2017/4/11.
*/
@RestController
public class GirlController {
@Autowired
private GirlRepository girlRepository;
@Autowired
private GirlService girlService;
/**
* 查询列表
* @return
*/
@GetMapping(value="/girls")
public List<Girl> girlList(){
return girlRepository.findAll();
};
/**
* 添加
* @param cupSize
* @param age
* @return
* 访问链接:http://127.0.0.1:8085/girlAdd?cupSize=F&age=19
*/
@PostMapping(value="/girlAdd")
public Girl gilrAdd(@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Girl girl = new Girl();
girl.setCupSize(cupSize);
girl.setAge(age);
return girlRepository.save(girl);
};
/**
* 根据ID查找
* @param girlid
* @return
*/
// @GetMapping(value="/findGirlById") 传参字段@RequestParam("id")
@GetMapping(value="/findGirlById/{id}")
public Girl findGirlById(@PathVariable("id") Integer girlid){
return girlRepository.findOne(girlid);
};
/**
* 修改
* @param girlid
* @param cupSize
* @param age
* @return
* 访问路径:http://127.0.0.1:8085/updateGirlById?id=2&cupSize=F&age=30
*/
@PutMapping(value="/updateGirlById/{id}")
public Girl updateGirlById(@PathVariable("id") Integer girlid,
@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Girl girl = new Girl();
girl.setId(girlid);
girl.setCupSize(cupSize);
girl.setAge(age);
return girlRepository.save(girl);
};
/**
* 删除
* @param id
*/
@DeleteMapping(value="/deleteGirlById/{id}")
public void deleteGirlById(@PathVariable("id") Integer id){
girlRepository.delete(id);
};
/**
* 根据年龄查询 查出多个对象
* @param age
* @return
*/
@GetMapping(value="/findByAge/{age}")
public List<Girl> findByAge(@PathVariable("age") Integer age){
return girlRepository.findByAge(age);
};
@PostMapping(value="/insertTwo")
public void insertTwo(){
girlService.insertTwo();
};
}
新建GirlProperties.class:
package com.imooc;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* Created by user on 2017/4/10.
*/
@Component //注入配置时必加注解
@ConfigurationProperties(prefix = "girl") //获取前缀是 girl 的配置
public class GirlProperties {
private String cupSize;
private Integer age;
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
新建GirlRepository.class:
package com.imooc;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* Created by user on 2017/4/11.
*/
public interface GirlRepository extends JpaRepository<Girl,Integer>{
/**
* 通过年龄查询
* @return
*/
public List<Girl> findByAge(Integer age);
}
新建GirlService.class:
package com.imooc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
/**
* Created by user on 2017/4/12.
*/
@Service
public class GirlService {
@Autowired
private GirlRepository girlRepository;
@Transactional //添加一条数据的时候也要加事务 @Transactional,只有查询的时候不加事务。
public void insertTwo(){
Girl girlA = new Girl();
girlA.setCupSize("B");
girlA.setAge(18);
girlRepository.save(girlA);
Girl girlB = new Girl();
girlB.setCupSize("DDDDD");
girlB.setAge(20);
girlRepository.save(girlB);
};
}