VUE + SpringBoot 分页功能实现分析

java哥 阅读:246 2021-03-31 13:26:59 评论:0

本文主要介绍一下 Vue + SpringBoot 中如何实现一个分页列表数据。

1、效果展示

2、VUE代码

VUE之视图定义

   <el-row> 
            <el-table 
                :data="tableData" 
                style="width: 100%"> 
                <el-table-column 
                    v-for="(data,index) in tableHeader" 
                    :key="index" 
                    :prop="data.prop" 
                    :label="data.label" 
                    :min-width="data['min-width']" 
                    :align="data.align"> 
                </el-table-column> 
                <el-table-column 
                    label="操作" 
                    min-width="240"> 
                    <template slot-scope="scope"> 
                        <el-button type="success" size="mini" @click="toRecharge(scope)">充值</el-button> 
                        <el-button size="mini" @click="toView(scope)">查看</el-button> 
                        <el-button type="primary" size="mini" @click="toEdit(scope)">修改</el-button> 
                        <el-button type="danger" size="mini" @click="deleteCard(scope)">删除</el-button> 
                    </template> 
                </el-table-column> 
            </el-table> 
            <br> 
            <el-pagination 
                @size-change="handleSizeChange" 
                @current-change="handleCurrentChange" 
                :current-page="pagination.pageIndex" 
                :page-sizes="[5, 10, 20, 30, 40]" 
                :page-size=pagination.pageSize 
                layout="total, sizes, prev, pager, next, jumper" 
                :total=pagination.total> 
            </el-pagination> 
        </el-row>

重点说明:

数据类型定义:

tableData:定义后台数据模型定义。

tableHeader:定义表格与后台数据绑定关系。

pagination:定义分页数据模型,主要包含(pageIndex:当前页,pageSize:页大小, total:总记录数)

方法定义:

handleSizeChange:更新页大小

handleCurrentChange:更新当前页

VUE之模型定义(data)

 
        tableData: [], 
        pagination: { 
            pageIndex: 1, 
            pageSize: 10, 
            total: 0, 
        }, 
        tableHeader: [ 
                    { 
                        prop: 'sid', 
                        label: '编号', 
                        align: 'left' 
                    }, 
                    { 
                        prop: 'password', 
                        label: '密码', 
                        align: 'left' 
                    }, 
                    { 
                        prop: 'state', 
                        label: '状态', 
                        align: 'left' 
                    }, 
                    { 
                        prop: 'money', 
                        label: '金额', 
                        align: 'left' 
                    }, 
                    { 
                        prop: 'studentSid', 
                        label: '学生SID', 
                        align: 'left' 
                    } 
 
                ] 

VUE之数据初始化

VUE 方法定义:请求后台数据接口加载相关数据(method)

init () { 
        var self = this 
         this.$axios({ 
            method:'post', 
            url:'/card/findPage', 
            data:{"page":this.pagination.pageIndex,"limit":this.pagination.pageSize}, 
            headers:{ 
                'Content-Type':'application/json;charset=utf-8'      //改这里就好了 
          } 
        }).then(res => { 
            console.log(res); 
           self.pagination.total = res.data.data.total_count; 
           self.tableData = res.data.data.list; 
 
        }) 
          .catch(function (error) { 
            console.log(error) 
          }) 
        }, 
        handleSizeChange(val) { 
                this.pagination.pageSize = val; 
                this.pagination.pageIndex = 1; 
                this.init(); 
        }, 
        handleCurrentChange(val) { 
                this.pagination.pageIndex = val; 
                this.init(); 
        },

VUE 声明周期函数定义:调用VUE的方法定义,完成数据初始化过程.

在VUE声明周期函数mounted ()中,调用init ,完成数据初始化过程。

  mounted: function () { 
      this.init() 
 }

3、SpringBoot 代码

entity 定义

package com.zzg.entity; 
 
import java.math.BigDecimal; 
import java.util.Date; 
 
import org.springframework.format.annotation.DateTimeFormat; 
 
import com.fasterxml.jackson.annotation.JsonFormat; 
import com.zzg.common.BaseModel; 
 
public class TCard extends BaseModel { 
    /** 
	 *  
	 */ 
	private static final long serialVersionUID = 1035674221133528445L; 
 
	private Integer sid; 
 
    private String password; 
 
    private String state; 
 
    private BigDecimal money; 
     
    @DateTimeFormat(pattern="yyyy-MM-dd") 
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") 
    private Date starTime; 
 
    @DateTimeFormat(pattern="yyyy-MM-dd") 
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") 
    private Date endTime; 
 
    private Integer studentSid; 
 
    public Integer getSid() { 
        return sid; 
    } 
 
    public void setSid(Integer sid) { 
        this.sid = sid; 
    } 
 
    public String getPassword() { 
        return password; 
    } 
 
    public void setPassword(String password) { 
        this.password = password == null ? null : password.trim(); 
    } 
 
    public String getState() { 
        return state; 
    } 
 
    public void setState(String state) { 
        this.state = state == null ? null : state.trim(); 
    } 
 
    public BigDecimal getMoney() { 
        return money; 
    } 
 
    public void setMoney(BigDecimal money) { 
        this.money = money; 
    } 
 
    public Date getStarTime() { 
        return starTime; 
    } 
 
    public void setStarTime(Date starTime) { 
        this.starTime = starTime; 
    } 
 
    public Date getEndTime() { 
        return endTime; 
    } 
 
    public void setEndTime(Date endTime) { 
        this.endTime = endTime; 
    } 
 
    public Integer getStudentSid() { 
        return studentSid; 
    } 
 
    public void setStudentSid(Integer studentSid) { 
        this.studentSid = studentSid; 
    } 
}

mapper 定义

package com.zzg.mapper; 
 
import java.util.List; 
import java.util.Map; 
 
import com.zzg.entity.TCard; 
 
public interface TCardMapper { 
	int deleteByPrimaryKey(Integer sid); 
 
	int insert(TCard record); 
 
	int insertSelective(TCard record); 
 
	TCard selectByPrimaryKey(Integer sid); 
 
	int updateByPrimaryKeySelective(TCard record); 
 
	int updateByPrimaryKey(TCard record); 
 
	/** 
	 * 方法拓展 
	 */ 
	List<TCard> select(Map<String, Object> parame); 
 
	Integer count(Map<String, Object> parame); 
 
	void batchInsert(List<TCard> list); 
 
