• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

nature-demo: nature-demo是一个基于nature-framework开发的简单示例,包括mvc三层的 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

nature-demo是一个基于nature-framework开发的简单示例,包括mvc三层的应用,涉及到请求路径,服务类的注入,声明式事物和事务隔离级别的用法,数据源的简单配置,数据查询缓存,拦截器(支持全局拦截器,类拦截器,方法拦截器)的使用,国际化的实现,freemarker和jsp的使用,表单防止重复提交等简单示例。框架地址:http://git.oschina.net/mvilplss/nature-framework框架当前支持servlet3.0规范,建议使用jdk8.0和tomcat8.0或更高版本。输入http://ip:port/nature-demo进入主页实体类

/** * 用户类 *  * 1、实体类,无需GET/SET方法,只需声明数据库字段的名称<p> * 2、使用注解控制指定主键@id,支持ADDSELF(数据库自增长)、UUID(框架维护)、ASSIGN(程序员指定id)<p> * 3、@Type:按照JAVA语言的基本类型进行设定,无需考虑数据库的字段,还支持默认值,长度设定等,简单快捷<p> */@Table(name = "tb_user")public class User extends NatureMap {	private static final long serialVersionUID = 1L;		@Id(strategy = Strategy.ADDSELF)	@Type(type = Types.INT,length = "16")	public String id = "id";	@Type(type = Types.INT)	public String age = "age";	@Type(def = "女")	public String sex = "sex";	public String name = "name";		@Type(type=Types.DOUBLE,length="10,2",def="1000")	public String balance = "balance";		@Type(length="300")	public String address = "address";}

控制类

/** * 用户控制层 *  * 1、创建控制层继承NatureCtrl类并增加@Ctrl注解即可<p> * 2、类@Ctrl的namespace是控制层的命名空间,所有本控制层的请求都要通过namespace<p> * 3、属性@Inject注解是注入Service实例<p> * 4、方法@Ask注解是对方法的映射,如果不写url则默认映射为方法名;与namespace共同组成请求路径/namespace/list<p> * 5、返回支持直接返回页面"xxx.jsp",返回方法"xxx",返回JSON数据 JsonData,返回下载文件FileData等,绝对的简单快捷<p> * 6、在控制层需要页面传值的只需声明public类型变量即可,无需冗长的GET/SET<p> * 7、如需上传文件,控制层直接声明File类型变量即可,支持多文件集合上传,就像接受普通变量一样简单<p> *  */@SuppressWarnings("serial")@Interceptors({UserInterceptor.class})//非必需@Ctrl(namespace="/user")public class UserCtrl extends NatureCtrl{	public User user=new User();//可以不new,如果new的话会防止控制针并提高项目效率	public File myfile;//文件接收	public ArrayList<File> files = new ArrayList<File>();//多文件接收。前台只需input的name为files[0...]	public String action;		@Inject	protected UserService userService;			@Ask(url="/list")	public Object list(){		page = userService.page(page);		return "list.ftl";	}		@Ask	public Object toOper(){		if (user.getInt(user.id)!=0) {			userService.byId(user);			action = "update";		}else{			action = "insert";		}		return "oper.ftl";	}	@Ask	@Redirect	public Object insert(){		userService.insert(user,"user_cache");		return "list";	}		@Ask	@Redirect	public Object update(){		userService.update(user,"user_cache");		return "list";	}		@Ask	@Redirect	public Object delete(){		userService.delete(user,"user_cache");		return "list";	}		@Ask	public Object getJson(){		return new JsonData(userService.byId(user));	}	        //文件下载示例,就是这么简单	@Ask	public Object getFile(){		InputStream inputStream =this.getClass().getResourceAsStream("文件.docx");		return new FileData(inputStream, "文件.docx", FileData.docx);	}	}

服务类

/** * 用户服务类 *  * 1、服务类,为了开发简单可以继承框架中的NatureService(非必需),添加@Service注解即可<p> * 2、事物控制可以通过@Tx进行极速实现<p> * 3、如果某些业务多读少写则建议使用缓存,使用方法只需传入缓存名称即可,如果缓存有配置则使用,否则使用默认配置。 * 4、所有业务逻辑建议放在Service层<p> */@Servicepublic class UserService extends NatureService {		public Page page(Page page) {		String sql = "select id,name,sex,age from tb_user where 1=1 order by id desc";		return DatabaseHelper.query(page, sql,"user_cache");	}	@Tx(level=Connection.TRANSACTION_READ_COMMITTED)	public int delete(NatureMap natureMap) {		return super.delete(natureMap,"user_cache");	}	}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap