基于SpringBoot、Mybatis的项目模块

最近做了一个基于SpringBoot和mybatis的项目,和前一篇的Spark Streaming是一个完整的项目,系统后端通过读取mysql中的数据在前端页面显示,并进行处理。前端页面展示使用的是thymeleaf,在项目中遇到的其中一个小问题是数据显示的分页处理,最终使用了mybatis的pegeHelper分页工具。只是简单的查看了一下SpringBoot的API,发现其对于集成来说是非常好用的框架,而且学习成本比较低,当然我对它的使用也只是停留在基础阶段。

在启动类中配置分页插件pagehelper的设置:

import com.github.pagehelper.PageHelper;
import org.aopalliance.intercept.Interceptor;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.util.Properties;

@SpringBootApplication
@MapperScan("com.yuqing.alert.*")
public class AlertApplication {

    public static void main(String[] args) {
        SpringApplication.run(AlertApplication.class, args);
    }
    //配置mybatis的分页插件pageHelper
    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum","true");
        properties.setProperty("rowBoundsWithCount","true");
        properties.setProperty("reasonable","true");
        properties.setProperty("dialect","mysql");    //配置mysql数据库的方言
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

数据分页实体:

package com.yuqing.alert.pojo;

/**
 * 分页bean
 */

import java.util.List;

public class PageBeanEntity<T> {
    // 当前页
    private Integer currentPage ;
    // 每页显示的总条数
    private Integer pageSize ;
    // 总条数
    private Integer totalNum;
    // 是否有下一页
    private Integer isMore;
    // 总页数
    private Integer totalPage;
    // 开始索引
    private Integer startIndex;
    // 分页结果
    private List<T> items;

    public PageBeanEntity() {
        super();
    }

    public PageBeanEntity(Integer currentPage, Integer pageSize, Integer totalNum) {
        super();
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.totalNum = totalNum;
        this.totalPage = (this.totalNum+this.pageSize-1)/this.pageSize;
        this.startIndex = (this.currentPage-1)*this.pageSize;
        this.isMore = this.currentPage >= this.totalPage?0:1;
    }

    public Integer getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getTotalNum() {
        return totalNum;
    }

    public void setTotalNum(Integer totalNum) {
        this.totalNum = totalNum;
    }

    public Integer getIsMore() {
        return isMore;
    }

    public void setIsMore(Integer isMore) {
        this.isMore = isMore;
    }

    public Integer getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }

    public Integer getStartIndex() {
        return startIndex;
    }

    public void setStartIndex(Integer startIndex) {
        this.startIndex = startIndex;
    }

    public List<T> getItems() {
        return items;
    }

    public void setItems(List<T> items) {
        this.items = items;
    }
}

以某个简单的方法进行举例。

Mapper层:

import com.yuqing.alert.pojo.*;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface AlertInfoMapper {
    //查询车辆预警信息
    @Select("select count(*) from alertCar")
    public int selectCountAllAlertCar();
    @Select("select * from alertCar order by alertTime desc")
    public List<AlertCarEntity> selectAllAlertCar();

    @Select("select * from alertCar where carNumber like CONCAT('%','${carNumber}','%') and alertTime BETWEEN #{selectTime1} AND #{selectTime2}")
    public List<AlertCarEntity> selectAlertCar(String carNumber, String selectTime1, String selectTime2);
    @Select("select count(*) from alertCar where carNumber like CONCAT('%','${carNumber}','%') and alertTime BETWEEN #{selectTime1} AND #{selectTime2}")
    public int selectCountAlertCar(String carNumber,String selectTime1,String selectTime2);
}

Service层:

