开始:首先得有环境,JDK 1.8(springboot只有1.8以上的) maven(我用的IDEA自带有)Mysql数据库(版本正式版就行)。
打开IDEA 下面跟图:
点击:Create New Project -> Spring Initializr ->点击Next
填入:
如同我的:
点击下一步:和我选的一样
选择自己的文件路径。(好了之后下一步,开始加载了,第一次有点慢,等等,下面是我加载好了的)
点击运行:下面是运行结果,打开浏览器。
这是运行结果(网址:localhost:8080就行)
如果要其显示内容:创建一个类如下->运行:
这是结果:
好了到此springboot的创建成功了。
下面这个是网址创建:https://start.spring.io/ 方法一样
接下来学习配置:数据库的对接,端口的修改等等。
1.修改8080端口为8081,增加一个分类。->这时再次输入8080是没有用的。
结果还是一样:
配置文件的传值:如下:
->
结果(网址刷新结果):
配置里面使用配置:
cartDesc="${smallCart}是一辆小车"
结果:
如果你的是乱码的话。我找了解决方法: application.properties 添加如下命令。如果还是不行的话。-》
spring.http.encoding.charset=UTF-8
spring.http.encoding.force=true
spring.http.encoding.enabled=true
》新建一个配置文件:application.yml
内容如下一样:
spring:
http:
encoding:
charset: UTF-8
force: true
enabled: true
smallCart: small_cart
cartDesc: ${smallCart}是一辆小车
server:
port: 8081
servlet:
context-path: /cart
换了一种方式,结果一样,但是乱码解决了。
如果配置参数过多,类的配置使用方法:这是配置文件:
cart:
cartSize: small_cart
cartName: 我是车
cartDesc: 我是${cart.cartSize}
这是类:名称保持一致:
一定要加上下面的:再给予get和set方法。
@Component
@ConfigurationProperties(prefix = "cart")
这是应用:
@Autowired
private CartInfo cartInfo;
@RequestMapping("test")
public String say(){
return "cartDesc:" + cartInfo.getCartDesc();
}
这是结果:
好了到此 配置中单值传递和类传递完成了。
接下来 说下Controller的配置及其使用。给图:
1.@Controller的使用。单如下使用,是不可以返回值的,只会有:
如果想返回值:需要如下配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
这是会有一个templates文件,在下面创建一个index.html文件输入值:你随意。
使用方法:
刷新下:
可以了。现在都是前后端分离,这种方法用的少,注释掉刚刚添加的(重新导入下maven)。下面这种也行:
@Controller
@ResponseBody
//上面这两种等同于://@RestController
@GetMapping
@PostMapping
等同于:
@RequestMapping(value = "/test" ,method = RequestMethod.GET)
获取页面传回来的值。
@GetMapping("/test/{id}")
public String say(@PathVariable("id") Integer id){
// return "cartDesc:" + cartInfo.getCartDesc();
// return "index";
return "id:" + id;
}
支持:
http://localhost:8081/cart/test/2
如果是这种方式:
@RequestMapping(value = "/test" ,method = RequestMethod.GET)
@GetMapping("/test/{id}")
public String say(@RequestParam("id") Integer id){
// return "cartDesc:" + cartInfo.getCartDesc();
// return "index";
return "id:" + id;
}
支持:
http://localhost:8081/cart/test?id=100
接下来关于对接mysql了哦:需要加上下面配置:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
配置文件内容:(show-sql:true显示sql语句,ddl-auto: update下面会讲)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/cart?characterEncoding=utf-8
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true
开始以类建表:首先你得在数据库新建一个存在的数据库。
报红,以及找不到没关系,如下方法,加载完成之后,会好,
启动之后如下图:
打开数据库:我的是:Navcat连接mysql,点击会看到相应字段。记住springboot通过jpa管理数据的不能自己添加数据,
如果添加了话记得删除,不然添加数据时会报错。
这时 ddl-auto: update 很重要,可以使你每一次启动都不还原数据库内容。而是在下面添加。
下面关于SQL语句的使用:
创建一个接口继承 JpaRepository
public interface CartRepository extends JpaRepository<Cart,Integer> {
}
下面是使用方法:
package com.imooc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
/**
* Created by caolonglong on 2019/5/15.
*/
@RestController
@RequestMapping("/test")
public class CartController {
@Autowired
private CartRepository cartRepository;
/**
* 查找数据库内容
* @return
*/
@GetMapping("list")
public List<Cart> cartList(){
return cartRepository.findAll();
}
/**
* 创建数据
*/
@GetMapping("create")
public Cart create(@RequestParam("cartName") String cartName,
@RequestParam("cartSize") String cartSize,
@RequestParam("cartDesc") String cartDesc){
Cart cart = new Cart();
cart.setCartDesc(cartDesc);
cart.setCartName(cartName);
cart.setCartSize(cartSize);
return cartRepository.save(cart);
}
/**
* select by cartId
*/
@PutMapping("find_by_id")
public Cart findById(@RequestParam("cartId") Integer cartId){
return cartRepository.findById(cartId).orElse(null);
}
/**
* update by primary key
*/
public Cart update(@RequestParam("cartId") Integer cartId,
@RequestParam("cartName") String cartName,
@RequestParam("cartSize") String cartSize
){
Optional<Cart> optional = cartRepository.findById(cartId);
if (optional.isPresent()){
Cart cart = optional.get();
cart.setCartId(cartId);
cart.setCartSize(cartSize);
cart.setCartName(cartName);
return cartRepository.save(cart);
}
return null;
}
}
下面添加其中一个结果: