Spring mvc是如何實現(xiàn)與數(shù)據(jù)庫的前后端的連接操作的?
Spring mvc與數(shù)據(jù)庫的前后端的連接
springboot是基于maven的基礎(chǔ)上管理jar包的,只不過是使用springboot下載jar包只需選中即可,就會自動的在pom.xml文件中配置組件
在pom文件中的jar包的快捷鍵:右鍵--->generate---->depency---->搜索jar包
如果在前后端傳參數(shù)是輸入了參數(shù)卻返回null , 則說明屬性的名字(id,name等)寫錯了
啟動類:注意 ,啟動類必須在啟動類中進行執(zhí)行.必能在idea的上面進行啟動,否則會啟動其他的啟動類導致報錯
package cn.tedu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//啟動類
@SpringBootApplication
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);
}
}
創(chuàng)建car類(相當于model層)
注意:這里使用的是構(gòu)造方法 主要的作用是方便new
package cn.tedu.pojo;
//Model用來封裝數(shù)據(jù)
public class Car {
private int id;
private String name;
private double price;
//Constructor構(gòu)造方法,用來方便的new
public Car(){}
public Car(int id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
使用三種方式 < 對象 > 進行傳參數(shù);注意:使用此類型進行設(shè)置值必須有構(gòu)造方法
對象的地址值:http://localhost:8080/car/get
package cn.tedu.controller;
//MVC里的C層,用來接受請求和做出響應(yīng)(springmvc)
import cn.tedu.pojo.Car;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController//接受請求,并把json數(shù)據(jù)返回
@RequestMapping("car") //規(guī)定了url地址的寫法
public class CarController {
//方式一值會在網(wǎng)頁中出現(xiàn)
@RequestMapping("get")
public Car get(){
Car c = new Car(10,"BMW",19.9); //出發(fā)鉤造函數(shù),此處觸發(fā)的是含參構(gòu)造;
return c ;
}
//方式二值會在網(wǎng)頁中出現(xiàn)
@RequestMapping("save3")
public Car save() {
car.setAge(213);
car.setSex("男");
car.setId(32);
car.setPrice(32);
return car;
}
方式三這種方式的值會在idea中打印不會再網(wǎng)頁中出現(xiàn)
@RequestMapping("save3")
public Car save() {
car.setAge(213);
car.setSex("男");
car.setId(32);
car.setPrice(32);
System.out.println(car);
}
使用return(值會網(wǎng)頁中出現(xiàn))的方式
package cn.tedu.controller;
import cn.tedu.pojo.Car;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.naming.Name;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
//這是一個c層用來接收請求和做出響應(yīng)
@RestController
//@RequestMapping("car")//規(guī)定了url的寫法此時的值可以任意寫
public class Controller {
@RequestMapping("replace")
public String replace(){
// System.out.println(id+name+age);
return "hkjds";
}
//方式二值會在網(wǎng)頁中出現(xiàn)
@RequestMapping("save3")
public Car save() {
car.setAge(213);
car.setSex("男");
car.setId(32);
car.setPrice(32);
return car;
}
}
}
使用普通的get的方法進行上傳
package cn.tedu.controller;
import cn.tedu.pojo.Car;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.naming.Name;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
//這是一個c層用來接收請求和做出響應(yīng)
@RestController
//@RequestMapping("car")//規(guī)定了url的寫法此時的值可以任意寫
public class Controller {
@RequestMapping("get2")
public void get(Integer id,String name){//此處使用int類型必須賦值 引用類型不用必須賦值最好使用引用類型
System.out.println(id+name);
}
@RequestMapping("get")
public void get(Integer id){//此處使用int類型必須賦值 引用類型不用必須賦值
System.out.println(id);
}
restful風格進行傳參數(shù)
restful和普通的get的方法的區(qū)別:restful相對比較安全,寫法比較簡單
restful的地址值的:http://localhost:8080/car2/get2/10/jack/9
其他的url地址值://http://localhost:8080/car/get5?id=10&name=jack&price=9.9
package cn.tedu.controller;
import cn.tedu.pojo.Car;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("car3")
//使用restful風格
public class CarController {
@RequestMapping("get2/{sex}/{id}/{name}")//此地方的參數(shù)順序必須和下面以及地址值都必須一樣
public void get2(@PathVariable String sex,
@PathVariable Integer id,
@PathVariable String name){
System.out.println("數(shù)據(jù)插入成功"+sex+name+id);
// System.out.println("數(shù)據(jù)插入成功"+name+id);
}
}
spring mvc框架進行傳參數(shù)
package cn.tedu.controller;
import cn.tedu.pojo.Car;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.naming.Name;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
//這是一個c層用來接收請求和做出響應(yīng)
@RestController
//@RequestMapping("car")//規(guī)定了url的寫法此時的值可以任意寫
public class Controller {
//使用框架接收網(wǎng)站參數(shù)
@RequestMapping("get3")
public void get3(Car car){
System.out.println(car.getSex()+car.getName()+car.getId());
}
}
前后端參數(shù)傳入并且將數(shù)據(jù)傳入到數(shù)據(jù)庫中
package cn.tedu.controller;
import cn.tedu.pojo.Car;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.yaml.snakeyaml.events.Event;
import javax.naming.Name;
import java.sql.*;
import java.util.Scanner;
@RestController
@RequestMapping("user")
public class UserContoller {
@RequestMapping("save")
public void save(Integer id,String name,Integer age) throws Exception {
System.out.println(id+name+age);
Class.forName("com.mysql.jdbc.Driver");
//獲取連接
String url ="jdbc:mysql:///cgb2104?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";
Connection conn = DriverManager.getConnection(url,"root","root");
//獲取傳輸器
// String sql= "insert into user(id,name) values(?,?)";//給指定的字段設(shè)置值
String sql= "insert into user values(?,?,?)";//所有字段設(shè)置值
PreparedStatement ps = conn.prepareStatement(sql);
//給SQL設(shè)置參數(shù)
ps.setInt(1,id);//給第一個?設(shè)置值
ps.setString(2,name);//給第二個?設(shè)置值
ps.setInt(3,age);//給第三個?設(shè)置值
//執(zhí)行SQL
int rows = ps.executeUpdate();
//釋放資源 -- OOM(OutOfMemory)
ps.close();
conn.close();
}
到此這篇關(guān)于Spring mvc是如何實現(xiàn)與數(shù)據(jù)庫的前后端的連接操作的?的文章就介紹到這了,更多相關(guān)Spring mvc與數(shù)據(jù)庫的前后端的連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot多數(shù)據(jù)源配置的全過程記錄
在用SpringBoot開發(fā)項目時,隨著業(yè)務(wù)量的擴大,我們通常會進行數(shù)據(jù)庫拆分或是引入其他數(shù)據(jù)庫,從而我們需要配置多個數(shù)據(jù)源,下面這篇文章主要給大家介紹了關(guān)于SpringBoot多數(shù)據(jù)源配置的相關(guān)資料,需要的朋友可以參考下2021-11-11