import com.github.pagehelper.PageHelper;
import com.yuqing.alert.Mapper.AlertInfoMapper;
import com.yuqing.alert.pojo.AlertCarEntity;
import com.yuqing.alert.pojo.PageBeanEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class AlertCarService {

    @Autowired
    private AlertInfoMapper alertInfoMapper;

    /**
     * 查询所有的报警车辆记录数
     * @return
     */
    public int selectCountAllAlertCar(){
        return alertInfoMapper.selectCountAllAlertCar();
    }

    /**
     * 查询所有的报警车辆
     * @param currentPage
     * @param pageSize
     * @return
     */
    public List<AlertCarEntity> selectAllAlertCar(int currentPage, int pageSize){
        PageHelper.startPage(currentPage, pageSize);

        List<AlertCarEntity> allAlertCar = alertInfoMapper.selectAllAlertCar();        //全部
        int countNums = alertInfoMapper.selectCountAllAlertCar();   //总记录数
        PageBeanEntity<AlertCarEntity> pageData = new PageBeanEntity<>(currentPage, pageSize, countNums);
        pageData.setItems(allAlertCar);
        return pageData.getItems();
    }

    /**
     *  查询符合条件的报警记录数
     * @param carNumber
     * @param selectTime1
     * @param selectTime2
     * @return
     */
    public int selectCountAlertCar(String carNumber,String selectTime1,String selectTime2){

        return alertInfoMapper.selectCountAlertCar(carNumber,selectTime1,selectTime2);
    }

    /**
     * 符合条件的所有报警车辆
     * @param currentPage
     * @param pageSize
     * @param carNumber
     * @param selectTime1
     * @param selectTime2
     * @return
     */
    public List<AlertCarEntity> selectAlertCar(int currentPage,int pageSize,String carNumber,String selectTime1,String selectTime2){
        PageHelper.startPage(currentPage, pageSize);

        List<AlertCarEntity> AlertCar = alertInfoMapper.selectAlertCar(carNumber,selectTime1,selectTime2);
        int countNums = alertInfoMapper.selectCountAlertCar(carNumber,selectTime1,selectTime2);   //记录数
        PageBeanEntity<AlertCarEntity> pageData = new PageBeanEntity<>(currentPage, pageSize, countNums);
        pageData.setItems(AlertCar);
        return pageData.getItems();
    }
}

controller层:

package com.yuqing.alert.controller;

import com.yuqing.alert.pojo.PageBeanEntity;
import com.yuqing.alert.service.AlertCarService;
import com.yuqing.alert.util.DateTimeHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping(value = "/alertCar")
public class AlertCarController {

    @Autowired
    AlertCarService alertCarService;

    /**
     *  查询所有的报警车辆信息
     * @param hsr
     * @param model
     * @param currentPage
     * @param pageSize
     * @param startIndex
     * @return
     */
    @RequestMapping(value = "/selectAllAlertCar")
    public ModelAndView selectAllAlertCar(HttpServletRequest hsr,Model model, Integer currentPage, Integer pageSize, Integer startIndex){
        PageBeanEntity pageBean;
        String date1;
        String date2;
        String date = hsr.getParameter("date1");
        String carNumber = hsr.getParameter("carNumber");
        if(date!=null){
            date1 = hsr.getParameter("date1");
            date2 = hsr.getParameter("date2");
        }else {
            date1 = DateTimeHelper.getPreDateTime();
            date2 = DateTimeHelper.getDateTime();
        }
        if(hsr.getParameter("op")!=null){
            String Number = hsr.getParameter("op");
            if(Number.equals("首页")){
                currentPage = 1;
                pageBean = getPageBean(currentPage,pageSize,startIndex,alertCarService.selectCountAllAlertCar());
            }else if(Number.equals("上一页")){
                String current = hsr.getParameter("cur");
                currentPage = (Integer.parseInt(current)-1);
            }else if(Number.equals("下一页")){
                String current = hsr.getParameter("cur");
                currentPage = (Integer.parseInt(current)+1);
            }else {
                String current = hsr.getParameter("last");
                currentPage = (Integer.parseInt(current));

            }
            pageBean = getPageBean(currentPage,pageSize,startIndex,alertCarService.selectCountAllAlertCar());
        }
        else{
            pageBean = getPageBean(1,pageSize,startIndex,alertCarService.selectCountAllAlertCar());
        }
        model.addAttribute("date1",date1);
        model.addAttribute("date2",date2);
        model.addAttribute("carNumber",carNumber);
        ModelAndView mav = new ModelAndView("alertInfoIndex");
        model.addAttribute("pageBean", pageBean);
        model.addAttribute("alertCar",alertCarService.selectAllAlertCar(pageBean.getCurrentPage(), pageBean.getPageSize()));

        return mav;
    }

