国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二)

這篇具有很好參考價(jià)值的文章主要介紹了【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃
「作者主頁(yè)」:雪碧有白泡泡
「?jìng)€(gè)人網(wǎng)站」:雪碧的個(gè)人網(wǎng)站
「推薦專欄」

java一站式服務(wù)
React從入門到精通
前端炫酷代碼分享
★ 從0到英雄,vue成神之路★
uniapp-從構(gòu)建到提升
從0到英雄,vue成神之路
解決算法,一個(gè)專欄就夠了
架構(gòu)咱們從0說(shuō)
★ 數(shù)據(jù)流通的精妙之道★
★后端進(jìn)階之路★

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

當(dāng)我們拿到項(xiàng)目需求后,有時(shí)候可能會(huì)感到迷茫,不知道整體流程和接下來(lái)該做什么。為了能夠不斷實(shí)戰(zhàn)并快速提高自己,我們需要找到適合自己的一套開發(fā)流程。這樣我們就能夠有條不紊地進(jìn)行項(xiàng)目開發(fā),并且及時(shí)發(fā)現(xiàn)和修正自己的不足之處。
【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

以最常用的java全棧開發(fā)為例,這個(gè)系列以MySQL數(shù)據(jù)庫(kù),后端以SpringBoot,MybatisPlus,Redis,Spring security,前端以vue,微信小程序的技術(shù)棧組合,進(jìn)行步驟細(xì)化。

根據(jù)上文 全棧開發(fā)流程——數(shù)據(jù)表的分析與創(chuàng)建詳解實(shí)戰(zhàn)演示(一)我們討論了建立數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程
再此篇文章講述后端的啟動(dòng)以及數(shù)據(jù)源的連接,如下:

Spring boot基本demo啟動(dòng)

新建項(xiàng)目

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃
【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃
【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

添加依賴項(xiàng)

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

構(gòu)建maven

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

基本項(xiàng)目完成

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

更改文件后綴

新建 Spring Boot 項(xiàng)目后,resources 目錄下有一個(gè)默認(rèn)的全局配置文件 application.properties(空文件),Spring Boot 在底層已經(jīng)自動(dòng)配置好了默認(rèn)配置。

默認(rèn)的文件類型是 .properties,我們這邊修改為 .yml,原因是 .yml 更加靈活、簡(jiǎn)潔!

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

添加基礎(chǔ)依賴項(xiàng) ——配置文件提示與lombok

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

<!--lombok依賴-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

再引入一個(gè)常用的工具包依賴

    <!-- hutool 工具包  -->
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.7.22</version>
    </dependency>

常見錯(cuò)誤——maven

1.未正確配置setting.xml文件

打開Maven文件下conf/setting.xml文件,找到如圖所示位置,如若未設(shè)置本地庫(kù)的位置,則如黃色路徑所示,在C:\Users\用戶名.m2。設(shè)置了路徑,則采用的是紅色默認(rèn)位置。(IDEA下使用Maven,未在全局設(shè)置中設(shè)置Maven Home Dictionary,則使用默認(rèn)位置)

根據(jù)路徑找到repository,刪除庫(kù)中對(duì)應(yīng)的包文件,重新導(dǎo)入。

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

2.未配置阿里云國(guó)內(nèi)鏡像

嘗試多次重新導(dǎo)入仍然無(wú)法運(yùn)行,原因是此時(shí)網(wǎng)段無(wú)法訪問(wèn)maven.org網(wǎng)站,可采用阿里云鏡像操作,打開maven安裝文件夾的conf文件夾下的settings.xml文件,在如圖所示位置配置如下:

完成后,先執(zhí)行第一步操作后,重新導(dǎo)入包。

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

復(fù)制代碼

<mirrors>

    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

3.爆紅
【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃
如圖修改即可

pom.xml文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.15</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring boot-demo</name>
    <description>spring boot-demo</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!--lombok依賴-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- hutool 工具包  -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.22</version>
        </dependency>
        
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


以上為 springboot 的 demo 項(xiàng)目全部過(guò)程

springboot連接MySQL

新建項(xiàng)目

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

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

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

添加依賴

        <!-- mysql  -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