	void batchUpdate(List<TCard> list); 
}
<?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.zzg.mapper.TCardMapper"> 
  <resultMap id="BaseResultMap" type="com.zzg.entity.TCard"> 
    <id column="sid" jdbcType="INTEGER" property="sid" /> 
    <result column="password" jdbcType="VARCHAR" property="password" /> 
    <result column="state" jdbcType="VARCHAR" property="state" /> 
    <result column="money" jdbcType="DECIMAL" property="money" /> 
    <result column="star_time" jdbcType="DATE" property="starTime" /> 
    <result column="end_time" jdbcType="DATE" property="endTime" /> 
    <result column="student_sid" jdbcType="INTEGER" property="studentSid" /> 
  </resultMap> 
  <sql id="Base_Column_List"> 
    sid, password, state, money, star_time, end_time, student_sid 
  </sql> 
  <sql id="condition"> 
  </sql> 
  <select id="select" parameterType="map" resultMap="BaseResultMap"> 
  	 select  
    <include refid="Base_Column_List" /> 
    from t_card 
    where 1 = 1 
    <include refid="condition"></include> 
  </select> 
  <select id="count" parameterType="map" resultType="java.lang.Integer"> 
  	 select  
    	count(1) 
    from t_card 
    where 1 = 1 
    <include refid="condition"></include> 
  </select> 
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> 
    select  
    <include refid="Base_Column_List" /> 
    from t_card 
    where sid = #{sid,jdbcType=INTEGER} 
  </select> 
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> 
    delete from t_card 
    where sid = #{sid,jdbcType=INTEGER} 
  </delete> 
  <insert id="insert" parameterType="com.zzg.entity.TCard"> 
    insert into t_card (sid, password, state,  
      money, star_time, end_time,  
      student_sid) 
    values (#{sid,jdbcType=INTEGER}, #{password,jdbcType=VARCHAR}, #{state,jdbcType=VARCHAR},  
      #{money,jdbcType=DECIMAL}, #{starTime,jdbcType=DATE}, #{endTime,jdbcType=DATE},  
      #{studentSid,jdbcType=INTEGER}) 
  </insert> 
  <insert id="insertSelective" parameterType="com.zzg.entity.TCard"> 
    insert into t_card 
    <trim prefix="(" suffix=")" suffixOverrides=","> 
      <if test="sid != null"> 
        sid, 
      </if> 
      <if test="password != null"> 
        password, 
      </if> 
      <if test="state != null"> 
        state, 
      </if> 
      <if test="money != null"> 
        money, 
      </if> 
      <if test="starTime != null"> 
        star_time, 
      </if> 
      <if test="endTime != null"> 
        end_time, 
      </if> 
      <if test="studentSid != null"> 
        student_sid, 
      </if> 
    </trim> 
    <trim prefix="values (" suffix=")" suffixOverrides=","> 
      <if test="sid != null"> 
        #{sid,jdbcType=INTEGER}, 
      </if> 
      <if test="password != null"> 
        #{password,jdbcType=VARCHAR}, 
      </if> 
      <if test="state != null"> 
        #{state,jdbcType=VARCHAR}, 
      </if> 
      <if test="money != null"> 
        #{money,jdbcType=DECIMAL}, 
      </if> 
      <if test="starTime != null"> 
        #{starTime,jdbcType=DATE}, 
      </if> 
      <if test="endTime != null"> 
        #{endTime,jdbcType=DATE}, 
      </if> 
      <if test="studentSid != null"> 
        #{studentSid,jdbcType=INTEGER}, 
      </if> 
    </trim> 
  </insert> 
  <update id="updateByPrimaryKeySelective" parameterType="com.zzg.entity.TCard"> 
    update t_card 
    <set> 
      <if test="password != null"> 
        password = #{password,jdbcType=VARCHAR}, 
      </if> 
      <if test="state != null"> 
        state = #{state,jdbcType=VARCHAR}, 
      </if> 
      <if test="money != null"> 
        money = #{money,jdbcType=DECIMAL}, 
      </if> 
      <if test="starTime != null"> 
        star_time = #{starTime,jdbcType=DATE}, 
      </if> 
      <if test="endTime != null"> 
        end_time = #{endTime,jdbcType=DATE}, 
      </if> 
      <if test="studentSid != null"> 
        student_sid = #{studentSid,jdbcType=INTEGER}, 
      </if> 
    </set> 
    where sid = #{sid,jdbcType=INTEGER} 
  </update> 
  <update id="updateByPrimaryKey" parameterType="com.zzg.entity.TCard"> 
    update t_card 
    set password = #{password,jdbcType=VARCHAR}, 
      state = #{state,jdbcType=VARCHAR}, 
      money = #{money,jdbcType=DECIMAL}, 
      star_time = #{starTime,jdbcType=DATE}, 
      end_time = #{endTime,jdbcType=DATE}, 
      student_sid = #{studentSid,jdbcType=INTEGER} 
    where sid = #{sid,jdbcType=INTEGER} 
  </update> 
</mapper>

 

service 定义

package com.zzg.service; 
 
import java.util.List; 
import java.util.Map; 
 
import com.zzg.common.BaseService; 
import com.zzg.common.entity.PageDate; 
import com.zzg.common.entity.PageParam; 
import com.zzg.entity.TCard; 
 
public interface TCardService extends BaseService<TCard> { 
	/** 
	 * 自定义分页 
	 *  
	 * @param parame 
	 * @param rb 
	 * @return 
	 */ 
	public PageDate<TCard> selectPage(Map<String, Object> parame, PageParam rb); 
	 
	/** 
	   *    自定义查询 
	 * @param parame 
	 * @return 
	 */ 
	public List<TCard> select(Map<String, Object> parame); 
	 
	/** 
	 * 自定义统计 
	 * @param parame 
	 * @return 
	 */ 
	public Integer count(Map<String, Object> parame); 
	 
	/** 
	 * 自定义批量插入 
	 * @param list 
	 */ 
	public void batchInsert(List<TCard> list); 
	 
	/** 
	 * 自定义批量更新 
	 * @param list 
	 */ 
	public void batchUpdate(List<TCard> list); 
	 
	/** 
	 * 充值记录 
	 * @param tCard 
	 */ 
	public void recharge(TCard tCard); 
	 
} 
package com.zzg.service.impl; 
 
import java.math.BigDecimal; 
import java.util.List; 
import java.util.Map; 
 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
 
import com.github.pagehelper.PageHelper; 
import com.github.pagehelper.PageInfo; 
import com.zzg.common.AbstractService; 
import com.zzg.common.entity.PageDate; 
import com.zzg.common.entity.PageParam; 
import com.zzg.entity.TCard; 
import com.zzg.mapper.TCardMapper; 
import com.zzg.service.TCardService; 
 
@Service 
public class TCardServiceImpl extends AbstractService<TCard> implements TCardService { 
	@Autowired 
	TCardMapper mapper; 
	 
	public int insert(TCard record) { 
		// TODO Auto-generated method stub 
		return mapper.insert(record); 
	} 
 
	public int insertSelective(TCard record) { 
		// TODO Auto-generated method stub 
		return mapper.insertSelective(record); 
	} 
 
	public TCard selectByPrimaryKey(Integer sid) { 
		// TODO Auto-generated method stub 
		return mapper.selectByPrimaryKey(sid); 
	} 
 
	public int updateByPrimaryKeySelective(TCard record) { 
		// TODO Auto-generated method stub 
		return mapper.updateByPrimaryKeySelective(record); 
	} 
 
	public int updateByPrimaryKey(TCard record) { 
		// TODO Auto-generated method stub 
		return mapper.updateByPrimaryKey(record); 
	} 
 
	public void deleteByPrimaryKey(Integer sid) { 
		// TODO Auto-generated method stub 
		mapper.deleteByPrimaryKey(sid); 
	} 
 
	public PageDate<TCard> selectPage(Map<String, Object> parame, PageParam rb) { 
		// TODO Auto-generated method stub 
		PageHelper.startPage(rb.getPageNo(), rb.getLimit()); 
		List<TCard> rs = mapper.select(parame); 
		PageInfo<TCard> pageInfo = new PageInfo<TCard>(rs); 
		return super.page(pageInfo.getList(), pageInfo.getPageNum(), pageInfo.getPageSize(), pageInfo.getTotal()); 
	} 
 
	public List<TCard> select(Map<String, Object> parame) { 
		// TODO Auto-generated method stub 
		return mapper.select(parame); 
	} 
 
	public Integer count(Map<String, Object> parame) { 
		// TODO Auto-generated method stub 
		return mapper.count(parame); 
	} 
 
	public void batchInsert(List<TCard> list) { 
		// TODO Auto-generated method stub 
		mapper.batchInsert(list); 
	} 
 
	public void batchUpdate(List<TCard> list) { 
		// TODO Auto-generated method stub 
		mapper.batchUpdate(list); 
	} 
 
	public void recharge(TCard tCard) { 
		// TODO Auto-generated method stub 
		TCard object = mapper.selectByPrimaryKey(tCard.getSid()); 
		BigDecimal money = object.getMoney().add(tCard.getMoney()); 
		object.setMoney(money); 
		mapper.updateByPrimaryKeySelective(object); 
	} 
 
} 

 

controller 定义

package com.zzg.controller; 
 
import java.util.List; 
import java.util.Map; 
 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import com.zzg.common.AbstractController; 
import com.zzg.common.entity.PageDate; 
import com.zzg.common.entity.PageParam; 
import com.zzg.common.entity.Result; 
import com.zzg.entity.TCard; 
import com.zzg.service.TCardService; 
 
@Controller 
@RequestMapping("/api/card") 
public class CardController extends AbstractController { 
	// 日志记录 
		public static final Logger log = LoggerFactory.getLogger(CardController.class); 
		 
		@Autowired 
		TCardService cardService; 
		 
		@RequestMapping(value = "/findPage", method = RequestMethod.POST) 
		@ResponseBody 
		public Result findPage(@RequestBody Map<String, Object> parame) { 
			PageParam rb = super.initPageBounds(parame); 
			PageDate<TCard> pageList = cardService.selectPage(parame, rb); 
			return new Result().ok().setData(pageList); 
		} 
		 
		@RequestMapping(value = "/find", method = RequestMethod.GET) 
		@ResponseBody 
		public Result find() { 
			List<TCard> list = cardService.select(null); 
			return new Result().ok().setData(list); 
		} 
 
		@RequestMapping(value = "/findBySid/{sid}", method = RequestMethod.GET) 
		@ResponseBody 
		public Result findBySid(@PathVariable("sid") Integer sid) { 
			TCard object = cardService.selectByPrimaryKey(sid); 
			return new Result().ok().setData(object); 
		} 
 
		@RequestMapping(value = "/deleteBySid/{sid}", method = RequestMethod.GET) 
		@ResponseBody 
		public Result deleteBySid(@PathVariable("sid") Integer sid) { 
			cardService.deleteByPrimaryKey(sid); 
			return new Result().ok(); 
		} 
 
		@RequestMapping(value = "/update", method = RequestMethod.POST) 
		@ResponseBody 
		public Result update(@RequestBody TCard card) { 
			int num = cardService.updateByPrimaryKeySelective(card); 
			if (num > 0) { 
				return new Result().ok(); 
			} 
			return new Result().error("更新失败"); 
		} 
		 
		@RequestMapping(value = "/recharge", method = RequestMethod.POST) 
		@ResponseBody 
		public Result recharge(@RequestBody TCard card) { 
			cardService.recharge(card); 
			return new Result().error("充值成功"); 
		} 
 
		@RequestMapping(value = "/insert", method = RequestMethod.POST) 
		@ResponseBody 
		public Result insert(@RequestBody TCard card) { 
			int num = cardService.insertSelective(card); 
			if (num > 0) { 
				return new Result().ok(); 
			} 
			return new Result().error("新增失败"); 
		} 
} 

 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

排行榜
关注我们

一个IT知识分享的公众号