最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot連接數(shù)據(jù)庫及查詢數(shù)據(jù)完整流程

 更新時間:2021年06月25日 15:59:21   作者:紅旗下的小兵  
今天給大家?guī)淼氖顷P于Springboot的相關知識,文章圍繞著Springboot連接數(shù)據(jù)庫及查詢數(shù)據(jù)完整流程展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下

Springboot連接數(shù)據(jù)庫

第一步

springboot繼承Mybatis及數(shù)據(jù)庫連接依賴(上一篇文章已經記錄 )

 第二步

resources -> application.properties
application.properties中增加數(shù)據(jù)庫連接配置

# 增加數(shù)據(jù)庫連接
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=lvxingchen
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

第三步

domain -> User
創(chuàng)建實體類,屬性要跟數(shù)據(jù)庫表字段一致

package com.lxc.springboot.domain;
 
public class User {
    private int id;
    private String user;
    private String name;
    private int age;
    private String password;
 
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", user='" + user + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", password='" + password + '\'' +
                '}';
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getUser() {
        return user;
    }
 
    public void setUser(String user) {
        this.user = user;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
}

第四步

mapper -> UserMapper
創(chuàng)建UserMapper接口,這也是項目的持久層,與數(shù)據(jù)查詢相關的,之后我們需要讓sprongboot知道,mapper文件夾就是數(shù)據(jù)持久層接口,所以,在項目入口文件中還要使用@MapperScan注解定義持久層。

package com.lxc.springboot.mapper;
 
import com.lxc.springboot.domain.User;
 
import java.util.List;
 
public interface UserMapper {
    public List<User> getUserList();
}

在項目入口文件中的配置:

@ComponentScan("com.lxc.springboot")
@SpringBootApplication
@MapperScan("com.lxc.springboot.mapper") // 讓springboot知道m(xù)apper是這個項目的持久層
public class BootAndVueProjectApplication {
    private static final Logger LOG = LoggerFactory.getLogger(BootAndVueProjectApplication.class);
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(BootAndVueProjectApplication.class);
        //  SpringApplication.run(BootAndVueProjectApplication.class, args);
        Environment env = app.run(args).getEnvironment();
        LOG.info("啟動成功!");
        LOG.info("地址:\thttp://127.0.0.1:{}", env.getProperty("server.port"));
    }
}

然后,創(chuàng)建UserMapper接口的 sql映射文件userMapper.xml,通常我會把這個文件放在resources -> mapper文件夾中

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 
<!--接口-->
<!--
namespace:對應接口的全路徑;
id:對應接口的方法;
resultType:結果類型。
-->
<mapper namespace="com.lxc.springboot.mapper.UserMapper" >
    <select id="getUserList" resultType="com.lxc.springboot.domain.User">
        select id, user, name, age, password from user
    </select>
 
</mapper>

定義完之后,springboot怎么能知道 resources -> mapper -> userMapper.xml是一個sql映射文件呢,此時需要在resources -> application.properties 中去配置:

# 配置mybatis所有的Mapper.xml所在的路徑
mybatis.mapper-locations=classpath:/mapper/**/*.xml

第五步

service -> UserService
接口定義完,我們來創(chuàng)建service服務層,所有的業(yè)務邏輯的處理在這一層實現(xiàn),也負責調用持久層接口。

package com.lxc.springboot.service;
 
import com.lxc.springboot.domain.User;
import com.lxc.springboot.mapper.UserMapper;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.List;
/**
 * service層調用持久層
 * @Service // 讓spring掃描到這個包
 *
 * @Autowired和@Resource
 * 兩個注解都可以把一個類注入進來(相當于import)
 * Resource JDK自帶的
 * Autowired spring自帶的
 */
@Service // 讓spring掃描到這個包
public class UserService {
    @Resource
    public UserMapper userMapper;
    public List<User> getList() {
        return userMapper.getUserList();
    }
}

第六步

controller-> TestController

既然服務都寫完了,也查詢到數(shù)據(jù)了,那么來定義一個控制層Controller,負責調用service層,編寫前端api接口,這一層也算是一個中轉層。

這里著重記錄下 ComResponse這個類,restful接口在返回給前端JSON數(shù)據(jù)時,同時也會返回一些公共的數(shù)據(jù),如:狀態(tài)碼(code)、響應信息(message)等等,在這里我們統(tǒng)一處理,編寫一個公共類,里邊有這些公共字段屬性,同時還需要有一個data數(shù)據(jù)屬性,類型一般是:List , 之所以要把公共類定義為泛型,因為,在setData的時候,類型不確定,所以需要定義為泛型, 返回給前端的格式如下:

{
        code: 200,
        message: "查詢成功",
        data: [{ name:"lxc", age: 20 }, { name: "123", age: 100 }]
}

package com.lxc.springboot.controller;
 
import com.lxc.springboot.commonResponse.ComResponse;
import com.lxc.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
 
@RestController // 通常返回一個json或 字符串
//@Controller // 一般是返回一個頁面
public class TestController {
 
    @Resource // 把service層userService注入進來
    private UserService userService; 
 
