MyBatis实现分页与ajax笔记(小白向)

MyBatis实现分页(使用PageHelper实现)

1:这里只是说明大致流程与具体实现,原理的话,不是我这种刚刚工作2年多的人该研究的。

步骤:

1:导入maven依赖(版本号,也可以通过父工程管理,当父子工程都指定的时候,执行就近原则,哈哈哈)
	    <!--加入分页插件-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.0.0</version>
    </dependency>
2:在配置文件中配置好PageHelper插件。详细注释版,大佬勿喷
<!-- 3.配置SqlSessionFactory对象, -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!-- 扫描pojo包 使用别名 -->
        <property name="typeAliasesPackage" value="com.pojo"/>
        <!-- 扫描sql配置文件:cmapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
        <property name="plugins">
            <array>
                <!-- 配置PageHelper插件 -->
                <bean class="com.github.pagehelper.PageHelper">
                    <property name="properties">
                        <props>
                            <!-- 配置数据库方言,告诉PageHelper当前使用的数据库 -->
                            <prop key="dialect">mysql</prop>
                            <!-- 配置页码的合理化修正,在1~总页数之间修正页码 -->
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
mybatis的原理就先不总结了,就是通过工厂(SqlSessionFactory)获取SqlSession,然后再去发送sql语句,
与数据库进行交互,所以在这里加上分页插件。spring会扫码这些配置文件,然后运行的时候动态给变量,属性去赋值,用配置文件,是为了方便找到相关参数去维护,当然,也可以选择用类去配置。注解也行,哈哈哈。

#########################################

3:在Service中导入,使用并且启动分页插件
    /**
     *
     * @param keyword 查询的字段
     * @param pageNum 页码,第几页,是startPage的参数
     * @param pageSize 每一页的长度 是startPage的参数
     * @return 返回PageInfo对象,统一数据类型,做过开发的懂的都懂
     * 核心代码其实就是1,2,3步,
     */
    @Override
    public PageInfo<Order> getPageInfo(String keyword, Integer pageNum, Integer pageSize) {
        //1:开启分页功能。
        PageHelper.startPage(pageNum,pageSize);
        //2:执行查询,查出数据。
        List<Order> listOrder = orderDao.selectOrderByKeyword(keyword);
        //2.5查看数据是否是理想模型,其实是为了看看这一步有没有数据,哈哈哈,在实际开发中用test去测试。
        for (Order order:listOrder
             ) {
            System.out.println(order);
        }
        //3: 封装成PageInfo对象,并且返回出去。
        return  new PageInfo<>(listOrder) ;
    }
4:自然就是Controller调用咯,当然了,设置一些默认值也是很有必要的,以防缺少参数啥的,这里springMVC会自动的将查询出来的对象转换成JSON字符串,并且返回,毕竟你不能把java对象传到前面的对象呀,jQuery它又不认识,传到前端之后呢,那就是前端的事情了,
    @ResponseBody
    @RequestMapping("/getPageInfo02")
    public PageInfo<Order> getPageInfo02(
            @RequestParam( value = "keyword",defaultValue = "") String keyword,
            @RequestParam(value = "pageNum" ,defaultValue = "1") Integer pageNum,
            @RequestParam(value = "pageSize",defaultValue = "5") Integer pageSize

    ){
        System.out.println(keyword);
        PageInfo<Order> pageInfo = orderService.getPageInfo(keyword,pageNum,pageSize);

        return pageInfo;
    }
5:  请求路径与返回的json字符串  
请求路径::http://localhost:8080/getPageInfo02?keyword=1826
返回JSON值(js大佬就可以利用这些值,去写出来一些视图,pageNum,pageSize,可以让用户修改,从而出来不同的页码,长度等,总之就是随心所以咯。我也想做一个js大佬。啧啧,全栈工资高啊):
{"pageNum":1,"pageSize":5,"size":1,"startRow":1,"endRow":1,"total":1,"pages":1,"list":[{"id":1,"salesman":"jg","createTime":"2020-11-13","price":1826}],"firstPage":1,"prePage":0,"nextPage":0,"lastPage":1,"isFirstPage":true,"isLastPage":true,"hasPreviousPage":false,"hasNextPage":false,"navigatePages":8,"navigatepageNums":[1]}

Ajax小白Model(详细注释版,以能交互,发请求为主。)

概念:AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)当然,他也是可以同步的,所以我习惯叫他局部动态刷新技术,哈哈哈。就是为了减少数据的传输量,最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容

流程(嘿嘿,随手画的。):

大致流程图

与普通请求的区别:

1:普通请求:请求--->响应--->页面
2:Ajax请求:请求--->相应--->数据

Ajax请求示例与详细注释:

       <%--获取基础路径,这里即:http://localhost:8080/   后面拼接的就是请求的路由了--%>
    <base href="http://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/"/>
    <%--//导入工具包  jquery和layer--%>
    <script src="jquery/jquery-2.1.1.min.js"></script>
    <script src="layer/layer.js"></script>
    <script>
        $(function () {//固定格式,指的是加载完成之后再运行下面的代码
            $('#btn1').click(function () {//通过id选择器绑定单击函数
                var array = [5, 8, 12];//声明一个数组
                var requestBody = JSON.stringify(array);//转换成json字符串来传递
                $.ajax({//调用ajax请求
                    url: 'send/array.html',//目标的请求路径
                    type: 'post',//请求的方式
                    data: requestBody,//具体数据
                    contentType: 'application/json;charset=utf-8',//内容类型,字符编码格式
                    dataType: 'text',//期望的数据类型
                    success: function (data) {//请求成功的处理方式
                        alert(data)
                    },
                    error: function (error) {//请求失败的处理方式
                        alert(error)
                    }
                });
            });
        })
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值