2021SC@SDUSC-SDUDOC-blog07

2021SC@SDUSC
出现了些事故 本周分析项目后端文件夹sdudoc-mbg内的代码

sdudoc-mbg

MBG是Mybatis generator英文的缩写,是根据数据库中的表,反向生成实体类,DAO,Mapper文件的插件
pom.xml:

    <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.7</version>
        </dependency>

项目中结构:
在这里插入图片描述
ds1与ds2完全一致 暂时不知道为什么
更新:ds:data source,两个dataSource,大概是为了分布式
关于repository和DAO:
Repository是对象的仓库,也就是保存对象的地方,可以说是一个OO系统,业务层是围绕活动的对象进行,活动的对象是从仓库中获取的,也是通过交给仓库进行对象长久保管、保存到数据库。而DAO则没有如此OO概念,DAO是Data access Object,DAO中是数据概念。

代码分析

以entity Book为例分析,首先此类继承了Serializable标识接口,定义private static final long serialVersionUID = 1L; 其实也可以不定义这一Id,但是默认的id对class敏感,在反序列化时可能会导致抛出InvalidClassException。

@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改

value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏

class中定义了book下的属性:addtime,author,dynasty…
定义相应的get和set方法,属于常规操作

package cn.edu.sdu.entity.ds1;

import io.swagger.annotations.ApiModelProperty;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

@Entity(name = "ds1Book")
@Table(name = "book")
public class Book implements Serializable {
    @Id
    @ApiModelProperty(value = "添加时间")
    private Date addtime;

    @ApiModelProperty(value = "书籍作者")
    private String bookauthor;

    @ApiModelProperty(value = "朝代")
    private String dynasty;

    @ApiModelProperty(value = "书籍名称")
    private String bookname;

    @ApiModelProperty(value = "成书日期")
    private Date pulishedtime;

    @ApiModelProperty(value = "文章数目")
    private String totalarticle;

    @ApiModelProperty(value = "创建者id")
    private String uid;

    private static final long serialVersionUID = 1L;

    public Date getAddtime() {
        return addtime;
    }

    public void setAddtime(Date addtime) {
        this.addtime = addtime;
    }

    public String getBookauthor() {
        return bookauthor;
    }

    public void setBookauthor(String bookauthor) {
        this.bookauthor = bookauthor == null ? null : bookauthor.trim();
    }

    public String getDynasty() {
        return dynasty;
    }

    public void setDynasty(String dynasty) {
        this.dynasty = dynasty == null ? null : dynasty.trim();
    }

    public String getBookname() {
        return bookname;
    }

    public void setBookname(String bookname) {
        this.bookname = bookname == null ? null : bookname.trim();
    }

    public Date getPulishedtime() {
        return pulishedtime;
    }

    public void setPulishedtime(Date pulishedtime) {
        this.pulishedtime = pulishedtime;
    }

    public String getTotalarticle() {
        return totalarticle;
    }

    public void setTotalarticle(String totalarticle) {
        this.totalarticle = totalarticle == null ? null : totalarticle.trim();
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid == null ? null : uid.trim();
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", addtime=").append(addtime);
        sb.append(", bookauthor=").append(bookauthor);
        sb.append(", dynasty=").append(dynasty);
        sb.append(", bookname=").append(bookname);
        sb.append(", pulishedtime=").append(pulishedtime);
        sb.append(", totalarticle=").append(totalarticle);
        sb.append(", uid=").append(uid);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }

}

totalarticle、uid、dynasty处

 this.uid = uid == null ? null : uid.trim();
 //删除字符串首部和尾部的空格

trim()的处理源码如下:

    public String trim() {
        String ret = isLatin1() ? StringLatin1.trim(value)
                                : StringUTF16.trim(value);
        return ret == null ? this : ret;
    }

经常与toString一起使用(可以取出用户不规范输入的空格),如

String text = t.getText().toString().trim();

最终要以所形成book的一串文本存入数据库,string的生成:

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        /*   
       
     * Constructs a string builder with no characters in it and an
     * initial capacity of 16 characters.

   		 	@HotSpotIntrinsicCandidate
    		public StringBuilder() {
       		 super(16);
    }
        */
        
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", addtime=").append(addtime);
        sb.append(", bookauthor=").append(bookauthor);
        sb.append(", dynasty=").append(dynasty);
        sb.append(", bookname=").append(bookname);
        sb.append(", pulishedtime=").append(pulishedtime);
        sb.append(", totalarticle=").append(totalarticle);
        sb.append(", uid=").append(uid);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }

其他实体逻辑与book同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chi Z犬里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值