    // 調用service層
    @RequestMapping(value = "/service")
    public ComResponse getService() {
        ComResponse<List<User>> objComResponse = new ComResponse<>();
        List<User> userList = userService.getList();
        objComResponse.setData(userList);
        objComResponse.setMsg("返回成功")
        return objComResponse;
    }
}

公共類:
commonResponse -> ComResponse

package com.lxc.springboot.commonResponse;
/**
 *
 * @param <T>
 *     ComResponse 是一個泛型類,返回的是一個泛型,外界可以傳入任何類型的值
 *     理解泛型:
 *     有點像js方法,你給它傳任何類型都可以,但是最后返回的類型是setData時候傳的對象?。。?
 */
public class ComResponse<T> {
 
    private String msg = "返回成功";
    private int code = 200;
    private T data;
 
    public String getMsg() {
        return msg;
    }
 
    public void setMsg(String msg) {
        this.msg = msg;
    }
 
    public int getCode() {
        return code;
    }
 
    public void setCode(int code) {
        this.code = code;
    }
 
    public T getData() {
        return data;
    }
 
    public void setData(T data) {
        this.data = data;
    }
}

第七步

啟動項目測試:

到此這篇關于Springboot連接數(shù)據(jù)庫及查詢數(shù)據(jù)完整流程的文章就介紹到這了,更多相關Springboot連接數(shù)據(jù)庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中基于Shiro,JWT實現(xiàn)微信小程序登錄完整例子及實現(xiàn)過程

    Java中基于Shiro,JWT實現(xiàn)微信小程序登錄完整例子及實現(xiàn)過程

    這篇文章主要介紹了Java中基于Shiro,JWT實現(xiàn)微信小程序登錄完整例子 ,實現(xiàn)了小程序的自定義登陸,將自定義登陸態(tài)token返回給小程序作為登陸憑證。需要的朋友可以參考下
    2018-11-11
  • java獲取系統(tǒng)路徑字體、得到某個目錄下的所有文件名、獲取當前路徑

    java獲取系統(tǒng)路徑字體、得到某個目錄下的所有文件名、獲取當前路徑

    這篇文章主要介紹了java獲取系統(tǒng)路徑字體、得到某個目錄下的所有文件名、獲取當前路徑,需要的朋友可以參考下
    2014-04-04
  • java收集器Collector案例匯總

    java收集器Collector案例匯總

    這篇文章主要介紹了java收集器Collector案例匯總,Collectors作為Stream的collect方法的參數(shù),Collector是一個接口,它是一個可變的匯聚操作,更多相關介紹,需要的朋友可以參考下
    2022-06-06
  • 關于maven下載慢的問題

    關于maven下載慢的問題

    這篇文章主要介紹了關于maven下載慢的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java實現(xiàn)JSON與XML相互轉換的簡明教程

    Java實現(xiàn)JSON與XML相互轉換的簡明教程

    Java實現(xiàn)復雜數(shù)據(jù)結構(如嵌套對象、數(shù)組)在 JSON 與 XML 之間的相互轉換,可以使用 Jackson 和 Jackson XML 擴展庫來完成,Jackson 是一個流行的 JSON 處理庫,通過 Jackson 的 XML 擴展庫,可以實現(xiàn) JSON 和 XML 之間的轉換,需要的朋友可以參考下
    2024-08-08
  • MyBatis-Plus 批量插入數(shù)據(jù)的操作方法

    MyBatis-Plus 批量插入數(shù)據(jù)的操作方法

    spring boot+mybatis plus環(huán)境,單條插入用的是BaseMapper自帶的insert方法,本文重點給大家介紹MyBatis-Plus 批量插入數(shù)據(jù)的操作方法,感興趣的朋友一起看看吧
    2021-09-09
  • 幾個好用Maven鏡像倉庫地址(小結)

    幾個好用Maven鏡像倉庫地址(小結)

    這篇文章主要介紹了幾個好用Maven鏡像倉庫地址(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Java中的CopyOnWriteArrayList解析

    Java中的CopyOnWriteArrayList解析

    這篇文章主要介紹了Java中的CopyOnWriteArrayList解析,ArrayList是非線程安全的,也就是說在多個線程下進行讀寫,會出現(xiàn)異常,既然是非線程安全,那我們就使用一些機制把它變安全不就好了,需要的朋友可以參考下
    2023-12-12
  • Java import static及import原理區(qū)別解析

    Java import static及import原理區(qū)別解析

    這篇文章主要介紹了Java import static及import原理區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 關于@Controller和@Restcontroller的那點奇葩事

    關于@Controller和@Restcontroller的那點奇葩事

    這篇文章主要介紹了關于@Controller和@Restcontroller的那點奇葩事,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評論

资溪县| 白玉县| 泰顺县| 思茅市| 长顺县| 正蓝旗| 睢宁县| 高雄市| 秦皇岛市| 敖汉旗| 大同县| 永胜县| 武冈市| 明水县| 凉城县| 吉隆县| 武汉市| 余姚市| 观塘区| 余江县| 常山县| 辛集市| 英山县| 朔州市| 麻江县| 克什克腾旗| 江北区| 常山县| 江永县| 亚东县| 大洼县| 大余县| 巨鹿县| 宣城市| 班玛县| 呼伦贝尔市| 崇左市| 沙田区| 双辽市| 苍南县| 彭泽县|