日期:2014-05-16 浏览次数:20344 次
?
?
后台的结构图如下:
?
?
这里是模仿了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: