springboot整合微信小程式實現登錄與增刪改查

来源:https://www.cnblogs.com/ckfeng/archive/2020/05/01/12812214.html
-Advertisement-
Play Games

項目描述:在微信小程式中通過與Springboot操作資料庫實現登錄驗證,其中我是用springboot整合mybatis-plus 和mysql操作資料庫 1. 開發前準備 1.1 前置知識 java基礎 SpringBoot簡單基礎知識 1.2 環境參數 開發工具:IDEA 基礎環境:Maven ...


項目描述:在微信小程式中通過與Springboot操作資料庫實現簡單的增刪改查,其中我是用springboot整合mybatis-plus 和mysql使用的

1. 開發前準備

1.1 前置知識

  • java基礎
  • SpringBoot簡單基礎知識

1.2 環境參數

  • 開發工具:IDEA
  • 基礎環境:Maven+JDK8
  • 所用技術:SpringBoot、lombok、mybatis-plus、mysql 、微信小程式
  • SpringBoot版本:2.2.6

2.開發者伺服器

項目結構:

 

2.1 初始配置

(1)pom.xml配置

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

        <!--模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!-- 引入阿裡資料庫連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.14</version>
        </dependency>

        <!-- mysql依賴-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.42</version>
            <scope>runtime</scope>
        </dependency>

        <!-- mybatisPlus 核心庫 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>


        <!--生成實體成get set-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- pagehelper 分頁插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>

        <!--junit 測試-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

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

</project>

 

 

(2)application.yml

# Spring Boot 的數據源配置
spring:
  datasource:
    name: wx
    url: jdbc:mysql://localhost:3306/wx_mini_program?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: root
    # 使用druid數據源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x'
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    maxOpenPreparedStatements: 20

# mybatis-plus相關配置
mybatis-plus:
  # xml掃描,多個目錄用逗號或者分號分隔(告訴 Mapper 所對應的 XML 文件位置)
  mapper-locations: classpath:mapper/*.xml
  # 以下配置均有預設值,可以不設置
  global-config:
    db-config:
      #主鍵類型 AUTO:"資料庫ID自增" INPUT:"用戶輸入ID",ID_WORKER:"全局唯一ID (數字類型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: auto
      #欄位策略 IGNORED:"忽略判斷"  NOT_NULL:"非 NULL 判斷")  NOT_EMPTY:"非空判斷"
      field-strategy: NOT_EMPTY
      #資料庫類型
      db-type: MYSQL

  # 指定實體類的包
  type-aliases-package: com.ckf.login_wx.entity
  configuration:
    # 是否開啟自動駝峰命名規則映射:從資料庫列名到Java屬性駝峰命名的類似映射
    map-underscore-to-camel-case: true
    # 如果查詢結果中包含空值的列,則 MyBatis 在映射的時候,不會映射這個欄位
    call-setters-on-nulls: true
    # 這個配置會將執行的sql列印出來,在開發或測試的時候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


# PageHelper分頁插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

 

 

2.2 小程式用戶表

CREATE table users(
 id int not null PRIMARY key auto_increment,
 name varchar(255) not null,
 age int not null

);

insert into users value(null,'陳克鋒',18);
insert into users value(null,'陳克帥',11);
insert into users value(null,'陳克兵',14);

select * from users;

 

2.3 pojo

 

2.4 mapper

 

2.5 service

 

2.5 serviceImpl

 

 配置SpringBoot掃描mapper

 

2.6 controller

LoginController

package com.ckf.login_wx.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 安詳的苦丁茶
 * @date 2020/4/30 11:46
 */

@RestController
public class LoginController {

    /**
     * 登錄
     * @param phone
     * @param password
     * @return
     */
    @PostMapping("/doLogin")
    public Map doLogin(String phone, String password){
        Map map = new HashMap();
        if ((phone.equals("10086")&& password.equals("123456"))){
            map.put("code",200);
            map.put("result","登錄成功");
            System.out.println("登錄成功");
        }else {
            map.put("result","no");
        }
        return map;
    }

}

 

UserController

package com.ckf.login_wx.controller;

import com.ckf.login_wx.entity.User;
import com.ckf.login_wx.servic.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author 安詳的苦丁茶
 * @date 2020/4/30 13:39
 */
