ssm/pageHelper+vue的前后端分离的分页查询

1. 需要依赖的jar包

<!--分页插件 -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.0.0</version>
    </dependency>

2.spring中的配置

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!-- 配置分页插件 -->
        <property name="plugins">
            <array>
                <bean id="helper" class="com.github.pagehelper.PageHelper">
                    <!-- 这里的几个配置主要演示如何使用,如果不理解,一定要去掉下面的配置 -->
                    <property name="properties">
                        <value>
                            <!--使用的数据库类型-->
                            dialect=mysql
                            reasonable=true
                            supportMethodsArguments=true
                            params=count=countSql
                            autoRuntimeDialect=true
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

3.index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>银行卡信息平台</title>
    <link type="text/css" rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css"/>
    <link rel="stylesheet" type="text/css" href="css/index.css"/>
</head>
<body>
<div class="container">
    <div class="row text-center">
        <h1>银行卡信息平台</h1>
    </div>
    <div class="row">
        <div class="col-xs-offset-2 col-xs-10">
            <form action="" id="myfrm" class="">
                <input type="hidden" name="cp" value="1"/>
                <div class="form-group"><label for="" class="col-xs-1 control-label">用户名</label>
                    <div class="col-xs-3"><input type="text" name="username" class="form-control" v-model="username"></div>
                </div>
                <div class="form-group"><label for="" class="col-xs-1 control-label">卡号</label>
                    <div class="col-xs-3"><input type="text" name="cardno" class="form-control" v-model="cardno"></div>
                </div>
                <div class="form-group">
                    <div class="col-xs-2">
                        <button type="button" class="btn btn-primary" @click="search()"><i class="glyphicon glyphicon-search"></i> 搜索</button>
                    </div>
                </div>
            </form>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-offset-2 col-xs-8">
            <table class="table table-striped table-hover table-bordered">
                <tr>
                    <th class="text-center">用户编号</th>
                    <th class="text-center">用户卡号</th>
                    <th class="text-center">用户姓名</th>
                    <th class="text-center">注册日期</th>
                    <th class="text-center">卡上余额</th>
                </tr>
                <tr v-for="(us,index) in pageInfo.list">
                    <td>{{us.cardid}}</td>
                    <td>{{us.cardno}}</td>
                    <td>{{us.username}}</td>
                    <td>{{us.regdate}}</td>
                    <td class="hasmoney" :class="{nomoney:ismoney[index]}">{{us.balance | priceFilter}}</td>
                </tr>
            </table>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-offset-4 col-xs-4">
            <ul class="pagination">
                <li><a href="javascript:;" @click="jump(1)">首页</a></li>
                <li><a href="javascript:;" @click="jump(pageInfo.prePage)">上页</a></li>
                <li><a href="javascript:;" @click="jump(pageInfo.nextPage)">下页</a></li>
                <li><a href="javascript:;" @click="jump(pageInfo.pages)">尾页</a></li>
            </ul>
        </div>
    </div>
</div>

    <script type="text/javascript" src="lib/vue/vue.min.js"></script>
    <script type="text/javascript" src="lib/vue/axios.min.js"></script>
    <script type="text/javascript" src="js/index.js"></script>

</body>
</html>

4.index.js

;(function(){
    var myVue = new Vue({
        el:'.container',
        data:{
            pageInfo:{},
            ismoney:[],
            username:'',
            cardno:''
        },
        created:function(){
           dataLoad();
        },
        filters:{
            priceFilter:function(val){
                return parseInt(val)>0?"余额:"+val:"欠款:"+val;
            }
        },
        methods:{
            jump:function(page){
               dataSearch(page);
            },
            search:function(){
                dataSearch();
            }
        }
    });

    /**
     * 搜索对应的数据 并根据用户传入的页码值 组装后传入dataLoad进行页面数据修改
     * @param page 页码值
     */
    function dataSearch(page){
        page = page||1;
        var pm = {params:{}};
        if(myVue.$data.cardno.trim()!=''){
            pm.params['cardno']=myVue.$data.cardno.trim();
        }
        pm.params['username']=myVue.$data.username.trim();
        pm.params.cp=page;
        dataLoad(pm);
    }

    /**
     * 通过axios将数据传送到后端,并将返回的数据填充到vue的data数据中
     * @param pm 传入参数
     */
    function dataLoad(pm){

        pm = pm||{params:{}};
        axios.get('http://localhost:9001/search',pm).then(function(res){
            var colors =[];
            for(var u in res.data.list){
                var us = res.data.list[u];
                colors.push(parseInt(us.balance)<0?true:false);
            }
            myVue.$data.ismoney = colors;
            myVue.$data.pageInfo = res.data;
        });
    }
})();

5.mapper.xml

<resultMap id="empMap" type="Emp">
        <id property="empId" column="emp_id"/>
        <result property="empName" column="emp_name"/>
        <result property="gender" column="gender"/>
        <result property="email" column="email"/>
        <result property="dId" column="d_id"/>
        <association property="dept" javaType="Dept">
            <id property="deptId" column="dept_id"/>
            <result property="deptName" column="dept_name"/>
        </association>
    </resultMap>
    <select id="findEmpList" resultMap="empMap">
        select a.*,b.* from dept a JOIN emp b on a.dept_id=b.d_id
        <where>
            <if test="empName!=null and empName!=''">
                and b.emp_name like concat('%',#{empName},'%')
            </if>
        </where>
    </select>
List<Dept> findDeptList();

6.serviceImpl

@Override
    public List<Dept> findDeptList() {
        System.out.println("dept:"+deptOrEmpService.findDeptList());
        return deptOrEmpService.findDeptList();
    }

7.controller

@RequestMapping("/findEmpList")
    public PageInfo<Emp> findEmpList(@RequestParam(defaultValue = "1",required = false) int cp,
                                     @RequestParam(value = "empName",required = false) String empName,
                                     ModelMap map){
        PageInfo<Emp> empList = deptOrEmpService.findEmpList(cp,empName);
        return empList;
    }
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SSM(Spring + SpringMVC + MyBatis)是一种常用的Java开发框架组合,而Vue是一种流行的前端框架,可以很好地实现前后端分离。如何在SSMVue实现分页功能呢?下面我来详细解答。 1. 后端实现: 针对后端的实现,我们使用SSM框架进行开发,主要涉及SpringMVC和MyBatis的使用。 (1) 在SpringMVC的控制层中,接收前端传递的分页参数(如当前页码、每页显示数量),然后调用MyBatis查询数据库,获取分页数据。 (2) 使用MyBatis的分页插件(如PageHelper),在查询语句中添加分页相关的参数,并使用插件提供的方法进行分页查询。 (3) 将查询结果封装成一个分页实体(如Page类),包括总记录数、当前页码、总页数以及当前页数据等信息。 (4) 将分页实体返回给前端,前端可以通过解析获取到的数据,进行页面的展示和分页的渲染等。 2. 前端实现: 针对前端的实现,我们使用Vue框架进行开发,主要涉及Vue的组件和数据绑定。 (1) 在Vue的组件中定义分页组件,包括分页样式和点击事件等,通过v-model等指令将页码和每页显示数量绑定到Vue实例的数据中。 (2) 在Vue实例中设置监听分页参数的变化,当分页参数变化时,重新发送请求获取对应页码的数据,并更新到Vue实例的数据中。 (3) 在Vue模板中根据返回的数据进行页面展示,可以使用v-for指令进行遍历展示每一条数据,并使用v-if指令进行分页处理,显示当前页数据。 通过以上步骤,我们可以实现SSMVue分页功能。后端通过SpringMVC接收分页参数,使用MyBatis进行数据库查询,并封装成分页实体返回给前端。前端通过Vue进行数据绑定和页面展示,根据返回的数据进行分页处理。这样,我们就可以在页面中实现分页功能了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值