編輯application.yml配置文件

數(shù)據(jù)源和連接池

# 數(shù)據(jù)源
spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/schooldb?useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      # 連接池最大連接數(shù)
      maximum-pool-size: 12
      # 空閑時(shí)保持最小連接數(shù)
      minimum-idle: 5
      # 空閑連接存活時(shí)間
      idle-timeout: 300000
      # 連接超時(shí)時(shí)間
      connection-timeout: 20000
      # 測(cè)試sql
      connection-test-query: select 1

成功運(yùn)行

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

測(cè)試一下是是否鏈接成功

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

import javax.sql.DataSource;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest
public class DataSourceTests {
    @Autowired private DataSource dataSource;

    @Test
    public void testConnection() throws Exception {
        System.out.println(dataSource.getConnection());
    }
}

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃
成功連接數(shù)據(jù)庫(kù)

代碼中使用了Spring Boot的注解@SpringBootTest來(lái)標(biāo)注測(cè)試類,表明這是一個(gè)Spring Boot的測(cè)試類,并且會(huì)加載整個(gè)Spring應(yīng)用程序上下文。

通過(guò)@Autowired注解,將名為dataSource的DataSource實(shí)例自動(dòng)注入進(jìn)來(lái)。DataSource是一個(gè)接口,它是Spring提供的用于創(chuàng)建和管理數(shù)據(jù)庫(kù)連接的工具,并且可以處理數(shù)據(jù)庫(kù)連接的打開、關(guān)閉和連接池管理等操作。在@Test注解的方法testConnection中,通過(guò)調(diào)用getConnection()方法來(lái)獲取一個(gè)數(shù)據(jù)庫(kù)連接,并將其打印出來(lái)。如果一切正常,將會(huì)打印出一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象。

SpringBoot 整合 MyBatis 操作 MySql

先給出數(shù)據(jù)庫(kù)

CREATE DATABASE `mydemo`;

USE `mydemo`;

DROP TABLE IF EXISTS `sys_user`;

CREATE TABLE `sys_user` (
    `user_id` bigint NOT NULL,
    `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用戶名',
    PRIMARY KEY (`user_id`),
    KEY `user_idx1_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用戶表';

INSERT INTO `sys_user` (`user_id`, `username`) VALUES (1, '雪碧');
INSERT INTO `sys_user` (`user_id`, `username`) VALUES (2, '可樂(lè)');

添加依賴項(xiàng)

        <!--  mybatis  -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

修改 SpringBoot 配置文件

除數(shù)據(jù)源和連接池外,還有mybatis的mapper和mapper.xml位置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/schooldb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    hikari:
      # 連接池最大連接數(shù)
      maximum-pool-size: 12
      # 空閑時(shí)保持最小連接數(shù)
      minimum-idle: 5
      # 空閑連接存活時(shí)間
      idle-timeout: 300000
      # 連接超時(shí)時(shí)間
      connection-timeout: 20000
      # 測(cè)試sql
      connection-test-query: select 1
      
# mybatis 配置
mybatis:
  mapper-locations:
    - classpath:mapper/*.xml
    - classpath*:com/**/mapper/*.xml

創(chuàng)建實(shí)體類

package com.example.mybatisdemo.model;


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;


@Data
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor

public class User {


    private Long userId;

    private String username;
}

創(chuàng)建 Mapper 接口

package com.example.mybatisdemo.mapper;


import com.example.mybatisdemo.model.User;
import org.apache.ibatis.annotations.Mapper;


@Mapper
public interface SysUserMapper {

    /**
     * 根據(jù)用戶ID查詢用戶信息
     *
     * @param userId 用戶ID
     * @return 用戶信息
     */
    User queryUserById(Long userId);
}

這段代碼是一個(gè)MyBatis的Mapper接口,被注解為@Mapper表示該接口是MyBatis的映射器接口。
Mapper接口是定義與數(shù)據(jù)庫(kù)交互的方法的接口,通過(guò)MyBatis配置文件與SQL語(yǔ)句進(jìn)行映射。其中,SysUserMapper接口定義了一個(gè)查詢用戶信息的方法queryUserById,該方法接受一個(gè)userId參數(shù),返回一個(gè)User對(duì)象。