    /**
     * 对报警车辆信息做搜索操作
     * @param hsr
     * @param model
     * @param currentPage
     * @param pageSize
     * @param startIndex
     * @return
     */
    @RequestMapping(value = "selectAlertCar")
    public ModelAndView selectAlertCar(HttpServletRequest hsr,Model model, Integer currentPage, Integer pageSize, Integer startIndex){
        String carNumber = hsr.getParameter("carNumber");
        String date1 = hsr.getParameter("date1");
        String date2 = hsr.getParameter("date2");
        PageBeanEntity pageBean = getPageBean(currentPage,pageSize,startIndex,alertCarService.selectCountAlertCar(carNumber,date1,date2));
        ModelAndView mav = new ModelAndView("alertInfoIndex");
        model.addAttribute("date1",date1);
        model.addAttribute("date2",date2);
        model.addAttribute("carNumber",carNumber);
        model.addAttribute("pageBean",pageBean);
        model.addAttribute("alertCar",alertCarService.selectAlertCar(pageBean.getCurrentPage(),pageBean.getPageSize(),carNumber,date1,date2));
        return mav;
    }

    /**
     * 分页工具方法
     * @param currentPage
     * @param pageSize
     * @param startIndex
     * @param num
     * @return
     */
    public PageBeanEntity getPageBean(Integer currentPage, Integer pageSize, Integer startIndex,int num){
        PageBeanEntity pageBean = new PageBeanEntity();
        if(currentPage==null||currentPage==0){
            pageBean.setCurrentPage(1);
        }else {
            pageBean.setCurrentPage(currentPage);
        }
        if(pageSize==null||pageSize==0){
            pageBean.setPageSize(6);
        }else{
            pageBean.setCurrentPage(pageSize);
        }
        if(startIndex==null||startIndex==0){
            pageBean.setStartIndex((pageBean.getCurrentPage()-1)* pageBean.getPageSize());
        }else {
            pageBean.setStartIndex(startIndex);
        }
        pageBean.setTotalNum(num);

        pageBean.setTotalPage((pageBean.getTotalNum()+ pageBean.getPageSize()-1)/ pageBean.getPageSize());

        return pageBean;
    }


}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,基于SpringBootMyBatis和Layui的项目技术介绍如下: 1. SpringBootSpringBoot是一个基于Spring框架的快速开发脚手架,它可以帮助我们快速搭建项目环境、自动配置相关依赖、简化开发流程等。在SpringBoot中,我们可以使用注解、自动配置、启动器等方式来快速搭建项目,并且提供了很多常用的功能模块,如Web、数据访问、安全、缓存等。 2. MyBatisMyBatis是一个Java持久层框架,它可以帮助我们简化数据库操作,提高开发效率。MyBatis通过XML或注解的方式来配置SQL语句,可以灵活地处理各种复杂的SQL场景,并且提供了很多内置的CRUD操作,如增删改查、批量操作、分页等。 3. Layui:Layui是一个轻量级的前端UI框架,它可以帮助我们快速搭建美观、易用的前端页面。Layui提供了很多常用的组件,如表格、表单、弹出层、树形结构等,同时还提供了很多主题、字体、图标等资源,可以自定义样式。 基于这些技术,我们可以开发出一个基于Web的管理系统,实现用户登录、权限管理、数据展示等功能。具体实现方式可以参考以下步骤: 1. 配置SpringBoot环境,引入相关的依赖,如SpringBootMyBatis、Lombok等。 2. 配置MyBatis,使用XML或注解的方式编写SQL语句,配置数据源、事务管理等。 3. 编写实体类、Mapper接口、Service接口和实现类,实现数据访问和业务逻辑。 4. 使用Layui编写前端页面,实现用户登录、权限管理、数据展示等功能。 5. 集成SpringSecurity实现安全认证和授权,保护系统数据安全。 6. 集成Redis实现缓存,提高系统性能和用户体验。 以上是基于SpringBootMyBatis和Layui的项目技术介绍,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值