NG开发平台是一个人使用的JavaWeb开发基础框架
- 该平台可以使用POJO类(自己实现或使用反向工具生成),一次性生成各层代码,只需要通过少量的调整,即可直接使用
- 该平台已经完成了基础的用户-角色-权限控制(借助Shiro),并附带了组织/员工的基本管理
- 该平台放弃了传统的JSP页面,转用HTML+AJAX的方式实现,旨在减少开发人员与美工之间的冲突
- 对组织机构、员工的基本管理
- 对员工账号、角色的基本管理
- 对系统角色、权限的基本管理
- 对用户、角色、权限关系的管理
- 与Shiro框架整合,进行精细化权限控制
- 本框架使用Hibernate注解形式,所以可以手动完成POJO类,或使用反向工具生成
- 为POJO类加入注解
@JsonFilter(包.类名)
,目的是为Json序列化时,动态过滤属性 - 为POJO类属性加入注解
@MetaData(chsName = "xxx")
,目的是在生成页面代码时取得中文属性名 - 示例代码如下(或直接参照
me.lb.model.demo.Foo
)
package me.lb.model.demo;
import java.sql.Timestamp;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import me.lb.support.system.annotation.MetaData;
import org.codehaus.jackson.map.annotate.JsonFilter;
@Entity
@Table(name = "ng_demo_foo")
// 加入该注解,动态过滤属性
@JsonFilter("me.lb.model.demo.Foo")
public class Foo implements java.io.Serializable {
// Fields
private static final long serialVersionUID = -1838970134469714230L;
private Integer id;
@MetaData(chsName = "整型")
private Integer col1;
@MetaData(chsName = "字符串")
private String col2;
// Constructors
/** default constructor */
public Foo() {
}
/** full constructor */
public Foo(Integer col1, String col2) {
this.col1 = col1;
this.col2 = col2;
}
// Property accessors
@Id
@GeneratedValue
@Column(name = "id")
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "col1")
public Integer getCol1() {
return this.col1;
}
public void setCol1(Integer col1) {
this.col1 = col1;
}
@Column(name = "col2")
public String getCol2() {
return this.col2;
}
public void setCol2(String col2) {
this.col2 = col2;
}
}
- 修改数据库配置
src/main/resources/jdbc.properties
,配置数据库参数(暂时只支持MySQL) - 执行数据库生成工具
me.lb.utils.InitDB
(src/test/java下),生成数据表及关联,并初始化数据(可选) - 调整代码生成工具
me.lb.utils.InitCode
(src/test/java下),列出自定义的POJO类所在的文件夹(可以多个) - 注意:
- 初始化数据时,需要先初始化表结构(db_init方法),再初始化数据(data_init方法)
- 在eclipse中,项目依赖的
activiti-modeler
可能与JUnit存在冲突,导致无法正常执行测试用例 - 如果出现冲突,需要通过执行mvn test来执行测试用例(mvn test -Dtest=类名#方法名)
// 如果你的POJO类为me.lb.xxx.Pojo,则xxx就是所指的名称
String[] folders = { "demo1", "demo2" };
- 直接执行
me.lb.utils.InitCode
,即可生成代码(src/test/java下) - 代码生成说明(以POJO类为
me.lb.model.xxx.Pojo
为例)me.lb.dao.xxx.PojoDao
为持久层接口me.lb.dao.xxx.impl.PojoDaoImpl
为持久层实现me.lb.service.xxx.PojoService
为业务层接口me.lb.service.xxx.impl.PojoServiceImpl
为业务层实现me.lb.controller.admin.xxx.PojoController
为控制层src/main/webapp/web/admin/xxx/pojo/list.html
为页面代码src/main/webapp/assets/admin/xxx/pojo/list.js
为JS代码
- 代码生成完毕后,需要手动调整修改如下几处
- 修改
me.lb.dao.xxx.impl.PojoDaoImpl
文件,带参数的pagingQuery
方法(处理分页查询的方法) - 修改
me.lb.controller.admin.xxx.PojoController
文件,edit
方法(处理修改对象的哪些属性) - 修改
src/main/webapp/web/admin/xxx/pojo/list.html
文件,修改对话框的表单控件(参考EasyUI文档) - 其余代码不调整也可使用,但推荐根据情况进行修改(如业务代码、页面等)
- 修改
src/main/webapp/web/admin/common/main.html
文件,加入功能链接../xxx/pojo/list.html
- 需要Maven的支持,并需要计算机联网(下载Jar)
- 推荐使用Eclipse或MyEclipse进行平台的使用
- 如果项目部署路径修改(默认http://localhost/),需要修改`src/main/webapp/assets/common/framework.js`及错误页面