快速开发平台,SpringBlade 稳定版发布

标签: 软件更新新闻 | 发表时间:2016-12-13 02:11 | 作者:
出处:http://www.oschina.net/?from=rss

经过三个月的完善与修复,经过几个项目的检验,SpringBlade稳定版终于发布啦!

SpringBlade是基于多个优秀的开源项目,高度整合封装而成的快速开发平台。

鸣谢

1.JFinal
2.eova
3.hutool
4.beetl
5.beetlsql
6.dreamlu
7.kisso
8.spring-shiro-training

内置功能

  • 用户管理

  • 角色管理

  • 菜单管理

  • 字典管理

  • 部门管理

  • 附件管理

  • 参数管理

  • 连接池监视

  • 日志管理

  • 代码生成


技术选型
1、后端
* 核心框架:Spring Framework
* 安全框架:Apache Shiro
* 视图框架:Spring MVC
* 服务端验证:Blade Validator
* 任务调度:Spring Task
* 持久层框架:beetlsql
* 模板引擎:beetl
* 数据库连接池:Alibaba Druid
* 缓存框架:Ehcache
* 日志管理:SLF4J、LOGBACKUP
* 工具类:Apache Commons、FastJson、EASYPOI、BladeToolBox


2、前端
* JS框架:jQuery
* CSS框架:Twitter Bootstrap
* 客户端验证:JQuery-html5Validate
* 富文本:KindEcitor
* 数据表格:jqGrid
* 树结构控件:jQuery zTree
* 弹出层:Layer
* 日期控件: LayDate
* 图表控件:echarts

代码示例

实体类

@Table(name = "notice")
@BindID(name = "id")
@SuppressWarnings("serial")
public class Notice extends BaseModel {
    private String id;
    private Integer creater;
    private String content;
    private String title;
    private Date createTime;

    @AutoID
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }   
    .....................

}

新增

    @ResponseBody
    @RequestMapping(KEY_SAVE)
    public AjaxResult save() {
        Notice notice = mapping(PREFIX, Notice.class);
        boolean temp = Blade.create(Notice.class).save(notice);
        if (temp) {
            return success(SAVE_SUCCESS_MSG);
        } else {
            return error(SAVE_FAIL_MSG);
        }
    }

修改

    @ResponseBody
    @RequestMapping(KEY_UPDATE)
    public AjaxResult update() {
        Notice notice = mapping(PREFIX, Notice.class);
        boolean temp = Blade.create(Notice.class).update(notice);
        if (temp) {
            return success(UPDATE_SUCCESS_MSG);
        } else {
            return error(UPDATE_FAIL_MSG);
        }
    }

删除

    @ResponseBody
    @RequestMapping(KEY_REMOVE)
    public AjaxResult remove(@RequestParam String ids) {
        int cnt = Blade.create(Notice.class).deleteByIds(ids);
        if (cnt > 0) {
            return success(DEL_SUCCESS_MSG);
        } else {
            return error(DEL_FAIL_MSG);
        }
    }

自定义sql查询

    List<Map> list = Db.selectList("select * form news where title = #{title}", Paras.create().set("title", "标题测试"));  
 String editor = Db.init("otherDb").queryStr("select editor form news where newsId = #{newsId}", Paras.create().set("newsId", 123));

根据md文件执行修改操作

 int cnt = Md.update("news.update", Paras.create().set("title", "标题测试").set("id", "1"));

根据条件修改

 boolean temp = Blade.create(News.class).updateBy("editor = #{editor}", "title = #{title}", Paras.create().set("title", "测试标题").set("editor", "编辑一"));

根据条件删除

    String ids = "1,2,3,4,5";
    String[] idArr = ids.split(",");
    int cnt = Blade.create(News.class).deleteBy("status in (#{join(ids)})", Paras.create().set("ids", idArr));

通用service

   public interface NoticeService extends IService<Notice> {

    }


    @Service
    public class NoticeServiceImpl extends BaseService<Notice> implements NoticeService {

    }


    @Autowired
    NoticeService service;

    @ResponseBody
    @RequestMapping(KEY_SAVE)
    public AjaxResult save() {
        Notice notice = mapping(PREFIX, Notice.class);
        boolean temp = service.save(notice);
        if (temp) {
            return success(SAVE_SUCCESS_MSG);
        } else {
            return error(SAVE_FAIL_MSG);
        }
    }

分页封装

    @ResponseBody
    @RequestMapping(KEY_LIST)
    public Object list() {
        Object grid = paginate(LIST_SOURCE, new IQuery() {

            @Override
            public void queryBefore(AopContext ac) {
                if (ShiroKit.lacksRole(ConstShiro.ADMINISTRATOR)) {
                    String condition = "and creater = #{creater}";
                    ac.setCondition(condition);
                    ac.getParam().put("creater", ShiroKit.getUser().getId());
                }
            }

            @Override
            public void queryAfter(AopContext ac) {
                @SuppressWarnings("unchecked")
                BladePage<Map<String, Object>> page = (BladePage<Map<String, Object>>) ac.getObject();
                List<Map<String, Object>> list = page.getRows();
                for (Map<String, Object> map : list) {
                    map.put("createrName", SysCache.getDictName(102, map.get("creater")));
                }
            }
        });

        return grid;
    }

后台界面


注:前端UI为ACE-ADMIN,如果商用请购买 ACE-ADMIN的授权。

git地址: http://git.oschina.net/smallc/SpringBlade

相关 [开发 平台 springblade] 推荐:

快速开发平台,SpringBlade 稳定版发布

- - 开源中国社区最新新闻
经过三个月的完善与修复,经过几个项目的检验,SpringBlade稳定版终于发布啦. SpringBlade是基于多个优秀的开源项目,高度整合封装而成的快速开发平台. * 核心框架:Spring Framework. * 安全框架:Apache Shiro. * 视图框架:Spring MVC. * 服务端验证:Blade Validator.

开发者应如何看待iOS平台和Android平台

- Xiujun Ma - 36氪
随着智能手机和应用的发展,通过开发App变成百万富翁的新闻已经屡见不鲜,那么对于还没有加入进来的开发者或创业者,应如何看待iOS平台和Android平台呢. Dan Frommer给出了以下建议:. 1、如果你做免费的手机应用,那么2个平台一起开发. 至少目前应该如此,Android市场太大以致于你不可能忽略掉它,但同时它又没大到你可以作为你唯一的平台,你可能要考虑到支持多个Android应用商店,比如亚马逊的.

2011 移动平台开发现状

- 山河之外 - 互联网的那点事...
Visionmobile 根据“2011 开发者经济调查报告”(点击这里下载该报告)中的数据制作了一幅信息图,使我们可以一览手机各平台的开发现状. 这幅信息图关注的的手机平台有 Android,黑莓,iOS(iPhone),Java ME,Mobile web,Symbian,Windows Phone.

平台是Web开发的未来吗?

- iyuan - 伯乐在线 -博客
  导读:本文是Arjun Khanna关于平台的出现以及它们如何简化Web开发的个人分析,也分析了平台的缺点和它们能够继续存在的因素.   即便现在大部分网站开发人员所构建的网站在结构上非常相似,或是至少在布局方面会有一些根本的共同之处,如果你问一下,他们大多会说他们还有一大堆的苦差使要头疼呢. 虽然客户几乎都要求顶上有横幅,导航条在左边,页面布局不超过三列,但是这并不使他们的工作更简单.

微信公众平台开发(一)

- - BlogJava-首页技术区
  开始微信公众平台的开发,我们首先要了解微信平台可以帮助我们做哪些事情. 使用您的公众账号登陆http://mp.weixin.qq.com/,选择菜单--高级功能-开发模式--查看文档,即能看到微信公众平台目前所能开发的功能. 接受用户发送给您公众账号的消息. 需要特别说明的是,发送消息和回复消失是一个连贯的过程,只能在一个对话中完成.

微信公众平台接口开发

- - CSDN博客互联网推荐文章
随着微信公众平台的开放,微信营销推广也越发受到重视. 现在企业越来越注重求职者是否拥有“微信公众平台接口开发”的经验. 现在参考资料介绍下微信公众平台接口开发模式:. 首先你得有个微信公众平台账号,注册地址:http://mp.weixin.qq.com/. 开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:.

微信公众平台开发入门

- - Web前端 - ITeye博客
在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序、MySQL数据库、计算机网络通讯、及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务:. 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.

2011年全球开发者最热衷Android开发平台

- Elic - cnBeta.COM
VisionMobile 联合 BlueVia,针对2011年全球开发者进行调查,主题涉及开发者使用平台、App版本数量、发布渠道、收入、盈利模式等方面.

分清“语言/规范”以及“平台/实现”,以及跨平台.NET开发

- 王雪松 - 博客园-老赵点滴 - 追求编程之美
在许多年前,“语言”就等同于“平台”,例如C,C++以及最早的Ruby和Python等等. 但是随着技术发展,出现了一些通用的平台,例如.NET和Java,逐渐这些平台上的语言也越来越多. 再后来,某些语言在不同平台上的实现也越来越多,事情也变得有些复杂. 技术在发展,但是从目前社区的讨论中,我发现许多朋友的观念还没有跟上.