Javaweb第九次作业

采用XML映射文件的形式来映射sql语句;采用动态sql语句的方式,实现条件查询的分页。

controller

@Slf4j
@RestController
@RequestMapping("supermarket111")
public class SupermarketFenyeController {


    @Autowired
    SupermarketFenyeService supermarketFenyeService;

   
    @RequestMapping ("/supermarket/{page}/{pageSize}")

    public Result findAll(@PathVariable  Integer page,
                          @PathVariable  Integer pageSize){
        PageBean pageBean =  supermarketFenyeService.list(page,pageSize);
        return Result.seccess(pageBean);
    }

//查询所有+分页
    @RequestMapping("/supermarket1/{page}/{pageSize}")
    public Result findAll_chaxun(@PathVariable  Integer page,
                                 @PathVariable  Integer pageSize, String merchID, String factoryID){
        //记录日志
        log.info("分页查询,参数:{},{},{},{},{},{}", page, pageSize,merchID, factoryID);
        PageBean pageBean =  supermarketFenyeService.list_chaxun(page,pageSize,merchID,factoryID);
        return Result.seccess(pageBean);

    }


    //条件分页查询
    @GetMapping("/{page}/{pageSize}")
    public Result page(@PathVariable Integer page,
                       @PathVariable Integer pageSize,
                       String merchID, String factoryID) {
        //记录日志
        log.info("分页查询,参数:{},{},{},{},{},{}", page, pageSize,merchID, factoryID);
        //调用业务层分页查询功能
        PageBean pageBean = supermarketFenyeService.list_chaxun(page, pageSize, merchID, factoryID);
        //响应
        return Result.seccess(pageBean);
    }




mapper

public List<MerchInfo> list();

//带条件的查询

    public List<MerchInfo> list_chaxun(@Param("merchID") String merchID, @Param("factoryID") String factoryID);

service

   @Autowired
    private SupermarketMapper supermarketMapper;


    @Override
    public PageBean list(Integer page,Integer pageSize) {
        //问:PageHelper.startPage(page, pageSize); 请解释一下

        // 设置分页参数
        PageHelper.startPage(page, pageSize);
        // 执行分页查询
        List<MerchInfo> supermarketList = supermarketMapper.list();


        // 获取分页结果
        PageInfo<MerchInfo> p = new PageInfo<>(supermarketList);
        //封装PageBean

        PageBean pageBean = new PageBean(p.getTotal(), p.getList());
        return pageBean;

    }


