日期:2014-05-16  浏览次数:20328 次

Nutz+ExtJS示例教程——后台Service实现

?

?

后台的结构图如下:

?

?

这里是模仿了SSH的组织方式,因为毕竟大部分是学SSH过来的(ME也是其中之一),变化太大可能会有理解上的困难。

?

这里的Dao层被去掉了,因为Nutz本身提供的NutzDao就提供了基本的增删改查操作,因此这层可以去掉了,直接并入到Service层中。

?

接下来,先写model层,就是对于数据库表的JavaBean

详细步骤请参照Nutz?的文档Dao手册这部分:http://code.google.com/p/nutz/wiki/dao_hello

?

以User举例,其他模块类似

?

User类:

?

package org.nutz.demo.model;

import java.util.List;

import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.Many;
import org.nutz.dao.entity.annotation.Table;

/**
 * 用户。
 * 
 * @author pangwu86@gmail.com
 * 
 */
@Table("t_user")
public class User extends Identity {

	@Column()
	private String userName;

	@Column()
	private String password;

	@Column()
	private String userType;

	@Many(target = ContactType.class, field = "userId")
	private List<ContactType> contactTypes;

	@Many(target = Contact.class, field = "userId")
	private List<Contact> contacts;

	@Many(target = Blog.class, field = "userId")
	private List<Blog> blogs;

	//  这里省略了get与set

}

?

要注意的是,不要忘了加Nutz的注释,同时如果字段与表中列名称有出入的话,要写入@Column("表列名")中,替换掉默认值。

?

下面开始写Service层共通的类,所有的Service都要继承这个基类,就可以实现增删改查的操作了。

?

这里对于增删改三项(查询操作的返回值就是查询的结果集,没有封装的必要)操作的返回值,做了一个简单的封装,其中包含了一部分业务信息,用一个枚举类型代替默认的返回值。

?

DbOperationResultEnum :

package org.nutz.demo.util.database;

/**
 * 封装了各种数据库操作结果。
 * 
 * @author pangwu86@gmail.com
 * 
 */
public enum DbOperationResultEnum {

	OPERATION_SUCCESS(true, "操作成功。"),

	OPERATION_FAILURE(false, "操作失败。"),

	INSERT_SUCCESS(true, "插入成功。"),

	INSERT_FAILURE(false, "插入失败。"),

	UPDATE_SUCCESS(true, "更新成功。"),

	UPDATE_FAILURE(false, "更新失败。"),

	DELETE_SUCCESS(true, "删除成功。"),

	DELETE_FAILURE(false, "删除失败,数据可能被引用,请先删引用关系。"),

	CLEAR_SUCCESS(true, "批量删除成功。"),

	CLEAR_FAILURE(false, "批量删除失败,数据可能被引用,请先删引用关系。");

	private boolean success;

	private String msg;

	private DbOperationResultEnum(boolean success, String msg) {
		this.success = success;
		this.msg = msg;
	}

	public boolean isSuccess() {
		return success;
	}

	public String getMsg() {
		return msg;
	}
}
?

BaseService: