Coder Social home page Coder Social logo

yhjohn163 / springblade Goto Github PK

View Code? Open in Web Editor NEW

This project forked from qzw1210/springblade

0.0 2.0 0.0 5.3 MB

基础权限,日志管理框架,Spring Framework+Apache Shiro+Spring MVC +Blade Validator +Spring Task

License: Apache License 2.0

Java 12.79% HTML 2.60% CSS 25.42% JavaScript 59.18%

springblade's Introduction

#Spring-Blade java开发平台

平台简介

Spring-Blade是基于多个优秀的开源项目,高度整合封装而成的快速开发平台。 PS:因为喜欢刀锋战士所以取名了SpringBlade,当中有一个类也命名为Blade。 但是后来发现已经有了一个高人气的开源作品:Blade,作者是 王爵。感觉很巧合,所以在这儿声明一下。

鸣谢

1.JFinal 2.eova 3.hutool 4.beetl 4.beetlsql 5.dreamlu 6.kisso

内置功能

  1. 用户管理
  2. 角色管理
  3. 菜单管理
  4. 字典管理
  5. 部门管理
  6. 附件管理
  7. 参数管理
  8. 连接池监视
  9. 日志管理

技术选型

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

后台界面

后台界面 后台界面 后台界面 后台界面 后台界面 后台界面

代码示例

实体类

@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
	@SeqID(name = "SEQ_NOTICE")
	public String getId() {
		return id;
	}

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

新增

	@ResponseBody
	@RequestMapping(KEY_SAVE)
	public AjaxResult save() {
		Notice notice = mapping(PERFIX, 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(PERFIX, 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查询,返回map

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

自定义sql查询,返回String(使用多数据源)

	String editor = Db.init("otherDb").queryStr("select editor form news where newsId = #{newsId}", Paras.create().set("newsId", 123));

根据md文件的sql执行修改

	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(PERFIX, 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", Func.getDictName(102, map.get("creater")));
				}
			}
		});
		
		return grid;
	}

注:

欢迎提出更好的意见,大家共同进步
SpringBlade主要用于交流学习,开源协议署名为smallchill的代码也可以进行商用。
但是如果因为商业用途引起的纠纷和造成的一切后果请自行承担,谢谢。
登陆名密码:两个 admin

springblade's People

Contributors

qzw1210 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.