日期:2014-05-16 浏览次数:20410 次
?
?
后台的结构图如下:
?

?
这里是模仿了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: