zoukankan      html  css  js  c++  java
  • 品优购商城项目(二)mybatis分页插件

    品优购商城项目第二天,使用mybatis分页插件实现分页。主要实现的是 SSM整合mybatis分页。

    一、引用mybatis分页插件

      SqlMapConfig.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <plugins>
            <!-- com.github.pagehelper 为 PageHelper 类所在包名 -->
            <plugin interceptor="com.github.pagehelper.PageHelper">
                <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库-->
                <property name="dialect" value="mysql"/>
            </plugin>
        </plugins>
    </configuration>

    在配置文件中加载分页插件

    <!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 数据库连接池 -->
            <property name="dataSource" ref="dataSource" />
            <!-- 加载mybatis的全局配置文件,加载分页插件 -->
            <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
        </bean>

     

    二、封装 分页返回结果类,实现业务层分页

    首先是 封装 分页返回结果类,当然这个类也可以不要。但是直接返回Page对象数据显得很臃肿,很多数据都是我们不需要的,这样就会造成资源浪费。

    一般情况来说,分页需要返回的参数就两个,一个信息总条数,一个页面信息集合。页码和每页显示信息的数量 这个是前端的参数,前端可以控制的。

    当然还有钻牛角尖的同学要说,直接返回page.getTotal(), page.getResult()也是可以的。但是有这个封装类操作更统一,代码会更简洁。

    import java.io.Serializable;
    import java.util.List;
    
    /**
     * @Date: 2019/5/27 0027 10:50
     * @Description:分页返回结果类
     * @statement:
     */
    public class PageResult implements Serializable{
    
        private long total;//总记录数
        private List rows;//当前页结果
    
        public PageResult(long total, List rows) {
            super();
            this.total = total;
            this.rows = rows;
        }
    
        public long getTotal() {
            return total;
        }
    
        public void setTotal(long total) {
            this.total = total;
        }
    
        public List getRows() {
            return rows;
        }
    
        public void setRows(List rows) {
            this.rows = rows;
        }
    }

    业务层实现分页

        /**
         * 分页获取品牌信息
         * @param pageNum 页码
         * @param pageSize 每页显示的数据条数
         * @return
         */
        @Override
        public PageResult findPage(TbBrand tbBrand,int pageNum, int pageSize) {
            PageHelper.startPage(pageNum, pageSize);
            //加入查询条件
            TbBrandExample example=new TbBrandExample();
            Criteria criteria = example.createCriteria();
            if(tbBrand!=null){
                if(tbBrand.getName()!=null&&tbBrand.getName().length()>0){
                    criteria.andNameLike("%"+tbBrand.getName()+"%");
                }
                if(tbBrand.getFirstChar()!=null&&tbBrand.getFirstChar().length()>0){
                    criteria.andFirstCharEqualTo(tbBrand.getFirstChar());
                }
            }
            Page<TbBrand> page= (Page<TbBrand>)brandMapper.selectByExample(example);
            return new PageResult(page.getTotal(), page.getResult());
        }

     

    三、前端实现分页,这里使用的是AngularJS的分页插件

    引用js和样式

    <!-- 分页组件开始 -->
        <script src="../plugins/angularjs/pagination.js"></script>
        <link rel="stylesheet" href="../plugins/angularjs/pagination.css">

    页面使用 分页元素,这个非常简单省事

    <!-- 分页 -->
    <tm-pagination conf="paginationConf"></tm-pagination>

    js 实现分页请求,前端使用的是AngularJS的MVC模式,其实非常简单就是一个简单的ajax请求,这里只做简单记录。

    //分页 service层
        this.findPage=function(page,rows){
            return $http.post('../brand/search.do?page='+page+'&rows='+rows);
        };
    //分页 controller层
    $scope.findPage=function(page,rows){
    brandService.findPage(page,rows).success(
    function(response){
    $scope.list=response.rows;
    $scope.paginationConf.totalItems=response.total;//更新总记录数
    }
    );
    };
     

    分页效果

    分析总结:使用分页插件的优势

    一、mybatis分页插件,下面是该插件执行分页时的sql语句打印。

    可以看到,同样是 先查询 信息总条数,再查询分组信息。实现的过程与自己写SQL语句查询没有太大的差别,但是在执行效率上肯定是 原生SQL要快一点。这是依赖注入 和 new 对象的差异,这点可以忽略。当然从代码量上来说,每一个要实现分页的表都要自己写SQL,而使用插件可以无限复用,同时可以弥补HQL语句不是太熟练的同学。所有使用很有必要性,能提高开发效率。当然也有 有待改进的地方,比如count(*)。

    二、前端分页插件,一个框架封装好的组件,当然要使用。更能提高效率。

  • 相关阅读:
    ICPC 2017 Japan Domestic --Making Lunch Boxes(位运算枚举)
    ssr安装
    大作业信息汇总
    知识点1-3:MVC设计模式
    演练2-2:Guestbook示例应用程序
    知识点2-2:认识默认项目模板
    演练2-1:创建MVC默认项目
    知识点2-1:设置开发环境
    知识点1-4:ASP.NET MVC的好处
    知识点1-1:什么是ASP.NET MVC
  • 原文地址:https://www.cnblogs.com/zeussbook/p/11100361.html
Copyright © 2011-2022 走看看