文档章节

KendoUI Grid 前后端(Java) 完整案例之查询翻页

kendouiio
 kendouiio
发布于 2015/05/24 22:37
字数 890
阅读 2726
收藏 0

KendoUI Grid 前后端(Java 代码参考)(以下案例基于springmvc + freemarker + MyBatis + RequireJS )

前端:demo.js

require(['lib/domReady!'],     function () {

    kendo.culture("zh-CN");

    $("#grid").kendoGrid({
        dataSource: {
            transport: {
                read: {
                    url: CONTEXT_PATH + "/api/teedm01",
                    dataType: "json"
                }
            },
            pageSize: 10,
            serverPaging: true,
            serverSorting: true,
            serverFiltering: true,
            schema: {
                data: function (d) { return d.data; },
                total: function (d) { return d.count; }
            }
        },
        height: 300,
        selectable: "multiple cell",
        pageable: true,
        sortable: true,
        columns: [
            {
                field: "companyCode",
                title: "公司代码"
            },
            {
                field: "companyName",
                title: "公司名称"
            },
            {
                field: "companyTel",
                title: "公司电话"
            },
            {
                field: "companyAddr",
                title: "公司地址"
            },
            {
                field: "countryCode",
                title: "国家代码"
            },
            {
                field: "companyDate",
                title: "公司成立日期"
            }
        ]
    });

});


前端: demo.ftl

<!DOCTYPE html>
<html>
<head>
    <title>Grid单表展示</title>
    <#import "spring.ftl" as spring />
    <link rel="stylesheet" type="text/css" href="<@spring.url '/avatar/plugins/kendoui/styles/kendo.common.min.css'/>"/>
<link rel="stylesheet" type="text/css" href="<@spring.url '/avatar/plugins/kendoui/styles/kendo.blueopal.min.css'/>"/>
<link rel="stylesheet" type="text/css" href="<@spring.url '/avatar/styles/default/css/style.css'/>">
<link rel="stylesheet" type="text/css" href="<@spring.url '/avatar/styles/base.css'/>">

</head>
<body>
    <div id="example" style="margin: 0 auto ;width: 1000px;padding: 10px;">
        <div id="grid"></div>
    </div>

    <script data-main="<@spring.url '/avatar/demo/grid/basic/app.js'/>" src="<@spring.url '/avatar/js/lib/require.js'/>" ></script>
</body>
</html>

Java后端控制器:DemoController.java

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/grid")
public class DemoController{

   @RequestMapping(value="/basic", method=RequestMethod.GET)
   public String show(ModelMap model) {
      return "demo.ftl";
   }
}


Java后端Rest接口:DemoApi.java

import com.sheeyi.avatar.common.entity.PageResultEntity;
import com.sheeyi.avatar.common.entity.ResultEntity;
import com.sheeyi.avatar.core.anotation.mapping.*;
import com.sheeyi.avatar.core.base.BaseResource;
import com.sheeyi.avatar.core.dao.mapper.MapperExample;
import com.sheeyi.avatar.core.web.Query;
import com.sheeyi.avatar.demo.grid.model.Teedm01;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.WebRequest;

import java.util.Map;

@RestController
@RequestMapping("/api/teedm01")
public class Teedm01Api extends BaseResource<Teedm01> {

    @GetManyRequestMapping
    public PageResultEntity<Teedm01> selectByMapper( @RequestParam Map<String,Object> params ){

        int offset = Query.getOffset( params );
        int limit = Query.getLimit(params);

        return super.selectByMap( params, offset, limit);
    }

    @CountRequestMapping
    private ResponseEntity count( WebRequest webRequest ){

        return super.countByExample(new MapperExample());
    }

    @GetOneRequestMapping
    public Teedm01 selectByKey( @PathVariable("id") String id  ){
        return super.selectByKey( id );
    }

    @PutRequestMapping
    public ResponseEntity<ResultEntity> update( @RequestBody Teedm01 t ){
        return super.update( t );
    }

    @PostRequestMapping
    public ResponseEntity<ResultEntity> insert( Teedm01 t ){

        return super.insert( t );
    }

    @DeleteRequestMapping
    public ResponseEntity<ResultEntity> delete( @PathVariable("id") String id ){

        return super.delete( id );
    }
}


Java后端工具类:Query.java

import org.springframework.util.StringUtils;

import java.util.Map;

public class Query {

    public static final String OFFSEET = "skip";

    public static final String LIMIT = "pageSize";

    public static final int DEFAULT_OFFSET = 0;

    public static final int DEFAULT_LIMIT = 10;

