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 );
}
}