运用EasyUI中datagrid读取数据库数据实现分页

1dao层

package com.hanqi.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

import com.han.entity.Student;

public class StudentDAO {

    //定义变量
    Configuration cfg = null ;
    ServiceRegistry sr = null ;
    SessionFactory sf = null ;
    Session se = null ;
    Transaction ts = null ;

    //构造方法
    public StudentDAO()
    {
        //1获取配置文件
        cfg = new Configuration().configure() ;

        //2注册配置
        sr = new StandardServiceRegistryBuilder().
                                            applySettings(cfg.getProperties()).build();

    }

    //初始化方法
    private void init()
    {
        //3获取SessionFactory
        sf = cfg.buildSessionFactory(sr) ;

        //4产生Session
        se =sf.openSession() ;

        //5启动事务
        ts = se.beginTransaction() ;
    }

    //关闭释放资源
    private void destroy()
    {
        ts.commit();  //提交事务

        se.close() ;//关闭释放资源

        sf.close();//关闭释放资源
    }

    //获取分页数据集合
    public List<Student> getPageList(int page, int rows)
    {
        List<Student> list = new ArrayList<>() ;//定义list变量并实例化

        init() ;//初始化方法

        list = se.createQuery("from Student")
                     .setMaxResults(rows)//每页行数
                     .setFirstResult((page-1)*rows)//起始页码
                     .list() ;

        destroy() ;//关闭释放资源

        return list ;//返回该集合
    }

    //获取数据条数
    public int getTotal()
    {
        int rtn = 0 ;//定义变量并赋值

        init() ;//初始化方法

        Query qu = se.createQuery("select count(1) from Student ") ;//获取Query对象

        List<Object> list = qu.list() ;//定义list变量并实例化

        if(list != null && list.size() > 0 )//判断获取的集合非空及长度
        {
            rtn = Integer.parseInt(list.get(0).toString()) ;//给变量rtn赋值
        }

        destroy();//关闭并释放资源

        return rtn ;//返回变量值
    }
}

2service层

package com.hanqi.service;

import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.han.entity.Student;
import com.hanqi.dao.StudentDAO;

public class StudentService {

    //查询分页数据,并返回JSON
    public String getPageJSON(int page, int rows)
    {
        String rtn = "{‘total‘:0,‘rows‘:[ ]}" ;

        int total =  new StudentDAO().getTotal() ;

        if(total > 0)
        {
            List<Student> list =  new StudentDAO().getPageList(page, rows) ;

            //将List集合转为JSON集合
            String json_list = JSONArray.toJSONString(list) ;

            //转义字符返回复合类型的JSON字符串
            rtn =  "{\"total\":"+total+",\"rows\":"+json_list+"}" ;
        }

        return rtn ;
    }
}

3servlet

package com.hanqi.web;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.hanqi.service.StudentService;

/**
 * Servlet implementation class StudentServlet
 */
public class StudentServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public StudentServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html");

        //接收请求
            //1每页行数
        String rows = request.getParameter("rows") ;

            //2页码
        String page = request.getParameter("page") ;

        //System.out.println("rows = "+ rows );
        //System.out.println("page = " + page );
        if(page != null && rows != null)
        {
            int rowss = Integer.parseInt(rows) ;

            int pagess = Integer.parseInt(page) ;

            String json_list = new StudentService().getPageJSON(pagess, rowss) ;
            //返回数据
            System.out.println(json_list);
            response.getWriter().write(json_list) ;
        }
        else
        {
            response.getWriter().write("{total:0,rows:[]}") ;
        }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

4html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 1    jQuery的js包 -->
<script type="text/javascript" src="jquery-easyui-1.4.4/jquery.min.js"></script>

<!-- 2    css资源 -->
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/default/easyui.css">

<!-- 3    图标资源 -->
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/icon.css"> 

<!-- 4    EasyUI的js包 -->
<script type="text/javascript" src="jquery-easyui-1.4.4/jquery.easyui.min.js"></script>

<!-- 5    本地语言 -->
<script type="text/javascript" src="jquery-easyui-1.4.4/locale/easyui-lang-zh_CN.js"></script>

</head>
<body>
<script type="text/javascript">
$(function(){
$(‘#dg‘).datagrid({
    url:‘StudentServlet‘,
    columns:[[
        {field:‘sno‘,title:‘课程号‘,width:100},
        {field:‘sname‘,title:‘姓名‘,width:100},
        {field:‘ssex‘,title:‘性别‘,width:100,align:‘right‘},
        {field:‘sbirthday‘,title:‘生日‘,width:100,align:‘right‘},
        {field:‘sclass‘,title:‘班级‘,width:100,align:‘right‘}
    ]],
    pagination:true,//分页
    fitColumns:true,//列自适应宽度
});
})
</script>
<table id="dg"></table>
</body>
</html>