    public static int getOffset( Map params ){

        Object offset = params.get( OFFSEET );
        if(!StringUtils.isEmpty( offset )){

            try {
                return Integer.parseInt(offset.toString());
            }catch ( NumberFormatException e ){
                return DEFAULT_OFFSET;
            }
        }
        return DEFAULT_OFFSET;
    }

    public static int getLimit( Map params ){

        Object limit = params.get( LIMIT );
        if(!StringUtils.isEmpty( limit )){

            try {
                return Integer.parseInt(limit.toString());
            }catch ( NumberFormatException e ){
                return DEFAULT_LIMIT;
            }
        }
        return DEFAULT_LIMIT;
    }

}


Java后端Rest集成基类:BaseResource.java

import com.sheeyi.avatar.common.ResultStatus;
import com.sheeyi.avatar.common.entity.PageResultEntity;
import com.sheeyi.avatar.common.entity.ResultEntity;
import com.sheeyi.avatar.common.entity.ResultEntityBuilder;
import com.sheeyi.avatar.core.dao.mapper.MapperExample;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.context.request.WebRequest;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public abstract class BaseResource<T> {

    @Autowired
    protected BaseService<T> baseService;

    public PageResultEntity<T> selectByExample(MapperExample example, int skip, int pageSize){

        RowBounds rowBounds = new RowBounds(skip, pageSize);

        List<T> ts = baseService.selectByExample(example, rowBounds);
        int count = baseService.countByExample(example);

        PageResultEntity<T> pageResultEntity = new PageResultEntity<T>();
        pageResultEntity.setData( ts );
        pageResultEntity.setCount( count );

        return pageResultEntity;
    }

    public PageResultEntity<T> selectByMap(Map<String, Object> params, int skip, int pageSize){

        PageResultEntity<T> pageResultEntity = getPageResultEntity(params, skip, pageSize);
        return pageResultEntity;
    }

    protected PageResultEntity<T> getPageResultEntity(Map<String, Object> params, int skip, int pageSize) {
        RowBounds rowBounds = new RowBounds(skip, pageSize);

        List<T> ts = baseService.selectByMap(params, rowBounds);
        int count = baseService.countByMap(params);

        PageResultEntity<T> pageResultEntity = new PageResultEntity<T>();
        pageResultEntity.setData( ts );
        pageResultEntity.setCount( count );
        return pageResultEntity;
    }

    public PageResultEntity<T> select(WebRequest request,int skip, int pageSize  ) {
        HashMap params = new HashMap();
        Iterator<String> it = request.getParameterNames();
        while (it.hasNext())
        {
            String key = it.next();
            if(!key.equals("take")&&!key.equals("page")&&!key.equals("pageSize")&&!key.equals("skip"))
                params.put(key,request.getParameter(key));
        }

        PageResultEntity<T> pageResultEntity = getPageResultEntity(params, skip, pageSize);
        return pageResultEntity;
    }


    public ResponseEntity<ResultEntity> countByExample(MapperExample example){

        int count = baseService.countByExample(example);
        return new ResponseEntity<ResultEntity>(ResultEntityBuilder.build().result( String.valueOf( count ) ), HttpStatus.OK);
    }

    public T selectByKey( String id  ){
        T t =baseService.selectByKey( id );
        return t;
    }

    public ResponseEntity<ResultEntity> update( T t ){
        baseService.updateByKey( t );
        ResultEntity resultEntity = ResultEntityBuilder.build().status(ResultStatus.SUCCESS).msg( "更新操作成功." );
        ResponseEntity<ResultEntity> responseEntity = new ResponseEntity<ResultEntity>( resultEntity, HttpStatus.OK);
        return responseEntity;
    }

    public ResponseEntity<ResultEntity> insert( T t ){
        baseService.insert(t);

        ResultEntity resultEntity = ResultEntityBuilder.build().status(ResultStatus.SUCCESS).msg( "新增操作成功." );
        ResponseEntity<ResultEntity> responseEntity = new ResponseEntity<ResultEntity>(resultEntity, HttpStatus.OK);
        return responseEntity;
    }

    public ResponseEntity<ResultEntity> insertPatch( List<T> t ){
        baseService.insertPatch(t);

        ResultEntity resultEntity = ResultEntityBuilder.build().status(ResultStatus.SUCCESS).msg( "批量新增操作成功." );
        ResponseEntity<ResultEntity> responseEntity = new ResponseEntity<ResultEntity>(resultEntity, HttpStatus.OK);
        return responseEntity;
    }

    public ResponseEntity<ResultEntity> delete( String id ){

        baseService.deleteByKey(id);

        ResultEntity resultEntity = ResultEntityBuilder.build().status(ResultStatus.SUCCESS).msg( "删除操作成功." );
        ResponseEntity<ResultEntity> responseEntity = new ResponseEntity<ResultEntity>( resultEntity, HttpStatus.OK);
        return responseEntity;
    }
}