    @Override
    public PageBean list_chaxun(Integer page,Integer pageSize,String merchID,String factoryID) {


        // 设置分页参数
        PageHelper.startPage(page, pageSize);
        // 执行分页查询
        List<MerchInfo> supermarketList = supermarketMapper.list_chaxun(merchID, factoryID);


        // 获取分页结果
        PageInfo<MerchInfo> p = new PageInfo<>(supermarketList);
        //封装PageBean

        PageBean pageBean = new PageBean(p.getTotal(), p.getList());
        return pageBean;
    }
public PageBean list(Integer page, Integer pageSize);
    public PageBean list_chaxun(Integer page, Integer pageSize,String merchID,String factoryID);

xml

<?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.git.mapper.SupermarketMapper">
    <!-- 查询 -->
    <select id="list" resultType="com.example.git.pojo.MerchInfo">
        select * from merchinfo
    </select>
    <!-- 条件分页查询 -->
    <select id="list_chaxun" resultType="com.example.git.pojo.MerchInfo">
        select * from merchinfo
        <where>
            <if test="merchID != null and merchID != ''">
                merchID like concat('%',#{merchID},'%')
            </if>
            <if test="factoryID != null and factoryID != ''">
                and  factoryID like concat('%',#{factoryID},'%')
            </if>
        </where>
    </select>

</mapper>

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>超市管理</title>
    <link rel="stylesheet" href="js/element.css">

</head>
<body style="margin: 0">
<div id="app" style="width: 100%;height: 100%">

    <!--头导航栏-->
    <el-container >
        <el-header style="height: 60px;width: 100%;margin-top: 0;background-color: #545c64 ">
            <el-menu
                    :default-active="activeIndex"
                    class="el-menu-demo"
                    mode="horizontal"
                    @select="handleSelect"
                    background-color="#545c64"
                    text-color="#fff"
                    active-text-color="#ffd04b">
                <el-menu-item index="1" style="float: left">
                    <template slot="title">超市管理</template>
                </el-menu-item>
                <el-menu-item index="1" style="float: right">处理中心</el-menu-item>
                <el-submenu index="2" style="float: right">
                    <template slot="title">我的工作台</template>
                    <el-menu-item index="2-1">选项1</el-menu-item>
                    <el-menu-item index="2-2">选项2</el-menu-item>
                    <el-menu-item index="2-3">选项3</el-menu-item>
                    <el-submenu index="2-4">
                        <template slot="title">选项4</template>
                        <el-menu-item index="2-4-1">选项1</el-menu-item>
                        <el-menu-item index="2-4-2">选项2</el-menu-item>
                        <el-menu-item index="2-4-3">选项3</el-menu-item>
                    </el-submenu>
                </el-submenu>
                <el-menu-item index="3" disabled style="float: right">消息中心</el-menu-item>
                <el-menu-item index="4" style="float: right"><a href="https://www.ele.me" target="_blank">订单管理</a></el-menu-item>
            </el-menu>
        </el-header>

        <!--左导航栏-->
        <el-container style="height: 900px;">
            <el-aside width="300px" height="900px" style="background-color:#545c64">
                <el-col  style="height: 100%;width: 300px;color:#545c64">
                    <el-menu
                            default-active="2"
                            class="el-menu-vertical-demo"
                            @open="handleOpen"
                            @close="handleClose"
                            background-color="#545c64"
                            text-color="#fff"
                            active-text-color="#ffd04b">
                        <el-submenu index="1">
                            <template slot="title">
                                <i class="el-icon-location"></i>
                                <span>功能管理</span>
                            </template>
                            <el-menu-item-group>
                                <template slot="title">核心功能</template>
                                <el-menu-item index="1-1">商品信息管理</el-menu-item>
                                <el-menu-item index="1-2">厂商管理</el-menu-item>
                                <el-menu-item index="1-3">供货商管理</el-menu-item>
                                <el-menu-item index="1-4">销售管理</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>

                        <el-submenu index="2">
                            <template slot="title">
                                <i class="el-icon-location"></i>
                                <span>统计分析</span>
                            </template>
                            <el-menu-item-group>
                                <template slot="title">图表统计</template>
                                <el-menu-item index="2-1">统计分析</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>

                    </el-menu>
                </el-col>
            </el-aside>

            <!--主表格页面-->
            <el-main height="900px">
                <!--查询栏-->
                <el-form :inline="true" :model="formInline" class="demo-form-inline" style="font-size: 15px">
                    <el-form-item label="商品编号">
                        <el-input v-model="formInline.merchID" placeholder="商品编号" size="mini"></el-input>
                    </el-form-item>
                    <el-form-item label="厂商编号">
                        <el-input v-model="formInline.factoryID" placeholder="厂商编号" size="mini"></el-input>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" @click="onSubmit" size="mini">查询</el-button>
                    </el-form-item>

                    <el-form-item>
                        <el-button type="success" @click="gotoInsert" size="mini" icon="el-icon-circle-plus-outline">新增</el-button>
                    </el-form-item>
                </el-form>

                <!--表格-->
                <el-table
                        :data="tableData.filter(data => !search || data.merchID.toLowerCase().includes(search.toLowerCase()))">
                    <el-table-column align="center"
                                     label="商品编号"
                                     prop="merchID">
                    </el-table-column>

                    <el-table-column align="center"
                                     label="商品名称"
                                     prop="merchName">
                    </el-table-column>

                    <el-table-column align="center"
                                     label="价格"
                                     prop="merchPrice">
                    </el-table-column>

                    <el-table-column align="center"
                                     label="库存数量"
                                     prop="merchNum">
                    </el-table-column>

                    <el-table-column align="center"
                                     label="厂商编号"
                                     prop="factoryID">
                    </el-table-column>

                    <el-table-column align="center"
                                     label="供货商编号"
                                     prop="provideID">
                    </el-table-column>

                    <el-table-column align="center" label="操作">
                        <template slot-scope="scope">

                            <el-button
                                    size="mini"
                                    @click="gotoEdit(scope.row.merchID)">Edit
                            </el-button>
                            <el-button
                                    size="mini"
                                    type="danger"
                                    @click="deleteById(scope.row.merchID)">Delete
                            </el-button>
                        </template>
                    </el-table-column>
                </el-table>

                <p align="center">
                    <el-pagination
                            layout="total, sizes, prev, pager, next, jumper"
                            @size-change="handleSizeChange"
                            @current-change="handleCurrentChange"
                            :current-page="currentPage"
                            :page-sizes="[2, 3, 4, 10]"
                            :page-size="pageSize"
                            :total="total">
                    </el-pagination>
                </p>
            </el-main>
        </el-container>
    </el-container>
</div>


<!-- 引入组件库 -->
<script src="js/jquery.min.js"></script>
<script src="js/vue.js"></script>
<script src="js/element.js"></script>
<script src="js/axios-0.18.0.js"></script>

<script>
    new Vue({
        el: "#app",
        data: {
            activeIndex:'1',
            search: '',
            currentPage: 1,
            pageSize: 4,
            total: null,
            formInline: {
                merchID: '',
                factoryID: '',
            },
            tableData: [],
            formLabelWidth: '120px'

        },
        methods: {
            handleEdit(index, row) {
                console.log(index, row);
            },
            handleDelete(index, row) {
                console.log(index, row);
            },
            handleSizeChange(val) {
                this.pageSize = val;
                this.findAll();
                console.log(`每页 ${val} 条`);

            },
            handleCurrentChange(val) {
                this.currentPage = val;
                this.findAll();
                console.log(`当前页: ${val}`);

            },
//查询所有
            onSubmit() {

                var url = `/supermarket111/${this.currentPage}/${this.pageSize}?merchID=${encodeURIComponent(this.formInline.merchID)}&factoryID=${encodeURIComponent(this.formInline.factoryID)}`

                console.log(this.formInline.merchID);
                console.log(this.formInline.factoryID);


                axios.get(url)
                    .then(res =>{
                        this.tableData = res.data.data.rows;
                        this.total=res.data.data.total;
                        console.log(this.tableData);
                        console.log(this.total);
                    })
                    .catch(error=>{
                        console.error(error);
                    })

            },

            findAll() {

                var url = `/supermarket111/${this.currentPage}/${this.pageSize}`

                axios.get(url)
                    .then(res =>{
                        this.tableData = res.data.data.rows;
                        this.total=res.data.data.total;
                        console.log(this.tableData);
                        console.log(this.total);
                    })
                    .catch(error=>{
                        console.error(error);
                    })

            },

            deleteById:function (merchID) {
                var _this= this;
                if (window.confirm("确定要删除该条数据吗???")){
                    axios.delete('/delete2/'+merchID)
                        .then(function (response) {
                            alert("删除成功")
                            _this.findAll(1);
                        })
                        .catch(function (error) {
                            console.log(error);
                        });
                }
            },
            gotoInsert(){
                location.href='insert.html';
            },

            gotoEdit(merchID){
                location.href='edit.html?merchID='+merchID;
            }
        },
        created(){
            this.findAll();
        }
    })

</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/663624.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现 很多应用都有首页通过下拉刷新&#xff0c;继续下拉进入新的活动会场进入方式。在Flutter中&#xff0c;也可以通过pull_to_refresh来实现控制刷新页&#xff0c;继续下拉进入新的活动会场页面 一、引入pull_to_refres…

svg实现一个圆形以及方形的环形进度条

1. svg实现圆形进度条 效果图&#xff1a; 1. 写个假接口&#xff1a; let res {curLegendList: [{ progress: "87", name: "进度1",color:"#00fe41" },{ progress: "66", name: "进度2" ,color:"orange"},{ p…

HarmonyOS鸿蒙学习笔记(25)相对布局 RelativeContainer详细说明

RelativeContainer 简介 前言核心概念官方实例官方实例改造蓝色方块改造center 属性说明参考资料 前言 RelativeContainer是鸿蒙的相对布局组件&#xff0c;它的布局很灵活&#xff0c;可以很方便的控制各个子UI 组件的相对位置&#xff0c;其布局理念有点类似于android的约束…

OpenPCDet

一.简介 源码链接&#xff1a; https://github.com/open-mmlab/OpenPCDethttps://github.com/open-mmlab/OpenPCDet OpenPCDet 是一套基于PyTorch实现的点云3D目标检测代码库。&#xff08;也是个框架&#xff09; 设计思想&#xff1a;点云数据集&#xff08;KITTI、NuSce…

pytorch学习笔记2

首先如果遇到conda找不到包&#xff0c;pip老是超时的情况建议添加一下镜像源 conda的 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ cond…

【C++ | 类】类和对象

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a; 本文未经允许…

收银系统源码-千呼新零售2.0【智慧供应链】

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看下…

为什么String要被设置为不可变的

为什么设置为不可变的 Java 中将 String 设计为不可变的原因有多个&#xff0c;主要涉及到安全、效率、同步和设计哲学 缓存 在我们的JVM中&#xff0c;单独开辟了一个空间来存储Java字符串&#xff0c;就是字符串池 String s1"1234"; String s2"766"; …

iPhone快捷指令之九宫格照片(三)

说明&#xff1a;这个是经过前两章的摸索&#xff0c;在我搞明白怎么接共享表单里的数据和会使用变量后&#xff0c;制作出来的终极九宫格照片指令&#xff0c;同一个指令在主屏幕里点击可以选择图片做九宫格图片&#xff1b;在相册里选择图片&#xff0c;点击分享按钮&#xf…

Kotlin 2.0 重磅发布! 性能提升!新功能上线!开发者必看!

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

C++ 关系运算

一 关系运算 二 关系运算符 三 关系表达式 四 关系表达式的值-------逻辑值 五 运算的优先级 六 注意事项 七 总结

【ai】pycharm安装github copilot解决chat一直无法初始化loading的问题

github copilot github-copilot 插件安装后:在工具里找到它 底部也有它 侧边可以chat 更新到2014.1.2copilot 也是最新但是chat 就是一直无法loading成功显示一直在初始化copilot中fix :

Python | Leetcode Python题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; class Solution:def getRow(self, rowIndex: int) -> List[int]:row [1, 1]if rowIndex < 1:return row[:rowIndex 1]elif rowIndex > 2:for i in range(rowIndex - 1):row [row[j] row[j 1] for j in range(i 1)]row.inser…

一、大模型推理

https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/README_zh.md 安装 v7.1 https://github.com/hiyouga/LLaMA-Factory/releases/tag/v0.7.1 git clone --depth 1 https://github.com/hiyoug…

自动化安装Nginx

1. 指定版本号和用户&#xff1b; 2. 确定安装目录&#xff1b; 3. 确定安装编译模块&#xff1b; 4. 安装相关依赖&#xff1b; 5. 下载源码包并解压&#xff1b; 6. 编译安装&#xff1b; 7. 文件授权及临时文件清理。 #!/bin/bash# 用户输入的Nginx版本号NGIN…

基于深度学习的端到端语音识别时代

随着深度学习的发展&#xff0c;语音识别由DNN-HMM时代发展到基于深度学习的“端到端”时代&#xff0c;这个时代的主要特征是代价函数发生了变化&#xff0c;但基本的模型结构并没有太大变化。总体来说&#xff0c;端到端技术解决了输入序列长度远大于输出序列长度的问题。 采…

【深度学习基础】使用Pytorch搭建DNN深度神经网络与手写数字识别

目录 写在开头 一、DNN的搭建 问题描述与数据集 神经网络搭建 模型训练 模型评估 模型复用 二、手写数字识别 任务描述 数据集 神经网络搭建 模型训练 模型评估 写在最后 写在开头 本文将介绍如何使用PyTorch框架搭建深度神经网络模型。实现模型的搭建、模…

《HelloGitHub》第 98 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

PostgreSQL 远程登录postgres用户不需要密码?免密登录权限设置

PostgreSQL 安装之后&#xff0c;发现登录postgres用户时不需要密码。原因配置远程IP时&#xff0c;IP 地址对应的 method 设置成了 trust。 今天安全测试反馈&#xff0c;pgsql有弱口令问题&#xff0c;于是上去改了pgsql的密码&#xff0c;结果问题还没解决。查看了具体的问…

PyQt5开发笔记:1.环境搭建与界面美化

推荐视频教程&#xff1a; https://www.bilibili.com/video/BV1LT4y1e72X?p23&vd_source7ab611f3afb3d469faad93d3996f99ba 一、打开网址&#xff0c;点击下载 https://build-system.fman.io/qt-designer-download 下载后&#xff0c;点开exe 不推荐&#xff1a;http…