@RestController
@RequestMapping("/test")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查詢全部
     * @return
     */
    @GetMapping("/list")
    public Object list(){
        System.out.println("查詢成功");
        return userService.list();
    }

    /**
     * 根據id刪除
     * @param id
     * @return
     */
    @GetMapping("/delete")
    public boolean delete(Integer id){
        System.out.println("刪除成功");
        return userService.removeById(id);
    }

    /**
     *  根據id查詢
      * @param id
     * @return
     */
    @GetMapping("/byid")
    public Object byid(Integer id){
        System.out.println("查詢成功");
        return userService.getById(id);
    }

    /**
     *  修改
     * @param user
     * @return
     */
    @PostMapping("/update")
    public boolean update(@RequestBody User user){
        System.out.println("修改成功");
        return userService.updateById(user);
    }

    /**
     * 添加
     * @param user
     * @return
     */
    @PostMapping("/add")
    public boolean add(@RequestBody User user){
        System.out.println("添加成功");
        return userService.save(user);
    }

}

 

 

3. 微信小程式

項目結構:

 

 

3.1 初始配置

 

 

3.2 bing.wxml

<!--pages/bind/bind.wxml-->
<view>

  <form bindsubmit='doLogin'>
            <!--賬號-->
            <view class="inputView">
              
                <label class="loginLabel">賬號</label>
                <input name="phone" value='10086' class="inputText" placeholder="請輸入賬號" />
            </view>
            <view class="line"></view>

            <!--密碼-->
            <view class="inputView">
                
                <label class="loginLabel">密碼</label>
                <input name="password" value='123456' class="inputText" password="true" placeholder="請輸入密碼" />
            </view>
            <view class="line"></view>
            <!--按鈕-->
            <view class='backColor'>
                <button class="loginBtn" formType="submit"  open-type='getUserInfo' >登錄</button>
            </view>

            <!-- <view>
                <button class="goRegistBtn" type="warn" open-type='getUserInfo' bindgetuserinfo='doLogin'>微信登錄</button>
            </view> -->
        </form>

</view>

 

3.3 bing.js

 

 

3.3 list.wxml

<!--pages/list/list.wxml-->
  <button class="add" type='primary' bindtap='addArea'>添加</button>
<view class="container">
  <view class='widget'>
    <text class='column'>編號</text>
    <text class='column'>姓名</text>
    <text class='column'>年齡</text>
    <text class='link-column'>操作</text>
  </view>
  <scroll-view scroll-y="true">
    <view>
      <block wx:for='{{list}}'>
      <view class='widget'> 
        <text class='column'>{{item.id}}</text>
        <text class='column'>{{item.name}}</text>
         <text class='column'>{{item.age}}</text>
        <view class='link-column'>
          <navigator class='link' url='../operation/operation?id={{item.id}}'>編輯</navigator> |
          <text class='link' bindtap='deleteArea' data-areaid='{{item.id}}' data-areaname='{{item.name}}' data-index='{{index}}'>刪除</text>  
        </view>
        </view>      
      </block>
    </view>
  </scroll-view>

</view>

 

3.4 list.js

// pages/list/list.js
Page({

  /**
   * 頁面的初始數據
   */
  data: {
    list:[]
  },

  /**
   * 生命周期函數--監聽頁面載入
   */
  onLoad: function (options) {
  
  },

  /**
   * 生命周期函數--監聽頁面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函數--監聽頁面顯示
   */
  onShow: function () {
    var that=this;
    wx.request({
      url: 'http://localhost:8080/test/list',
      method:'GET',
      data:{},
      success:function(res){
        var list=res.data;
        if(list==null){
          var toastText='獲取數據失敗';
          wx.showToast({
            title: toastText,
            icon:'',
            duration:2000 //彈出時間
          })
        }else{
          that.setData({
            list:list
          })
        }
      }
    })
  },

  /**
   * 生命周期函數--監聽頁面隱藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函數--監聽頁面卸載
   */
  onUnload: function () {
  
  },

  /**
   * 頁面相關事件處理函數--監聽用戶下拉動作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 頁面上拉觸底事件的處理函數
   */
  onReachBottom: function () {
  
  },

  /**
   * 用戶點擊右上角分享
   */
  onShareAppMessage: function () {
  
  },
  addArea:function(){
    wx.navigateTo({
      url:'../operation/operation'
    })
  },
  deleteArea: function (e) {
    var that=this;
    wx.showModal({
      title: '提示',
      content: '確定要刪除[' + e.target.dataset.areaname +']嗎?',
      success:function(sm){
        if(sm.confirm){
          wx.request({
            url: 'http://localhost:8080/test/delete',
            data: { id: e.target.dataset.areaid},
            method:'GET',
            success:function(res){

              var result=res.statusCode;
              var toastText="刪除成功";
              if(result!=200){
                toastText = "刪除失敗";
              }else{
                that.data.list.splice(e.target.dataset.index,1);
                that.setData({
                  list:that.data.list
                });
              }
              wx.showToast({
                title: toastText,
                icon:'',
                duration:2000
              });
            }
          })
        }
      }
    })

    
  }
})

 

