前后端分离项目——基于遗传算法的中间商管理系统

前言

终于做的差不多了 暂时还不能公开源码
在此纪录自己大学考研前做的最后一个项目
纪录一下web开发的一些注意点

后端:

1 首先掌握了springboot中整合redis的使用(可参考下面笔记)
https://blog.csdn.net/weixin_45678130/article/details/122556156?spm=1001.2014.3001.5501

2 在开发过程当中 学习到了各种前后端当中传参的方法使用
https://blog.csdn.net/weixin_45678130/article/details/122042819?spm=1001.2014.3001.5502
其中较多的为如下这种,新建一个java类表示传参的实体类
前后端分离项目——基于遗传算法的中间商管理系统_第1张图片
前后端分离项目——基于遗传算法的中间商管理系统_第2张图片
前后端分离项目——基于遗传算法的中间商管理系统_第3张图片
另一种则是传一个json字符串过来,需要先将字符串转化为json对象然后解析里面的值
前后端分离项目——基于遗传算法的中间商管理系统_第4张图片
在这里插入图片描述
另一种则是传过来是一个数组时的解决方法(用Jsonarray接收)
前后端分离项目——基于遗传算法的中间商管理系统_第5张图片
在这里插入图片描述
前后端分离项目——基于遗传算法的中间商管理系统_第6张图片
3 搜索功能的后端实现:

传过来的一般是一个字段+值 我采用map的方式存储并传入sql语句

前后端分离项目——基于遗传算法的中间商管理系统_第7张图片

前后端分离项目——基于遗传算法的中间商管理系统_第8张图片
前后端分离项目——基于遗传算法的中间商管理系统_第9张图片

关于#{}和${}的区别:

https://blog.csdn.net/weixin_41231928/article/details/105120292?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164342243116780357246678%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164342243116780357246678&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-105120292.first_rank_v2_pc_rank_v29&utm_term=%24%7B%7D&spm=1018.2226.3001.4187

4 分页查询的后端实现:
https://blog.csdn.net/weixin_45678130/article/details/120874288?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164342285816781685391153%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=164342285816781685391153&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-120874288.nonecase&utm_term=%E5%88%86%E9%A1%B5%E6%9F%A5%E8%AF%A2&spm=1018.2226.3001.4450

5 编辑数据的后端实现:

前端我是传过来一个实体类 需要修改的字段有值 不需要修改的话为null
所以sql语句需要判断是否为null再进行update

前后端分离项目——基于遗传算法的中间商管理系统_第10张图片
并且如果传过来是一个list集合,多条数据需要修改时
前后端分离项目——基于遗传算法的中间商管理系统_第11张图片
6 插入数据的后端实现:
前后端分离项目——基于遗传算法的中间商管理系统_第12张图片
7 查询方法的后端实现

查询sql没什么好说的,主要在于返回的数据类型方面,因为数据表大多都是有外键对应的,所以sql语句的查询大多是好几个表连接在一起查询的,所以需要 resultMap重新定义一下数据返回类型
实体类和数据库字段名字一定要提前规划好 对应好 开发会方便特别多!!

<resultMap id="BuyorderResultMap" type="Buyorder">
        <id column="buy_ID" property="buyid"/>
        <result property="quantity" column="quantity"></result>
        <result property="datetime" column="datetime"></result>
        <result property="status" column="status"></result>
        <association property="materialid" javaType="Material">
            <id property="materialid"  column="material_ID"/>
            <result property="name" column="name"/>
        </association>
        <association property="supplierid" javaType="Supplier">
            <id property="Supplierid"  column="Supplier_ID"/>
            <result property="Name" column="Names"/>

        </association>
        <!--
         association 配置属性一对一
         property 对应videoOrder里面的user属性名
         javType 这个属性的类型
         -->
        <association property="employeeid" javaType="Employee">
            <id property="Employeeid"  column="employee_ID"/>
            <result property="name" column="namee"/>

        </association>

    </resultMap>

    <select id="selectAll" resultMap="BuyorderResultMap">

        select  m.name as name,b.buy_ID as buy_ID,b.quantity as quantity,b.datetime as datetime,b.status as status,s.Name as Names,p.Name as namee
        from buy_list b left join supplier s on b.supplier_ID=s.Supplier_ID left join employee p on b.employee_ID=p.Employee_ID left join material m on b.material_ID=m.material_ID
        limit ${(page-1)*pageSize},#{pageSize};
    </select>
   

8 数据统计的后端实现

例如最近七天 最近一个月的销售额等等

  <select id="selectRecent" resultMap="BuyorderRecentMap">

        select  b.buy_ID as buy_ID,b.quantity as quantity,b.datetime as datetime,b.money as money,s.Name as Names,m.name as name
        from buy_list b left join supplier s on b.supplier_ID=s.Supplier_ID left join material m on b.material_ID=m.material_ID
        where DATE_SUB(CURDATE(), INTERVAL 7 DAY)  <![CDATA[ <= ]]> date(b.datetime) and b.material_ID=#{id}

    </select>
<?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.ldu.demo.mapper.AnalysisMapper">



    <select id="selectSale"  resultType="Analysis">
         SELECT
    MONTH (datetime) AS x,

    SUM(

            price

    ) AS y
FROM
    sale_list
WHERE
    YEAR (datetime) = 2022
GROUP BY
    MONTH (datetime)

    </select>

    <select id="selectBuy"  resultType="Analysis">
         SELECT
    MONTH (datetime) AS x,

    SUM(

            money

    ) AS y
FROM
    buy_list
WHERE
    YEAR (datetime) = 2022
GROUP BY
    MONTH (datetime)

    </select>

    <select id="selectSupplier"  resultType="Analysis">

    SELECT
    supplier_ID as x,count(supplier_ID) as y
    FROM
    buy_list

    GROUP BY
    supplier_ID

    </select>

    <select id="selectCustomer"  resultType="Analysis">

    SELECT
    customer_ID as x,count(customer_ID) as y
    FROM
    sale_list

    GROUP BY
    customer_ID

    </select>

    <select id="selectMaterial"  resultType="Analysis">

    SELECT
    material_ID as x,count(material_ID) as y
    FROM
    buy_list

    GROUP BY
    material_ID

    </select>

    <select id="selectProduct"  resultType="Analysis">

    SELECT
    product_ID as x,count(product_ID) as y
    FROM
    sale_list

    GROUP BY
    product_ID

    </select>







</mapper>

9 用户权限问题
我只需要在后端返回角色类型即可,然后和token一起传回前端,然后靠前端框架进行页面权限的问题即可。不愧是框架!

前端

1 前端这块用的是vue框架 可谓真的是耽误了太多时间 得从头看这个项目的开发文档 然后重构页面 重构数据连接 重构数据显示 太麻烦了!!
再也不看前端了
2 这里不细讲vue的开发知识点了,只能说这段开发过程中,确实明显感觉到相对于原生前端来说,框架的使用真的是方便太多了,看开发文档才是提高开发效率的最佳办法,此次开发过后,对vue也是熟悉了不少

3 其中父子组件传值 算是用的最多的地方然后layer弹窗的使用方法

layer弹窗官网不更新了 关于vue的使用方法见下面的文档

https://github.com/zuoyanart/vue-layer
前后端分离项目——基于遗传算法的中间商管理系统_第13张图片

算法:

算法保密 但是感觉可以使用强化学习的 还是有很大差距 希望考完研能学一下强化学习 优化一下

部署服务器

1 目前前端使用Nginx服务器进行部署,vue项目打包上传然后修改配置文件即可
2 后端使用jdk1.8+mysql环境即可

但是这次想试试docker部署 成功了就再来更新

你可能感兴趣的:(前后端分离主流项目,java,maven,遗传算法,服务器)