guns框架实现增删改查开发帮助文档


本文档以较老版本guns-v3.0.1 为例

1. 环境准备

以实际为准

2.导入项目

  • 打开项目
    在这里插入图片描述
    在这里插入图片描述

  • 修改为本机JDK

  • 添加maven 【提前配置好maven环境】
    guns-parent 下的pom.xml文件右击 ,找到Add as maven
    在这里插入图片描述

  • 利用sql文件,导入到数据库中
    在这里插入图片描述

  • 自定义修改端口 【本机设置的8080】
    在这里插入图片描述

  • 数据库设置 【根据实际情况进行修改】
    在这里插入图片描述

  • 启动项目
    在这里插入图片描述

  • 出错最多原因 【mysql驱动 版本】

Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/spring/boot/starter/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail !  Cause:java.sql.SQLException: Unknown system variable 'tx_isolation'

根据本机数据库版本修改maven中sql驱动版本即可, 本机修改版本为8.0及以上版本可正常运行
在这里插入图片描述

  • 登录 初始账户:admin 密码:111111
    在这里插入图片描述
    在这里插入图片描述

3. guns 开发

3.1 准备数据库表

CREATE TABLE `my_order` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `user` varchar(255) DEFAULT NULL COMMENT '下单人名称',
  `place` varchar(255) DEFAULT NULL COMMENT '地点',
  `goods` varchar(255) DEFAULT NULL COMMENT '商品名称',
  `createtime` datetime DEFAULT NULL COMMENT '下单时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3

自定义添加一些数据
在这里插入图片描述

3.2 mybatis-plus 代码生成

  • 修改为本机项目目录
    在这里插入图片描述

  • 修改为本机数据库设置
    在这里插入图片描述

  • 设置单独生成my_order表 【不加生成所有表】
    在这里插入图片描述

  • 运行后 删除TTT文件夹 【本项目无用】
    在这里插入图片描述

  • 自动生成业务代码
    在这里插入图片描述
    在这里插入图片描述
    生成文件
    在这里插入图片描述

3.3 菜单设置和权限配置

在这里插入图片描述
在这里插入图片描述
重新加载后 可显示页面
在这里插入图片描述
在这里插入图片描述

3.4 修改前端js文件

在这里插入图片描述

3.5 显示列表订单业务代码编写

在这里插入图片描述

package com.stylefeng.guns.modular.order.controller;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.stylefeng.guns.common.persistence.dao.MyOrderMapper;
import com.stylefeng.guns.common.persistence.model.MyOrder;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

/**
 * 订单业务控制器
 *
 * @author fengshuonan
 * @Date 2022-02-20 10:39:02
 */
@Controller
@RequestMapping("/order")
public class OrderController extends BaseController {

    private String PREFIX = "/order/order/";

    @Autowired
    private MyOrderMapper myOrderMapper;

   
    /**
     * 获取订单业务列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String condition) {
            //查询全部
            List<MyOrder> myOrders = myOrderMapper.selectList(null);
            return myOrders;
     
    }
}

3.7 显示列表订单管理-----搜索功能

package com.stylefeng.guns.modular.order.controller;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.stylefeng.guns.common.persistence.dao.MyOrderMapper;
import com.stylefeng.guns.common.persistence.model.MyOrder;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

/**
 * 订单业务控制器
 *
 * @author fengshuonan
 * @Date 2022-02-20 10:39:02
 */
@Controller
@RequestMapping("/order")
public class OrderController extends BaseController {

    private String PREFIX = "/order/order/";

    @Autowired
    private MyOrderMapper myOrderMapper;
    

    /**
     * 获取订单业务列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String condition) {
        if (ToolUtil.isNotEmpty(condition)){
//            搜索
            EntityWrapper<MyOrder> objectEntityWrapper = new EntityWrapper<>();
            Wrapper<MyOrder> goods = objectEntityWrapper.like("goods", "%" + condition + "%");
            List<MyOrder> myOrders = myOrderMapper.selectList(goods);
            return myOrders;
        }else {
            //查询全部
            List<MyOrder> myOrders = myOrderMapper.selectList(null);
            return myOrders;
        }
    }

}

在这里插入图片描述

3.8 新增订单业务

后端

    /**
     * 新增订单业务
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(MyOrder myOrder) {
        if (myOrder != null){
            myOrder.setCreatetime(new Date());
        }
        Integer insert = myOrderMapper.insert(myOrder);
        return super.SUCCESS_TIP;
    }

前端
修改js
在这里插入图片描述
添加菜单
在这里插入图片描述
添加角色
在这里插入图片描述
测试
在这里插入图片描述

3.9 修改和删除业务实现

  • 添加修改和删除的菜单设置和角色权限配置
  • 添加修改页面html代码 注意:字段变量与后端传入变量一致
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">

            <input type="hidden" id="id" value="${myOrder.id}">

            <div class="row">
                <div class="col-sm-6 b-r">
                    <#input id="user" name="下单用户" type="user" value="${myOrder.user}"/>
                    <#input id="goods" name="商品名称" type="goods" value="${myOrder.goods}"/>
                </div>

                <div class="col-sm-6">
                    <#input id="place" name="地点" type="place" value="${myOrder.place}"/>
                    <#input id="createtime" name="下单时间" type="createtime" value="${myOrder.createtime}"/>
                </div>
            </div>

            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="OrderInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="OrderInfoDlg.close()"/>
                </div>
            </div>
        </div>

    </div>
</div>
<script src="${ctxPath}/static/modular/order/order/order_info.js"></script>
@}
  • 修改js代码 确保Controller类中有对应映射地址
    在这里插入图片描述
  • Controller类
package com.stylefeng.guns.modular.order.controller;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.stylefeng.guns.common.constant.factory.ConstantFactory;
import com.stylefeng.guns.common.persistence.dao.MyOrderMapper;
import com.stylefeng.guns.common.persistence.model.MyOrder;
import com.stylefeng.guns.common.persistence.model.User;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.log.LogObjectHolder;
import com.stylefeng.guns.core.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 订单业务控制器
 *
 * @author fengshuonan
 * @Date 2022-02-20 10:39:02
 */
@Controller
@RequestMapping("/order")
public class OrderController extends BaseController {

    private String PREFIX = "/order/order/";

    @Resource
    private MyOrderMapper myOrderMapper;

    /**
     * 跳转到订单业务首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "order.html";
    }

    /**
     * 跳转到添加订单业务
     */
    @RequestMapping("/order_add")
    public String orderAdd() {
        return PREFIX + "order_add.html";
    }

    /**
     * 跳转到修改订单业务
     */
    @RequestMapping("/order_update/{orderId}")
    public String orderUpdate(@PathVariable Integer orderId, Model model) {

        MyOrder myOrder = this.myOrderMapper.selectById(orderId);
        model.addAttribute(myOrder);

        LogObjectHolder.me().set(myOrder);
        return PREFIX + "order_edit.html";
    }

    /**
     * 获取订单业务列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String condition) {

        if (ToolUtil.isNotEmpty(condition)){
//            搜索
            EntityWrapper<MyOrder> objectEntityWrapper = new EntityWrapper<>();
            Wrapper<MyOrder> goods = objectEntityWrapper.like("goods", "%" + condition + "%");
            List<MyOrder> myOrders = myOrderMapper.selectList(goods);

            return myOrders;
        }else {
            //查询全部
            List<MyOrder> myOrders = myOrderMapper.selectList(null);

            return myOrders;
        }

    }

    /**
     * 新增订单业务
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(MyOrder myOrder) {
        if (myOrder != null){
            myOrder.setCreatetime(new Date());
        }
        Integer insert = myOrderMapper.insert(myOrder);
        return super.SUCCESS_TIP;
    }

    /**
     * 删除订单业务
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer orderId) {
        Integer integer = myOrderMapper.deleteById(orderId);
        return super.SUCCESS_TIP;
    }


    /**
     * 修改订单业务
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(MyOrder myOrder) {
        if (ToolUtil.isNotEmpty(myOrder.getId())){
            Integer integer = myOrderMapper.updateById(myOrder);
            return integer;
        }
        return super.SUCCESS_TIP;
    }

    /**
     * 订单业务详情
     */
    @RequestMapping(value = "/detail")
    @ResponseBody
    public Object detail() {
        return null;
    }
}

4. Spring Boot 精要

  • Spring Boot是新一代的Spring框架
  • Spring Boot可以快速构建Spring程序,简化了spring开发
  • Spring Boot不是应用服务器 (内置了一个tomcat服务器而已)
  • Spring Boot不是SpringMVC的替代
  • Spring Boot没有代码生成(自动装配autoconfig)

4.1 创建一个Spring Boot程序

  • start.spring.io 网站自动创建
    在这里插入图片描述
  • IDEA创建
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.2 Spring Boot核心

  • 自动配置
  • 起步依赖
  • 命令行界面(spring boot cli)(不用java来写代码,可以用groovy)
  • Actuator监控(监控spring 程序的健康状态,看到springboot帮你配置了哪些bean)

4.2.1 自动配置介绍

  • 当程序启动时决定用哪个配置,不用哪个配置
  • Spring-boot-autoconfigure包介绍
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值