java-blog

Blog

@Entity
@Table(name = “t_blog”)
public class Blog {

@Id
@GeneratedValue
private Long id;

private String title;

@Basic(fetch = FetchType.LAZY)
@Lob
private String content;
private String firstPicture;
private String flag;
private Integer views;
private boolean appreciation;
private boolean shareStatement;
private boolean commentabled;
private boolean published;
private boolean recommend;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;

@ManyToOne
private Type type;

@ManyToMany(cascade = {CascadeType.PERSIST})
private List<Tag> tags = new ArrayList<>();


@ManyToOne
private User user;

@OneToMany(mappedBy = "blog")
private List<Comment> comments = new ArrayList<>();

@Transient
private String tagIds;

private String description;

public Blog() {
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getContent() {
    return content;
}

public void setContent(String content) {
    this.content = content;
}

public String getFirstPicture() {
    return firstPicture;
}

public void setFirstPicture(String firstPicture) {
    this.firstPicture = firstPicture;
}

public String getFlag() {
    return flag;
}

public void setFlag(String flag) {
    this.flag = flag;
}

public Integer getViews() {
    return views;
}

public void setViews(Integer views) {
    this.views = views;
}

public boolean isAppreciation() {
    return appreciation;
}

public void setAppreciation(boolean appreciation) {
    this.appreciation = appreciation;
}

public boolean isShareStatement() {
    return shareStatement;
}

public void setShareStatement(boolean shareStatement) {
    this.shareStatement = shareStatement;
}

public boolean isCommentabled() {
    return commentabled;
}

public void setCommentabled(boolean commentabled) {
    this.commentabled = commentabled;
}

public boolean isPublished() {
    return published;
}

public void setPublished(boolean published) {
    this.published = published;
}

public boolean isRecommend() {
    return recommend;
}

public void setRecommend(boolean recommend) {
    this.recommend = recommend;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getUpdateTime() {
    return updateTime;
}

public void setUpdateTime(Date updateTime) {
    this.updateTime = updateTime;
}

public Type getType() {
    return type;
}

public void setType(Type type) {
    this.type = type;
}

public List<Tag> getTags() {
    return tags;
}

public void setTags(List<Tag> tags) {
    this.tags = tags;
}


public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}


public List<Comment> getComments() {
    return comments;
}

public void setComments(List<Comment> comments) {
    this.comments = comments;
}


public String getTagIds() {
    return tagIds;
}

public void setTagIds(String tagIds) {
    this.tagIds = tagIds;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public void init() {
    this.tagIds = tagsToIds(this.getTags());
}

//1,2,3
private String tagsToIds(List<Tag> tags) {
    if (!tags.isEmpty()) {
        StringBuffer ids = new StringBuffer();
        boolean flag = false;
        for (Tag tag : tags) {
            if (flag) {
                ids.append(",");
            } else {
                flag = true;
            }
            ids.append(tag.getId());
        }
        return ids.toString();
    } else {
        return tagIds;
    }
}


@Override
public String toString() {
    return "Blog{" +
            "id=" + id +
            ", title='" + title + '\'' +
            ", content='" + content + '\'' +
            ", firstPicture='" + firstPicture + '\'' +
            ", flag='" + flag + '\'' +
            ", views=" + views +
            ", appreciation=" + appreciation +
            ", shareStatement=" + shareStatement +
            ", commentabled=" + commentabled +
            ", published=" + published +
            ", recommend=" + recommend +
            ", createTime=" + createTime +
            ", updateTime=" + updateTime +
            ", type=" + type +
            ", tags=" + tags +
            ", user=" + user +
            ", comments=" + comments +
            ", tagIds='" + tagIds + '\'' +
            ", description='" + description + '\'' +
            '}';
}

public void initTags(Long id) {
    //3,4,5
    List<Tag> tags = this.getTags();
    StringBuffer ids=new StringBuffer();
    if(!tags.isEmpty()){
        Boolean flag=false;
        for(Tag t:tags){
            if(flag){
                ids.append(t.getId());
                flag=true;
            }else {
                ids.append(",");
                ids.append(t.getId());
            }

        }
        this.setTagIds(ids.toString());
    }

}

}

comment

@Entity
@Table(name = “t_comment”)
public class Comment {

@Id
@GeneratedValue
private Long id;
private String nickname;
private String email;
private String content;
private String avatar;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;

@ManyToOne
private Blog blog;

@OneToMany(mappedBy = "parentComment")
private List<Comment> replyComments = new ArrayList<>();

@ManyToOne
private Comment parentComment;

public Comment() {
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getNickname() {
    return nickname;
}

public void setNickname(String nickname) {
    this.nickname = nickname;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getContent() {
    return content;
}

public void setContent(String content) {
    this.content = content;
}

public String getAvatar() {
    return avatar;
}

public void setAvatar(String avatar) {
    this.avatar = avatar;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Blog getBlog() {
    return blog;
}

public void setBlog(Blog blog) {
    this.blog = blog;
}

public List<Comment> getReplyComments() {
    return replyComments;
}

public void setReplyComments(List<Comment> replyComments) {
    this.replyComments = replyComments;
}

public Comment getParentComment() {
    return parentComment;
}

public void setParentComment(Comment parentComment) {
    this.parentComment = parentComment;
}

@Override
public String toString() {
    return "Comment{" +
            "id=" + id +
            ", nickname='" + nickname + '\'' +
            ", email='" + email + '\'' +
            ", content='" + content + '\'' +
            ", avatar='" + avatar + '\'' +
            ", createTime=" + createTime +
            '}';
}

}

tag

@Entity
@Table(name = “t_tag”)
public class Tag {

@Id
@GeneratedValue
private Long id;
private String name;

@ManyToMany(mappedBy = "tags")
private List<Blog> blogs = new ArrayList<>();

public Tag() {
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public List<Blog> getBlogs() {
    return blogs;
}

public void setBlogs(List<Blog> blogs) {
    this.blogs = blogs;
}

@Override
public String toString() {
    return "Tag{" +
            "id=" + id +
            ", name='" + name + '\'' +
            '}';
}

}

type

@Entity
@Table(name = “t_type”)
public class Type {

@Id
@GeneratedValue
private Long id;

private String name;

@OneToMany(mappedBy = "type")
private List<Blog> blogs = new ArrayList<>();

public Type() {
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public List<Blog> getBlogs() {
    return blogs;
}

public void setBlogs(List<Blog> blogs) {
    this.blogs = blogs;
}

@Override
public String toString() {
    return "Type{" +
            "id=" + id +
            ", name='" + name + '\'' +
            '}';
}

}

User

@Entity
@Table(name = “t_user”)
public class User {

@Id
@GeneratedValue
private Long id;
private String nickname;
private String username;
private String password;
private String email;
private String avatar;
private Integer type;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;

@OneToMany(mappedBy = "user")
private List<Blog> blogs = new ArrayList<>();

public User() {
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getNickname() {
    return nickname;
}

public void setNickname(String nickname) {
    this.nickname = nickname;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getAvatar() {
    return avatar;
}

public void setAvatar(String avatar) {
    this.avatar = avatar;
}

public Integer getType() {
    return type;
}

public void setType(Integer type) {
    this.type = type;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getUpdateTime() {
    return updateTime;
}

public void setUpdateTime(Date updateTime) {
    this.updateTime = updateTime;
}


public List<Blog> getBlogs() {
    return blogs;
}

public void setBlogs(List<Blog> blogs) {
    this.blogs = blogs;
}

@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", nickname='" + nickname + '\'' +
            ", username='" + username + '\'' +
            ", password='" + password + '\'' +
            ", email='" + email + '\'' +
            ", avatar='" + avatar + '\'' +
            ", type=" + type +
            ", createTime=" + createTime +
            ", updateTime=" + updateTime +
            '}';
}

}

fragment

<th:block th:fragment=“script”>

</th:block>

blog

clear
      </div>
      <div class="field">
        <div class="ui checkbox">
          <input type="checkbox" id="recommend" name="recommend">
          <label for="recommend">推荐</label>
        </div>
      </div>
      <div class="field">
        <button  type="button" id="search-btn" class="ui mini teal basic button"><i class="search icon"></i>搜索</button>
      </div>
    </div>
  </div>
  <div id="table-container">
    <table th:fragment="blogList" class="ui compact teal table">
      <thead>
      <tr>
        <th></th>
        <th>标题</th>
        <th>类型</th>
        <th>推荐</th>
        <th>状态</th>
        <th>更新时间</th>
        <th>操作</th>
      </tr>
      </thead>
      <tbody>
      <tr th:each="blog,iterStat : ${page.content}">
        <td th:text="${iterStat.count}">1</td>
        <td th:text="${blog.title}">刻意练习清单</td>
        <td th:text="${blog.type.name}">认知升级</td>
        <td th:text="${blog.recommend} ? '是':'否'">是</td>
        <td th:text="${blog.published} ? '发布':'草稿'">草稿</td>
        <td th:text="${blog.updateTime}">2017-10-02 09:45</td>
        <td>
          <a href="#" th:href="@{/admin/blogs/{id}/toUpdate(id=${blog.id})}" class="ui mini teal basic button">编辑</a>
          <a href="#" th:href="@{/admin/blogs/{id}/delete(id=${blog.id})}" class="ui mini red basic button">删除</a>
        </td>
      </tr>
      </tbody>
      <tfoot>
      <tr>
        <th colspan="7">
          <div class="ui mini pagination menu" th:if="${page.totalPages}>1" >
            <a onclick="page(this)" th:attr="data-page=${page.number}-1" class="item" th:unless="${page.first}">上一页</a>
            <a onclick="page(this)" th:attr="data-page=${page.number}+1" class=" item" th:unless="${page.last}">下一页</a>
          </div>
          <a href="#" th:href="@{/admin/blogs/input}" class="ui mini right floated teal basic button">新增</a>
        </th>
      </tr>
      </tfoot>
    </table>

    <div class="ui success message" th:unless="${#strings.isEmpty(message)}">
      <i class="close icon"></i>
      <div class="header">提示:</div>
      <p th:text="${message}">恭喜,操作成功!</p>
    </div>

  </div>

</div>


blog-imput

    <div class="required field">
      <div id="md-content" style="z-index: 1 !important;">
        <textarea placeholder="博客内容" name="content" style="display: none" th:text="*{content}"></textarea>
      </div>
    </div>

    <div class="two fields">
      <div class="required field">
        <div class="ui left labeled action input">
          <label class="ui compact teal basic label">分类</label>
          <div class="ui fluid selection dropdown">
            <input type="hidden" name="type.id" th:value="*{type}!=null ? *{type.id}">
            <i class="dropdown icon"></i>
            <div class="default text">分类</div>
            <div class="menu">
              <div th:each="type : ${types}" class="item" data-value="1" th:data-value="${type.id}" th:text="${type.name}">错误日志</div>
            </div>
          </div>
        </div>
      </div>
      <div class=" field">
        <div class="ui left labeled action input">
          <label class="ui compact teal basic label">标签</label>
          <div class="ui fluid selection multiple search  dropdown">
            <input type="hidden" name="tagIds" th:value="*{tagIds}" >
            <i class="dropdown icon"></i>
            <div class="default text">标签</div>
            <div class="menu">
              <div th:each="tag : ${tags}" class="item" data-value="1" th:data-value="${tag.id}" th:text="${tag.name}">java</div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="required field">
      <div class="ui left labeled input">
        <label class="ui teal basic label">首图</label>
        <input type="text" name="firstPicture" th:value="*{firstPicture}" placeholder="首图引用地址">
      </div>
    </div>

    <div class="required field">
      <textarea name="description" th:text="*{description}" placeholder="博客描述..." maxlength="200"></textarea>
    </div>

    <div class="inline fields">
      <div class="field">
        <div class="ui checkbox">
          <input type="checkbox" id="recommend" name="recommend" checked th:checked="*{recommend}" class="hidden">
          <label for="recommend">推荐</label>
        </div>
      </div>
      <div class="field">
        <div class="ui checkbox">
          <input type="checkbox" id="shareStatement" name="shareStatement" th:checked="*{shareStatement}" class="hidden">
          <label for="shareStatement">转载声明</label>
        </div>
      </div>
      <div class="field">
        <div class="ui checkbox">
          <input type="checkbox" id="appreciation" name="appreciation" th:checked="*{appreciation}" class="hidden">
          <label for="appreciation">赞赏</label>
        </div>
      </div>
      <div class="field">
        <div class="ui checkbox">
          <input type="checkbox" id="commentabled" name="commentabled" th:checked="*{commentabled}" class="hidden">
          <label for="commentabled">评论</label>
        </div>
      </div>
    </div>

    <div class="ui error message"></div>

    <div class="ui right aligned container">
      <button type="button" class="ui button" onclick="window.history.go(-1)" >返回</button>
      <button type="button" id="save-btn" class="ui secondary button">保存</button>
      <button type="button" id="publish-btn" class="ui teal button">发布</button>
    </div>

  </form>
</div>


index

Hi,

hualili,欢迎登录!

  <img src="https://unsplash.it/1000/400?image=1005" alt="" class="ui rounded bordered fluid image">
</div>


login

管理后台登录

登 录
       <div class="ui error mini message"></div>
       <div class="ui mini negative message" th:unless="${#strings.isEmpty(message)}" th:text="${message}">111</div>

     </form>

   </div>
 </div>

<th:block th:fragment=“script”>

</th:block>

tags

提示:

恭喜,操作成功!

名称操作
1刻意练习清单 编辑 删除
新增


tag-input

    <div class="ui error message"></div>

    <div class="ui right aligned container">
      <button type="button" class="ui button" onclick="window.history.go(-1)" >返回</button>
      <button class="ui teal submit button">提交</button>
    </div>

  </form>
</div>








types

提示:

恭喜,操作成功!

名称操作
1刻意练习清单 编辑 删除
新增


type-input

    <div class="ui error message"></div>
    <div class="ui right aligned container">
      <button type="button" class="ui button" onclick="window.history.go(-1)" >返回</button>
      <button class="ui teal submit button">提交</button>
    </div>

  </form>
</div>








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值