当前想用spring+springmvc+mybatis搭建一个MS系统,刚使用spring+mybatis不久,基本上可以完成想要的功能。
但是在设计entity的时候,对于有外键依赖的entity class,不知道如何设计比较好。
望大牛们指点一下。
以用户表为例, User里面的外键roleId, 在这里到底是用一个Int roleId 还是Role对象呢?
疑惑的地方:
- 在实际使用过程中,在读取User的时候需要同时读取Roled的信息,Role貌似合理
- 但是在插入的时候,仅插入roleId,而DAO层插入参数是User 对象,需要构造一个Role对象并set到User中。。。
数据库表:
CREATE TABLE IF NOT EXISTS `wms`.`wms_user` (
`user_id` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`user_name` VARCHAR(15) NOT NULL DEFAULT '' COMMENT '用户名称',
`user_realname` VARCHAR(40) NOT NULL DEFAULT '' COMMENT '用户真实姓名',
`user_password` VARCHAR(40) NOT NULL DEFAULT '' COMMENT '用户密码',
`user_email` VARCHAR(40) NOT NULL DEFAULT '' COMMENT 'email地址',
`user_role_id` SMALLINT(4) unsigned NOT NULL DEFAULT '0' COMMENT '用户角色',
PRIMARY KEY (`user_id`)
)ENGINE = InnoDB DEFAULT CHARSET=UTF8 COMMENT '用户表';
CREATE TABLE IF NOT EXISTS `WMS`.`wms_role`(
`role_id` INT unsigned NOT NULL AUTO_INCREMENT COMMENT '角色id',
`role_name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '角色名称',
`role_permission` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '角色权限',
PRIMARY KEY (`role_id`)
)ENGINE = InnoDB DEFAULT CHARSET=UTF8 COMMENT '角色信息表';
entity class:
public class User {
private long userId;
private String userName;
private String userRealname;
private String userPassword;
private String userEmail;
private Role role;
}
public class Role {
private int roleId;
private String roleName;
private String rolePermission;
}
Dao:
public interface UserDao {
int insertUser(User user);
int deleteUser(long userId);
int updateUser(User user);
User queryByUserId(long userId);
}