通常情况下生成代码的步骤是,先创建表,再通过表创建数据库。但有时候需要根据视图来生成代码。
具体步骤:
- 创建同视图相同结构的实体表
- 根据实体表生成代码
- 修改代码中读取的表名为视图名
1、创建基础表
将视图中需要的字段,创建为一个表。
2、生成代码
在生成代码时选择刚才创建的表。
3、表实体中增加表属性
因此表中只创始了基础字段,并没有默认的字段,像:软删除、添加人、创建人等。
如,在 EmployeeExpiringDO.java 文件中:
- 修改读取的表名 @TableName
- 主键自增 @KeySequence
- 使用 @TableField(exist = false) 来标记这些字段表中不存在
- 默认字段,可以在 BaseDO 中找到
package cn.iocoder.yudao.module.system.dal.dataobject.employeeexpiring; import lombok.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import org.apache.ibatis.type.JdbcType; /** * 承包商人员再教育 DO * * @author wangyouworld */ @TableName("view_contractor_employee_expiring") @KeySequence("view_contractor_employee_expiring_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor public class EmployeeExpiringDO extends BaseDO { /** * ID */ @TableId private Long id; /** * 类型 */ private String type; /** * 人员编号 */ private String staffCode; /** * 所属部门 */ private Long deptId; /** * 所属承包商 */ private String contrCode; /** * 过期时间 */ private LocalDate endDate; /** * 创建时间 */ @TableField(exist = false) private LocalDateTime createTime; /** * 最后更新时间 */ @TableField(exist = false) private LocalDateTime updateTime; /** * 创建者,目前使用 SysUser 的 id 编号 * <p> * 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。 */ @TableField(exist = false) private String creator; /** * 更新者,目前使用 SysUser 的 id 编号 * <p> * 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。 */ @TableField(exist = false) private String updater; /** * 是否删除 */ @TableField(exist = false) private Boolean deleted; }