該接口的實(shí)現(xiàn)是由MyBatis框架自動(dòng)創(chuàng)建,并且會(huì)根據(jù)接口方法的注解和參數(shù)類型來(lái)動(dòng)態(tài)生成SQL語(yǔ)句,以實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作。## 創(chuàng)建 Mapper 映射文件

根據(jù) mybatis.mapper-locations 配置地址創(chuàng)建 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">
<mapper namespace="com.example.mybatisdemo.mapper.SysUserMapper">
    <!-- 通用查詢映射結(jié)果 -->
    <resultMap id="baseResultMap" type="com.example.mybatisdemo.model.User">
        <id column="user_id" property="userId"/>
        <result column="username" property="username"/>
    </resultMap>

    <select id="queryUserById" resultMap="baseResultMap">
        select *
        from sys_user
        where user_id = #{userId}
    </select>
</mapper>

創(chuàng)建 Service 與接口

  • Service
package com.example.mybatisdemo.service;

import com.example.mybatisdemo.mapper.SysUserMapper;
import com.example.mybatisdemo.model.User;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;


@Service
@RequiredArgsConstructor
public class UserService {

    private final SysUserMapper sysUserMapper;

    /**
     * 根據(jù)用戶ID查詢用戶信息
     *
     * @param userId 用戶ID
     * @return 用戶信息
     */
    public User queryUserById(Long userId) {
        return sysUserMapper.queryUserById(userId);
    }
}
  • 接口
package com.example.mybatisdemo.controller;


import com.example.mybatisdemo.model.User;
import com.example.mybatisdemo.service.UserService;

import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;



@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
public class UserController {

    private final UserService UserService;


    @GetMapping("/{userId}")
    public ResponseEntity<User> queryUserById(@PathVariable Long userId) {
        return ResponseEntity.ok(UserService.queryUserById(userId));
    }
}

這段代碼是一個(gè)基于Spring Boot的RESTful風(fēng)格的控制器類。它使用@RestController注解標(biāo)識(shí)該類為一個(gè)控制器,并將返回的數(shù)據(jù)直接作為HTTP響應(yīng)體進(jìn)行返回。
@RequiredArgsConstructor是一個(gè)Lombok注解,它會(huì)為控制器類生成一個(gè)包含所有final修飾的成員變量的構(gòu)造函數(shù)。@RequestMapping(“/user”)用于映射URL路徑,即指定該控制器的基本URL路徑為/user。UserController類的構(gòu)造函數(shù)接受一個(gè)UserService類型的參數(shù),并使用final修飾符標(biāo)識(shí)為成員變量,表示該類依賴于UserService。
@GetMapping(“/{userId}”)用于映射GET請(qǐng)求的URL路徑。{userId}是一個(gè)路徑變量,表示一個(gè)具體的用戶ID。public ResponseEntityqueryUserById(@PathVariable Long userId)方法是該控制器的處理方法,用于根據(jù)用戶ID查詢用戶信息。它使用@PathVariable注解將URL路徑中的路徑變量userId綁定到方法的參數(shù)上。該方法使用UserService調(diào)用queryUserById方法查詢用戶信息,并將結(jié)果包裝成ResponseEntity對(duì)象返回ResponseEntity.ok(UserService.queryUserById(userId))表示請(qǐng)求成功,響應(yīng)狀態(tài)碼為200,并將用戶信息作為響應(yīng)體返回。

測(cè)試接口

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

案例成功

SpringBoot 整合 MyBatis-Plus 實(shí)現(xiàn)分頁(yè)查詢

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

構(gòu)建查詢數(shù)據(jù)

CREATE DATABASE `mydemo`;

USE `mydemo`;

DROP TABLE IF EXISTS `sys_user`;

