关于java:美容o2o平台项目dao层分析

8次阅读

共计 1397 个字符,预计需要花费 4 分钟才能阅读完成。

美容 o2o 平台我的项目 dao 层剖析

PO-User 类

以用户类进行剖析

@EqualsAndHashCode(callSuper = true)
/*
callSuper = true 是这样的:因为 SysUser 继承了父类 BaseEntity,默认在比拟时是疏忽继承自 BaseEntity 的元素的,加上 callSuper 能够同时比拟父类中的元素
*/
@Data
@Entity
/*
申明此类为一个 PO 实体类,并交由 Spring 治理,如果不加,则会报错 Not a managed type: class com.attack204.test.po.SysUserPo。(会无奈创立 sysUserDao 接口)
*/
@DynamicInsert
/*
如果在插入元素时,有元素没有申明 (例如没有指定 creator),会报错,然而加上此注解之后则会设置为默认值。默认值在 mysql 的创立语句中指定
*/
@DynamicUpdate
/* 这个注解挺有争议的,目前临时还没遇到网上说的笼罩问题,先 mark 一下。目前就了解成除了加快速度没啥用吧 233*/
@Table(name = "tb_sys_user")
/* 设置和哪个表相关联,默认是 SysUser,即类名 */
public class SysUser extends BaseEntity {
    @Id // 设置主键,不然没法查问
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    // 设置减少的策略,这里默认是递增,一共有四种,具体能够百度
    private Long id;

    /**
     * 所属公司、商家
     */
    Long corp;
    /**
     * 用户名
     */
    private String username;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 明码
     */
    private String password;

    /**
     * 状态
     */
    private Integer status;

}

Po-Base 类

@Data
@MappedSuperclass
/* 通知 Spring 这个类并不映射到实体类,然而它的子类会映射到实体类。删掉并不影响程序运行 */
public class BaseEntity {

    private String creator;

    private Long createTime;

    private String updater;

    private Long updateTime;
}

Dao 层

有了 jpa 之后 Dao 层只须要搞一个接口就好

@Repository // 将此 Dao 增加到 Spring 容器中
public interface SysUserDao extends PagingAndSortingRepository<SysUser, Long> {
// 第一个参数是返回的后果类型,个别是实体类,第二个参数是主键类型,个别为 id
//PagingAndSortingRepository 是一个提供了分页和排序的类
    SysUser findSysUserByUsername(String username);

    Page<SysUser> findByUsernameContaining(String username, Pageable pageable);

    List<SysUser> findAllById(Long id);
}

总结

总的来说 dao 层也没啥,绝对于数据库拜访接口,更重要的还是 PO 对象

本文由博客群发一文多发等经营工具平台 OpenWrite 公布

正文完
 0