时间: 2024-10-09 10:50:02

运用EasyUI中datagrid读取数据库数据实现分页的相关文章

利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序 HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据,难免会含有方便操作的 主键ID这列的记录.现在项目需要在easyUI的DataGrid中显示的数据能全部导出Excel,包括DataGrid中的中文标题,其他的统统不 要. 完成该功能所需的工具和环境:Newtonsoft.Json序列化和反序列化类库.easyUI前端UI框架.HttpHandl

读取数据库数据,并将数据整合成3D饼图在jsp中显示

首先我将生成饼图的方法独立写成一个PieChar.java类,详细代码如下:(数据库需要自己建,如有需要的话) 1 import java.io.IOException; 2 import java.sql.SQLException; 3 import org.jfree.chart.ChartFactory; 4 import org.jfree.chart.JFreeChart; 5 import org.jfree.data.general.DefaultPieDataset; 6 7 p

SpringMVC+easyUI中datagrid行编辑模式(添加数据)实现_2014.5.2

一.概述 根据我们平常的习惯,一共有两种修改模式,一种是弹窗是修改,将原有的数据提取到dialog上,然后再重新提交到后台(好像easyui里面有个onAfterEdit,这个事件里面有三个参数,其中的一个参数就是发现数据是否有改变),而第二种方式就是实现行编辑模式,在原有的datagrid上添加一个空行,(本例是实现添加数据,不考虑原有数据). 二.实现 1.后台就不赘言了.直接上代码,但是我还是有个疑问,对于SpingMVC的Controller层次中的方法的**入参**,我在前台通过aja

easyui 中Datagrid 控件在列较多且无数据时,列显示不全的解决方案

在onLoadSuccess 中加入如下代码就OK啦 $('#dg3').datagrid({ onLoadSuccess:function(data){ if(data.total==0){ var dc = $(this).data('datagrid').dc; var header2Row = dc.header2.find('tr.datagrid-header-row'); dc.body2.find('table').append(header2Row.clone().css({"

EasyUI中datagrid实现显示、增加、 删除、 修改、 查询操作(后台代码C#)

2datagrid加载数据.代码如下所示 一.数据的显示 1新建HtmlPage2.html页面,引入相关文件.如下所示 <script src="easyui/js/jquery-1.8.2.min.js"></script>  <script src="easyui/js/jquery.easyui.min.js"></script>  <link href="easyui/css/themes/d

SpringMVC+easyUI中datagrid分页实现_2014.5.1

一.概述 SpringMVC: 1.是面对方法级变量的,在操作起来会比struts方便一些(structs是类级变量),具体体现在了srpingMVC的注解上面, 如@RequstMapping("/login"),而且对于返回值ModelAndView这也是一大亮点,既可以返回一个页面(View),再加上@ResponseBody注解以后就可以返回一个      模型对象(也就是一种数据结构). 2.对于方法级传入的参数操作起来也相当方便,比如本例中,在加载DataGrid时,会像后

python读取数据库数据,读取出的中文乱码问题

最近遇到python读取数据库数据,读取出的中文乱码问题, 网络搜索的基本是: "1. Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)2. MySQL数据库charset=utf-83. Python连接MySQL是加上参数 charset=utf84. 设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)" 这些,一一尝试后仍未解决.去数据库查看了下,发现这个出现中文乱码的字段类型是varcha

读取数据库数据填充到缓存的问题,及修复方案一则

业务简述: 为了提高站点性能,部署了一台Redis,把资源从SqlServer数据库中同步到Redis,站点由原来的读取数据库,变更为读取Redis,以利用Redis的高并发提升站点性能目的. 环境说明: 1.假设表名为softs, 记录的更新时间字段名为 updateTime: 2.不考虑数据库的DELETE操作,只考虑INSERT和UPDATE操作: 3.流程中所有时间,都以数据库时间为准,以避免不同服务器之间的时间误差,导致数据遗漏. 4.重要的前提条件:数据库执行INSERT和UPDAT

EasyUI 中 DataGrid 控件 列 如何绑定对象中的属性

EasyUI 中 DataGrid 控件 是我们经常用到的控件之一, 但是 DataGrid 控件 在绑定显示列时却不支持对象属性绑定. 模型如下: public class Manager implements java.io.Serializable { private Integer id; private Role role; private String loginName; private String password; private int status; private Da