CREATE TABLE `sys_user` (
    `user_id` bigint NOT NULL,
    `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用戶名',
    PRIMARY KEY (`user_id`),
    KEY `user_idx1_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用戶表';

INSERT INTO `sys_user` (`user_id`, `username`) VALUES (1, '雪碧');
INSERT INTO `sys_user` (`user_id`, `username`) VALUES (2, '可樂(lè)');

-- 創(chuàng)建崗位信息表
CREATE TABLE `sys_post` (
    `post_id` bigint NOT NULL AUTO_INCREMENT COMMENT '崗位ID',
    `post_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '崗位編碼',
    `post_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '崗位名稱',
    `post_sort` int NOT NULL COMMENT '崗位排序',
    `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '是否刪除 -1:已刪除 0:正常',
    `create_time` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
    `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '創(chuàng)建人',
    `update_time` datetime DEFAULT NULL COMMENT '更新時(shí)間',
    `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '更新人',
    `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '備注信息',
    PRIMARY KEY (`post_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='崗位信息表';

-- 向崗位信息表插入數(shù)據(jù)
INSERT INTO `sys_post` VALUES (11, 'user8', '員工8', 10, '0', '2023-03-16 13:14:20', 'admin', '2023-06-26 13:14:20', 'admin', '打工人');
INSERT INTO `sys_post` VALUES (2, 'cto', 'cto', 0, '0', '2023-03-16 13:14:20', 'admin', '2023-06-26 13:14:20', 'admin', '禿頭大佬');
INSERT INTO `sys_post` VALUES (3, 'user', '董事長(zhǎng)', -1, '0', '2023-03-16 13:14:20', 'admin', '2023-06-26 13:14:20', 'admin', '資本家');
INSERT INTO `sys_post` VALUES (4, 'user1', '員工1', 3, '0', '2023-03-16 13:14:20', 'admin', '2023-06-26 13:14:20', 'admin', '打工人');
INSERT INTO `sys_post` VALUES (5, 'user2', '員工2', 4, '0', '2023-03-16 13:14:20', 'admin', '2023-06-26 13:14:20', 'admin', '打工人');
INSERT INTO `sys_post` VALUES (6, 'user3', '員工3', 5, '0', '2023-03-16 13:14:20', 'admin', '2023-06-26 13:14:20', 'admin', '打工人');
INSERT INTO `sys_post` VALUES (7, 'user4', '員工4', 6, '0', '2023-03-16 13:14:20', 'admin', '2023-06-26 13:14:20', 'admin', '打工人');
sys_user

添加依賴

<!--  Mysql 數(shù)據(jù)庫(kù)驅(qū)動(dòng)  -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<!--  mybatis-plus  -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

實(shí)體類

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

package com.example.mybatisplusdemo.model;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;

import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.time.LocalDateTime;


@Getter
@Setter
public class BaseEntity implements Serializable {

    /**
     * 創(chuàng)建者
     */

    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 創(chuàng)建時(shí)間
     */

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新者
     */

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**
     * 更新時(shí)間
     */

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

}
package com.example.mybatisplusdemo.model;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 崗位管理
 *
 * @author Strive
 * @date 2022-03-15 17:18:40
 */
@Data
@TableName("sys_post")
@EqualsAndHashCode(callSuper = true)

public class Post extends BaseEntity {

    private static final long serialVersionUID = -8744622014102311894L;

    /**
     * 崗位ID
     */
    @TableId(type = IdType.ASSIGN_ID)

    private Long postId;

    /**
     * 崗位編碼
     */

    private String postCode;

    /**
     * 崗位名稱
     */

    private String postName;

    /**
     * 崗位排序
     */

    private Integer postSort;

    /**
     * 是否刪除 -1:已刪除 0:正常
     */

    private String delFlag;

    /**
     * 備注信息
     */

    private String remark;

}
package com.example.mybatisplusdemo.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/** @author Strive */
@Data
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor

@TableName("sys_user")
public class User {

    @TableId

    private Long userId;


    private String username;
}

Mapper 接口

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

package com.example.mybatisplusdemo.mapper;

import cn.hutool.db.Page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.mybatisplusdemo.model.Post;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface PostMapper extends BaseMapper<Post> {
    IPage<Post> selectPageSql(@Param("page") Page page, @Param("query") Post mingYuePost);
}

其中定義了一個(gè)selectPageSql方法,用于分頁(yè)查詢Post表的數(shù)據(jù)。方法參數(shù)使用了@Param注解來(lái)給參數(shù)取別名,方便在SQL語(yǔ)句中使用。
其中,@Param(“page”)表示分頁(yè)參數(shù),@Param(“query”)表示查詢條件。方法返回值類型為IPage,表示查詢結(jié)果的分頁(yè)對(duì)象。IPage是MybatisPlus框架提供的分頁(yè)對(duì)象,它包含了查詢結(jié)果的總數(shù)、當(dāng)前頁(yè)碼、每頁(yè)記錄數(shù)等信息。

這段代碼可以實(shí)現(xiàn)根據(jù)指定的分頁(yè)參數(shù)和查詢條件,查詢Post表的數(shù)據(jù),并返回分頁(yè)對(duì)象。

package com.example.mybatisplusdemo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.example.mybatisplusdemo.model.User;
import org.apache.ibatis.annotations.Mapper;


@Mapper
public interface UserMapper extends BaseMapper<User> {}

編寫 Mapper.xml

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

<?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">
<mapper namespace="com.example.mybatisplusdemo.mapper.PostMapper">
    <resultMap id="PostMap" type="com.example.mybatisplusdemo.model.Post">
        <id property="postId" column="post_id"/>
        <result property="postCode" column="post_code"/>
        <result property="postName" column="post_name"/>
        <result property="postSort" column="postSort"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createTime" column="create_time"/>
        <result property="createBy" column="create_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="remark" column="remark"/>
    </resultMap>

    <select id="selectPageSql" resultMap="PostMap">
        SELECT p.post_id,
        p.post_name,
        p.post_code,
        p.post_sort as postSort,
        p.del_flag,
        p.create_time,
        p.update_time,
        p.update_by,
        p.create_by,
        p.remark
        FROM sys_post p
        <where>
            p.del_flag = '0'
            <if test="query.postName != null and query.postName != ''">
                <bind name="postNameLike" value="'%' + query.postName + '%'" />
                and p.post_name LIKE  #{postNameLike}
            </if>
        </where>
        <if test="null != page.orders">
            <include refid="dynamicOrder"></include>
        </if>
    </select>

    <!-- 動(dòng)態(tài)排序 -->
    <sql id="dynamicOrder">
        ORDER BY
        <choose>
            <when test="page.orders != null and page.orders.size > 0">
                <foreach collection="page.orders" item="order" separator=",">
                    ${order.column}
                    <choose>
                        <when test="order.asc == true">
                            asc
                        </when>
                        <otherwise>
                            desc
                        </otherwise>
                    </choose>
                </foreach>
            </when>
        </choose>
    </sql>
</mapper>

Service

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

package com.example.mybatisplusdemo.service;


import cn.hutool.db.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.example.mybatisplusdemo.mapper.PostMapper;
import com.example.mybatisplusdemo.model.Post;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service
@RequiredArgsConstructor
public class PostService extends ServiceImpl<PostMapper, Post> {

    private final PostMapper PostMapper;

    public IPage<Post> pageSql(Page page, Post Post) {
        return PostMapper.selectPageSql(page, Post);
    }
}
package com.example.mybatisplusdemo.service;



import com.example.mybatisplusdemo.mapper.UserMapper;
import com.example.mybatisplusdemo.model.User;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;


@Slf4j
@Service
@RequiredArgsConstructor
public class UserService {

    private final UserMapper sysUserMapper;

    /**
     * 根據(jù)用戶ID查詢用戶信息
     *
     * @param userId 用戶ID
     * @return 用戶信息
     */
    public User queryUserById(Long userId) {
        log.info("根據(jù)用戶ID查詢用戶信息");
        return sysUserMapper.selectById(userId);
    }
}

提供分頁(yè)查詢接口

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

package com.example.mybatisplusdemo.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.mybatisplusdemo.model.Post;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;



@RestController
@RequiredArgsConstructor
@RequestMapping("/post")
public class PostController {

    private final com.example.mybatisplusdemo.service.PostService PostService;


    @GetMapping("/page")
    public ResponseEntity<IPage<Post>> page(Page<Post> page) {
        return ResponseEntity.ok(PostService.page(page));
    }


    @GetMapping("/pageSql")
    public ResponseEntity<IPage<Post>> pageSql(cn.hutool.db.Page page, Post Post) {
        return ResponseEntity.ok(PostService.pageSql(page, Post));
    }

}
package com.example.mybatisplusdemo.controller;



import com.example.mybatisplusdemo.model.User;
import com.example.mybatisplusdemo.service.UserService;

import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/** @author Strive */

@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
public class UserController {

    private final UserService UserService;

 @GetMapping("/{userId}")
    public ResponseEntity<User> queryUserById(@PathVariable Long userId) {
        return ResponseEntity.ok(UserService.queryUserById(userId));
    }
}

新增分頁(yè)攔截器

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

package com.example.mybatisplusdemo.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class MyBatisPlusConfig {
    /**
     * 分頁(yè)插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

這是一個(gè)用于配置MyBatis Plus的配置類。在這個(gè)類中,我們定義了一個(gè)名為MyBatisPlusConfig的@Configuration注解,表示它是一個(gè)配置類。
該配置類中定義了一個(gè)名為mybatisPlusInterceptor的@Bean注解方法,用于創(chuàng)建一個(gè)MybatisPlusInterceptor對(duì)象。MybatisPlusInterceptor是MyBatis Plus提供的分頁(yè)插件,它可以用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)分頁(yè)查詢的功能。在mybatisPlusInterceptor方法中,我們創(chuàng)建了一個(gè)MybatisPlusInterceptor對(duì)象,并向其中添加了一個(gè)PaginationInnerInterceptor內(nèi)部攔截器。內(nèi)部攔截器用于處理分頁(yè)查詢的邏輯,這里選擇使用MySQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)源,所以傳入DbType.MYSQL參數(shù)。

通過(guò)這個(gè)配置,我們可以將該分頁(yè)插件集成到我們的MyBatis Plus配置中,從而實(shí)現(xiàn)分頁(yè)查詢的功能。

由于篇幅問(wèn)題,剩余緩存內(nèi)容在下一篇完成,剩余內(nèi)容為:
【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃
此篇文章的全部代碼為,可以私信獲取
【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

??清華出版社送書活動(dòng)

以上技術(shù)棧主要為spring boot

當(dāng)談?wù)揝pring Boot時(shí),不可忽視的是它構(gòu)建在Java之上。Java是一種廣泛使用的編程語(yǔ)言,具有跨平臺(tái)性和強(qiáng)大的生態(tài)系統(tǒng)。Spring Boot的出現(xiàn)為Java開發(fā)者提供了更方便、更高效的方式來(lái)構(gòu)建應(yīng)用程序。

此外,Java也是一種廣泛使用的編程語(yǔ)言,具有豐富的開發(fā)人員社區(qū)和大量的開源資源。通過(guò)學(xué)習(xí)和了解Java,你將能夠更好地理解Spring Boot框架的工作原理和內(nèi)部機(jī)制,并能夠利用Java的強(qiáng)大功能來(lái)解決應(yīng)用程序開發(fā)中的各種挑戰(zhàn)。???????

為了讓大家更好地學(xué)習(xí)java全棧開發(fā)流程系列,文章開展送書環(huán)節(jié)

【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二),spring boot,mysql,mybatis,原力計(jì)劃

出版日期: 2023/6/1最新版 京東鏈接 當(dāng)當(dāng)網(wǎng)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-696721.html

  • ??本次送書1-3本【取決于閱讀量,閱讀量越多,送的越多】??
  • ??活動(dòng)時(shí)間:截止到2023-9月13號(hào)
  • ??參與方式:關(guān)注博主+三連
  • 評(píng)論人生苦短,我愛java(最多可評(píng)論三條)

到了這里,關(guān)于【文末送書】全棧開發(fā)流程——后端連接數(shù)據(jù)源(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Django新手必看:從入門到精通Web應(yīng)用開發(fā)①【文末送書三本】

    Django新手必看:從入門到精通Web應(yīng)用開發(fā)①【文末送書三本】

    ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證,阿里云社區(qū)專家博主 ????:Web全棧開發(fā)專欄:《Web全棧開發(fā)》免費(fèi)專欄,歡迎閱讀! ????: 文章末尾掃描二維碼可以加入粉絲交流群,不定期免費(fèi)送書。 Django 是使用 Python 語(yǔ)言開發(fā)的

    2024年02月08日
    瀏覽(21)
  • 【粉絲福利社】Flutter小白開發(fā)——跨平臺(tái)客戶端應(yīng)用開發(fā)學(xué)習(xí)路線(文末送書-完結(jié))

    【粉絲福利社】Flutter小白開發(fā)——跨平臺(tái)客戶端應(yīng)用開發(fā)學(xué)習(xí)路線(文末送書-完結(jié))

    ?? 作者簡(jiǎn)介,愚公搬代碼 ??《頭銜》:華為云特約編輯,華為云云享專家,華為開發(fā)者專家,華為產(chǎn)品云測(cè)專家,CSDN博客專家,CSDN商業(yè)化專家,阿里云專家博主,阿里云簽約作者,騰訊云優(yōu)秀博主,騰訊云內(nèi)容共創(chuàng)官,掘金優(yōu)秀博主,51CTO博客專家等。 ??《近期榮譽(yù)》:

    2024年01月16日
    瀏覽(102)
  • 【粉絲福利社】Flutter小白開發(fā)——跨平臺(tái)客戶端應(yīng)用開發(fā)學(xué)習(xí)路線(文末送書-進(jìn)行中)

    【粉絲福利社】Flutter小白開發(fā)——跨平臺(tái)客戶端應(yīng)用開發(fā)學(xué)習(xí)路線(文末送書-進(jìn)行中)

    ?? 作者簡(jiǎn)介,愚公搬代碼 ??《頭銜》:華為云特約編輯,華為云云享專家,華為開發(fā)者專家,華為產(chǎn)品云測(cè)專家,CSDN博客專家,CSDN商業(yè)化專家,阿里云專家博主,阿里云簽約作者,騰訊云優(yōu)秀博主,騰訊云內(nèi)容共創(chuàng)官,掘金優(yōu)秀博主,51CTO博客專家等。 ??《近期榮譽(yù)》:

    2024年01月18日
    瀏覽(97)
  • 進(jìn)階高級(jí)Python開發(fā)工程師,不得不掌握的Python高并發(fā)編程(文末送書5本)

    進(jìn)階高級(jí)Python開發(fā)工程師,不得不掌握的Python高并發(fā)編程(文末送書5本)

    ???♂? 個(gè)人主頁(yè):@艾派森的個(gè)人主頁(yè) ???作者簡(jiǎn)介:Python學(xué)習(xí)者 ?? 希望大家多多支持,我們一起進(jìn)步!?? 如果文章對(duì)你有幫助的話, 歡迎評(píng)論 ??點(diǎn)贊???? 收藏 ??加關(guān)注+ ????????Python成為時(shí)下技術(shù)革新的弄潮兒,全民Python的發(fā)展趨勢(shì)讓人們不再滿足于簡(jiǎn)單地

    2024年02月17日
    瀏覽(22)
  • Linux與C/C++服務(wù)器開發(fā):深入探索網(wǎng)絡(luò)編程與實(shí)用技術(shù)(文末送書)

    Linux與C/C++服務(wù)器開發(fā):深入探索網(wǎng)絡(luò)編程與實(shí)用技術(shù)(文末送書)

    ?? 嶼小夏 : 個(gè)人主頁(yè) ??個(gè)人專欄 : 書籍推薦 ?? 莫道桑榆晚,為霞尚滿天! 本文將探討構(gòu)建高性能Linux C/C++服務(wù)器的關(guān)鍵技術(shù)和最佳實(shí)踐,包括優(yōu)化服務(wù)器性能、處理并發(fā)和并行性、高效管理內(nèi)存,以及利用高級(jí)網(wǎng)絡(luò)功能等。我們還將推薦一本相關(guān)的書籍《Linux C/C++服務(wù)

    2024年02月04日
    瀏覽(22)
  • AI大模型時(shí)代,開發(fā)工程師與項(xiàng)目管理者面對(duì)的機(jī)遇和挑戰(zhàn),文末送書3本

    AI大模型時(shí)代,開發(fā)工程師與項(xiàng)目管理者面對(duì)的機(jī)遇和挑戰(zhàn),文末送書3本

    ??作者簡(jiǎn)介,黑夜開發(fā)者,CSDN領(lǐng)軍人物,全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者?,CSDN博客專家,阿里云社區(qū)專家博主,2023年6月CSDN上海賽道top4。 ??數(shù)年電商行業(yè)從業(yè)經(jīng)驗(yàn),歷任核心研發(fā)工程師,項(xiàng)目技術(shù)負(fù)責(zé)人。 ??本文已收錄于PHP專欄:PHP進(jìn)階實(shí)戰(zhàn)教程,評(píng)測(cè)專區(qū)。 ??歡迎 ??點(diǎn)贊?

    2024年02月08日
    瀏覽(27)
  • AI 時(shí)代,程序員無(wú)需焦慮 | 《服務(wù)端開發(fā):技術(shù)、方法與實(shí)用解決方案》(文末送書福利4.0)

    AI 時(shí)代,程序員無(wú)需焦慮 | 《服務(wù)端開發(fā):技術(shù)、方法與實(shí)用解決方案》(文末送書福利4.0)

    ChatGPT 橫空出世后,“AI 即將取代程序員” 的觀點(diǎn)一度引發(fā)熱議,至今尚未完全冷卻。作為一名服務(wù)端開發(fā)工程師,同時(shí)也是 ChatGPT 的“忠實(shí)”用戶,經(jīng)過(guò)將近一年的使用,今天抽空寫一篇文章,談?wù)勛约簩?duì)“AI 時(shí)代,程序員何去何從?”這一問(wèn)題的看法。 2022 年 11 月 30 日

    2024年02月11日
    瀏覽(23)
  • 淺談 Node.js 與快速入門使用——前端開發(fā)工程師必須要知道的技術(shù)(文末送書福利6.0)

    淺談 Node.js 與快速入門使用——前端開發(fā)工程師必須要知道的技術(shù)(文末送書福利6.0)

    當(dāng)下,各行各業(yè)都面臨著大數(shù)據(jù)、人工智能、AR(augmented reality,增強(qiáng)現(xiàn)實(shí))、VR(virtual reality,虛擬現(xiàn)實(shí))等各種互聯(lián)網(wǎng)新技術(shù)的沖擊。在此技術(shù)背景下,Web前端行業(yè)也發(fā)生了巨大的改變,前端程序員已從單純的切圖處理發(fā)展到了需要處理多種后端業(yè)務(wù)。其中,Node.js 就是連

    2024年02月09日
    瀏覽(36)
  • 聚類分析(文末送書)

    聚類分析(文末送書)

    目錄 聚類分析是什么 一、 定義和數(shù)據(jù)類型 聚類應(yīng)用 聚類分析方法的性能指標(biāo) 聚類分析中常用數(shù)據(jù)結(jié)構(gòu)有數(shù)據(jù)矩陣和相異度矩陣 聚類分析方法分類 二、K-means聚類算法 劃分聚類方法對(duì)數(shù)據(jù)集進(jìn)行聚類時(shí)包含三個(gè)要點(diǎn) K-Means算法流程: K-means聚類算法的特點(diǎn) 三、k-medoids算法 基

    2024年02月09日
    瀏覽(16)
  • 【文末送書】Matlab科學(xué)計(jì)算

    【文末送書】Matlab科學(xué)計(jì)算

    歡迎關(guān)注博主 Mindtechnist 或加入【智能科技社區(qū)】一起學(xué)習(xí)和分享Linux、C、C++、Python、Matlab,機(jī)器人運(yùn)動(dòng)控制、多機(jī)器人協(xié)作,智能優(yōu)化算法,濾波估計(jì)、多傳感器信息融合,機(jī)器學(xué)習(xí),人工智能等相關(guān)領(lǐng)域的知識(shí)和技術(shù)。關(guān)注公粽號(hào) 《機(jī)器和智能》 回復(fù) “python項(xiàng)目

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包