Mybatis小练习

建表语句

CREATE TABLE category(
  cid VARCHAR(32) PRIMARY KEY,
  cname VARCHAR(50),
  parent_id VARCHAR(32),
  `desc` VARCHAR(100)
);
INSERT INTO category(cid,cname,parent_id,`desc`) VALUES('c100','童书','0','一级分类');
INSERT INTO category(cid,cname,parent_id,`desc`) VALUES('c200','电子书','0','一级分类');

INSERT INTO category(cid,cname,parent_id,`desc`) VALUES('c101','中国儿童文学','c100','二级分类');
INSERT INTO category(cid,cname,parent_id,`desc`) VALUES('c102','婴儿读物','c100','二级分类');

INSERT INTO category(cid,cname,parent_id,`desc`) VALUES('c201','武侠小说','c200','二级分类');
INSERT INTO category(cid,cname,parent_id,`desc`) VALUES('c202','侦探推理','c200','二级分类');


CREATE TABLE book(
  bid VARCHAR(32) PRIMARY KEY,
  title VARCHAR(50),
  price DOUBLE(6,2),
  author VARCHAR(50),
  cid VARCHAR(32)
);

INSERT INTO book(bid,title,price,author,cid) VALUES('b001','学会管自己(歪歪兔独立成长童话)',64.00,'陈梦敏','c101');
INSERT INTO book(bid,title,price,author,cid) VALUES('b002','写给儿童的中国历史',177.50,'陈卫平','c101');

INSERT INTO book(bid,title,price,author,cid) VALUES('b003','小鸡球球触感玩具书',125.00,'[日]入山智','c102');

INSERT INTO book(bid,title,price,author,cid) VALUES('b004','天龙八部',12.00,'金庸','c201');
INSERT INTO book(bid,title,price,author,cid) VALUES('b005','朱贞木短篇小说集(全套装共8册)',103,'朱贞木','c201');
INSERT INTO book(bid,title,price,author,cid) VALUES('b006','笑傲江湖(新修版)一',1200,'金庸','c201');


INSERT INTO book(bid,title,price,author,cid) VALUES('b007','解忧杂货店',19.99,'(日)东野圭吾','c202');
INSERT INTO book(bid,title,price,author,cid) VALUES('b008','三口棺材',8.99,'(美)约翰·迪克森·卡尔','c202');

实现功能

查询一级分类,同时查询二级分类,以及查询二级分类下的所有图书

代码实现

domain

@Entity(name = "book")
public class Book {
    @Id
    private String bid;
    private String title;
    private Double price;
    private String author;
    private String cid;

@Override
public String toString() {
    return "Book{" +
            "bid='" + bid + '\'' +
            ", title='" + title + '\'' +
            ", price=" + price +
            ", author='" + author + '\'' +
            ", cid='" + cid + '\'' +
            '}';
}

public Book(String bid, String title, Double price, String author, String cid) {
    this.bid = bid;
    this.title = title;
    this.price = price;
    this.author = author;
    this.cid = cid;
}

public Book() {
}

public String getBid() {
    return bid;
}

public void setBid(String bid) {
    this.bid = bid;
}

public String getTitle() {
    return title;
}

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

public Double getPrice() {
    return price;
}

public void setPrice(Double price) {
    this.price = price;
}

public String getAuthor() {
    return author;
}

public void setAuthor(String author) {
    this.author = author;
}

public String getCid() {
    return cid;
}

public void setCid(String cid) {
    this.cid = cid;
}

}

@Entity(name = "category")
public class Category {
    @Id
    private String cid;
    private String cname;
    private String parent_id;
    private String desc;
    //一对多
    private ArrayList<Category> categoriesList =new ArrayList<>();
    private ArrayList<Book> booksList =new ArrayList<>();


@Override
public String toString() {
    return "Category{" +
            "cid='" + cid + '\'' +
            ", cname='" + cname + '\'' +
            ", parent_id='" + parent_id + '\'' +
            ", desc='" + desc + '\'' +
            ", categoriesList=" + categoriesList +
            ", booksList=" + booksList +
            '}';
}

public Category(String cid, String cname, String parent_id, String desc) {
    this.cid = cid;
    this.cname = cname;
    this.parent_id = parent_id;
    this.desc = desc;
}

public ArrayList<Category> getCategoriesList() {
    return categoriesList;
}

public void setCategoriesList(ArrayList<Category> categoriesList) {
    this.categoriesList = categoriesList;
}

public ArrayList<Book> getBooksList() {
    return booksList;
}

public void setBooksList(ArrayList<Book> booksList) {
    this.booksList = booksList;
}

public Category() {
}

public String getCid() {
    return cid;
}

public void setCid(String cid) {
    this.cid = cid;
}

public String getCname() {
    return cname;
}

public void setCname(String cname) {
    this.cname = cname;
}

public String getParent_id() {
    return parent_id;
}

public void setParent_id(String parent_id) {
    this.parent_id = parent_id;
}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

}

mapper

BookMapper

public interface BookMapper {
public Book book(@Param("cid")String cid);
}

BookMapper.xml

<mapper namespace="com.itcast.mapper.BookMapper">
<select id="book" parameterType="String" resultType="com.itcast.domain.Book">
    select * from book where cid=#{cid}
</select>
</mapper>

Category

public interface CategoryMapper {
    public List<Category>SelectById2(@Param("cid")String cid);
    public List<Category>SelectById(@Param("cid")String cid);
    public List<Category> SelectAll();
}

Category.xml

<mapper namespace="com.itcast.mapper.CategoryMapper">
    <resultMap id="SelectById2" type="com.itcast.domain.Category">
        <id property="cid" column="cid"></id>
        <collection property="booksList" column="cid" select="com.itcast.mapper.BookMapper.book"></collection>
    </resultMap>


    <select id="SelectById" parameterType="String" resultType="com.itcast.domain.Category" resultMap="SelectById2">
        select * from category as c where c.parent_id=#{cid}
    </select>
    <resultMap id="d1" type="com.itcast.domain.Category">
        <id property="cid" column="cid"></id>
        <collection property="categoriesList" column="cid"
                    select="com.itcast.mapper.CategoryMapper.SelectById"></collection>
    </resultMap>
    <select id="SelectAll" resultType="com.itcast.domain.Category" resultMap="d1">
                    select * from category as c1 where c1.parent_id='0'
    </select>

</mapper>

Main

public static void main(String[] args) {
    CategoryMapper categoryMapper = MyBatisUtils.getMapper(CategoryMapper.class);
    List<Category> list = categoryMapper.SelectAll();
    list.forEach(System.out::println);
}
总结:一级和二级自表关联  简称套娃

Supongo que te gusta

Origin blog.csdn.net/qq_45769990/article/details/120586357
Recomendado
Clasificación