3.5 app.json

{
  "pages": [
    "pages/bind/bind",
    "pages/list/list",
    "pages/logs/logs",
    "pages/operation/operation",
    "pages/index/index"
  ],
  "window": {
    "backgroundColor": "#F6F6F6",
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#29d",
    "navigationBarTitleText": "login",
    "navigationBarTextStyle": "black"
  },
  "sitemapLocation": "sitemap.json",
  "style": "v2"
}

 

4. 測試

啟動開發者伺服器,啟動SpringBoot的main方法。

打開微信小程式開發者工具

登錄頁面

 

 

首頁

 

 

 

 

添加頁面

 

 

修改頁面

 

 

 

刪除

 

 到處基本的增刪改查操作已經完成了

如有需要前往 Gitee(碼雲)下載

前臺:https://gitee.com/ckfeng/applet_of_wechat.git

後臺:https://gitee.com/ckfeng/wx_login.git

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • jQuery 選擇器 | 選擇器 | 實例 | 選取 | | : | : | : | | | $(" ") | 所有元素 | | id | $(" lastname") | id="lastname" 的元素 | | . class | $(".intro") | 所有 class="intro" ...
  • css中相鄰元素的margin其實是會自動合併的,且取較大值。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> <style> .div1 { width: 60px; height ...
  • 自 2.2 開始,Taro 引入了插件化機制,允許開發者通過編寫插件的方式來為 Taro 拓展更多功能或者為自身業務定製個性化功能,歡迎大家進行嘗試,共同討論~ 當前版本 2.2.1 官方插件 Taro 提供了一些官方插件 "@tarojs/plugin mock" ,一個簡易的數據 mock 插件 ...
  • 自己整理給自己看的,有興趣可以參與一下 一:Css相關 一:盒模型 二:居中相關 三:比較容易被忽略的css樣式 四:如何修改chomre的記住密碼後自動填充的黃色背景 五:CSS 硬體加速 二:JS相關 一:數據類型檢測 二:深淺拷貝 三:promise 四:jquert 鏈式寫法的調用原理 五: ...
  • 十分鐘教條與經驗,輕鬆搞定系統分析師的案例分析 前言 系統分析師培訓班通過統計,得到一個結論:培訓班的考生,死得最多的就是案例分析。 為什麼呢?因為客觀題只要平時多看,多刷就行了,論文則有固定套路。但是案例則是需要考生自己主動對外輸出,並且難以有一個統一的套路。所以,那些培訓班的考生,死得最多的就是 ...
  • 本篇主要介紹 WSH 基礎知識,個人覺得很難理解,而且 Research 起來還很亂,所以決定記錄下來! WSH 是什麼: WSH 全稱是,Windows Scripting Host, 中文譯為“Windows腳本宿主”,是微軟的,一種腳本技術, 是內嵌在 Windows 系統中的,腳本語言的,工 ...
  • 大一初學指針第一天,做一下課後習題。(《C程式設計 第五版》 譚浩強 第八章第5題) 具體題目如標題所示,我首先想到用數組表示n個人,首先將前n位初始化為1,迴圈報數退出第3位,退出的用0表示,只剩最後一個人時輸出他的位數。 在迴圈中,有這幾點需要考慮: 1. 數到第三位時,將0賦給指針指向的數組元 ...
  • ```python from PyQt5.QtCore import QTimer from PyQt5 import QtCore, QtGui, QtWidgets class myWidgets(QtWidgets.QTableWidget): def __init__(self, paren... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...