Java后端业务逻辑Service:DemoService.java

import com.sheeyi.avatar.core.base.BaseService;
import com.sheeyi.avatar.demo.grid.model.Teedm01;
import com.sheeyi.avatar.logging.AvatarLogger;
import com.sheeyi.avatar.logging.AvatarLoggerFactory;
import org.apache.ibatis.session.RowBounds;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class DemoService extends BaseService<Demo> {

    @Override
    public Demo selectByKey( Object key ){


        return super.selectByKey( key);
    }

    @Override
    public  List<Demo> selectByMap(Map<String, Object> params, RowBounds rowBounds)
    {
        return super.selectByMap(params, rowBounds);
    }

    @Override
    public int updateByKey( Demo teedm01 )
    {
        return super.updateByKey( teedm01 );
    }

    @Override
    public int deleteByKey(Object key){

        return super.deleteByKey( key );
    }
}




本文转载自:http://kendoui.io/blog/38.html

kendouiio
粉丝 6
博文 26
码字总数 578
作品 0
浦东
私信 提问
kendoUi的网站仿的是开源中国撒

今天在使用kendoui,遇到了一些问题,在搜索问题的时候,无意中发现kendoui的网站仿的是开源中国,我以为开源中国改版了,随便问一下,论坛里有多少人在使用kendoui http://www.kendoui.io/...

嘣猪嗤痴
2015/12/30
487
1
kendoui 在线文档如何现在到本地

kendoui 的在线文档 如何下载到本地啊 现在需要使用kendoui 发现没有离线文档的下载- -求红薯老大 指点迷津@红薯 或者弄到osc的api文档中心也好啊

Mrzeta
2013/09/02
1K
4
【全网独家】Kendo UI培训正式上线,抢先预约有惊喜!

Telerik中国区总代理——慧都整合国内一线讲师资源,全新开发的Kendo UI培训已经正式上线!Kendo UI for jQuery线下研修班 与 Kendo UI企业内训双拳出击,总有一款适合你! Kendo UI for jQu...

Miss_Hello_World
2017/10/18
0
0
Kendo UI 排版

使用Kendo UI(使用kendoGrid加载)数据显示下面类型的排版样式,该如何做?

時間會抹平那些皺褶遺
2017/04/19
318
0
kendo ui core开源的,有人用过没?

今天无意间看到的新闻Kendo UI Core:开源跨平台HTML5开发框架发布 开源包包含: 40+与HTML5和JS开发相关的部件和构架 Apache v2的授权许可 适用于商业和开源的项目...

MonkeyDev
2014/05/07
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring Aware 到底是什么?

通过如下前序两篇文章: Spring Bean 生命周期之“我从哪里来”? Spring Bean 生命周期之“我要到哪里去”? 我们了解了 Spring Bean 的生命周期核心内容,bean 是如何被初始化变为 Ready fo...

tan日拱一兵
18分钟前
2
0
Android 调用第三方浏览器打开网址或下载文件

/** * 调用第三方浏览器打开 * @param context * @param url 要浏览的资源地址 */ public static void openBrowser(Context context,String url){ final Intent intent = new Intent(); int......

丁佳辉
23分钟前
1
0
PostgreSQL系统表及其TOAST是如何定义的

本文只是讲PG怎样定义系统表,而不是修改系统表甚至是定义自己的系统表。 PG系统表,比如:pg_class、pg_attribute、pg_type 等等 这几个表相互关联,后两者要在pg_class记录自己的表定义,而...

有理想的猪
32分钟前
3
0
总结无线AP与AC之间的各种问题

无线网络搭建中,都说AP+AC的组网模式最现在最先进的,但是在使用过程中还是存在一些问题,下面这些有没有大家碰到的呢? 无线网络搭建中,都说AP+AC的组网模式最现在最先进的,但是在使用过程...

xiangyunyan
37分钟前
2
0
IT兄弟连 Java语法教程 流程控制语句 循环结构语句4

do-while循环 Java还有一种循环是do-while。与for、while这些在循环顶部判断条件表达式的语句不同,do-while是在循环底部进行条件表达式的检查。这意味着do-while循环至少要执行一次循环体。...

老码农的一亩三分地
59分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部