Browse Source

添加 book dao mapper示例

lijinjin 3 năm trước cách đây
mục cha
commit
18fe911dea

+ 1414 - 0
book-server/src/main/java/com/book/server/dao/entity/Book.java

@@ -0,0 +1,1414 @@
+package com.book.server.dao.entity;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import lombok.Data;
+
+@Data
+public class Book implements Serializable {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.id
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Long id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.is_audio
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Byte isAudio;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.book_category_id
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer bookCategoryId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.name
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String name;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.realname
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String realname;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.title
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String title;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.author
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String author;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.image
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String image;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.big_cover
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String bigCover;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.small_cover
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String smallCover;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.description
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String description;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.idx
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer idx;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.referral_num
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Byte referralNum;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.idxx
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer idxx;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.state
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String state;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.free_stime
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer freeStime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.free_etime
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer freeEtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.sex
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String sex;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.billing_type
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String billingType;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.price
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer price;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.app_price
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer appPrice;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.is_finish
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String isFinish;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.free_chapter_num
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer freeChapterNum;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.word_count
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String wordCount;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.chapter_num
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer chapterNum;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.first_chapter_id
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Long firstChapterId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.first_chapter_name
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String firstChapterName;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.last_chapter_id
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Long lastChapterId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.last_chapter_name
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String lastChapterName;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.last_chapter_utime
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer lastChapterUtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.read_num
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer readNum;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.article_chapter_order
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer articleChapterOrder;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.attent_chapter_order
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer attentChapterOrder;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.corner_mark
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String cornerMark;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.recommand_book_id
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Long recommandBookId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.createtime
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer createtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.updatetime
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer updatetime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.keywords
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String keywords;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.cansee
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String cansee;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.rank
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Byte rank;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.check_rank
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Byte checkRank;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.check_remark
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String checkRemark;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.editor_recommand
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String editorRecommand;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.book_tags
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String bookTags;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.a
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Byte a;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.expire_time
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer expireTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.cp_id
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Integer cpId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.cp_name
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String cpName;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.tags
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private String tags;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.classify_white_list
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Byte classifyWhiteList;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column book.put_ad_set
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private Byte putAdSet;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public static Book.Builder builder() {
+        return new Book.Builder();
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public static class Builder {
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        private Book obj;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder() {
+            this.obj = new Book();
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.id
+         *
+         * @param id the value for book.id
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder id(Long id) {
+            obj.setId(id);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.idx
+         *
+         * @param idx the value for book.idx
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder idx(Integer idx) {
+            obj.setIdx(idx);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.idxx
+         *
+         * @param idxx the value for book.idxx
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder idxx(Integer idxx) {
+            obj.setIdxx(idxx);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.is_audio
+         *
+         * @param isAudio the value for book.is_audio
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder isAudio(Byte isAudio) {
+            obj.setIsAudio(isAudio);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.book_category_id
+         *
+         * @param bookCategoryId the value for book.book_category_id
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder bookCategoryId(Integer bookCategoryId) {
+            obj.setBookCategoryId(bookCategoryId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.name
+         *
+         * @param name the value for book.name
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder name(String name) {
+            obj.setName(name);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.realname
+         *
+         * @param realname the value for book.realname
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder realname(String realname) {
+            obj.setRealname(realname);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.title
+         *
+         * @param title the value for book.title
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder title(String title) {
+            obj.setTitle(title);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.a
+         *
+         * @param a the value for book.a
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder a(Byte a) {
+            obj.setA(a);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.author
+         *
+         * @param author the value for book.author
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder author(String author) {
+            obj.setAuthor(author);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.image
+         *
+         * @param image the value for book.image
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder image(String image) {
+            obj.setImage(image);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.big_cover
+         *
+         * @param bigCover the value for book.big_cover
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder bigCover(String bigCover) {
+            obj.setBigCover(bigCover);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.small_cover
+         *
+         * @param smallCover the value for book.small_cover
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder smallCover(String smallCover) {
+            obj.setSmallCover(smallCover);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.description
+         *
+         * @param description the value for book.description
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder description(String description) {
+            obj.setDescription(description);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.referral_num
+         *
+         * @param referralNum the value for book.referral_num
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder referralNum(Byte referralNum) {
+            obj.setReferralNum(referralNum);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.state
+         *
+         * @param state the value for book.state
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder state(String state) {
+            obj.setState(state);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.free_stime
+         *
+         * @param freeStime the value for book.free_stime
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder freeStime(Integer freeStime) {
+            obj.setFreeStime(freeStime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.free_etime
+         *
+         * @param freeEtime the value for book.free_etime
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder freeEtime(Integer freeEtime) {
+            obj.setFreeEtime(freeEtime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.sex
+         *
+         * @param sex the value for book.sex
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder sex(String sex) {
+            obj.setSex(sex);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.billing_type
+         *
+         * @param billingType the value for book.billing_type
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder billingType(String billingType) {
+            obj.setBillingType(billingType);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.price
+         *
+         * @param price the value for book.price
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder price(Integer price) {
+            obj.setPrice(price);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.app_price
+         *
+         * @param appPrice the value for book.app_price
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder appPrice(Integer appPrice) {
+            obj.setAppPrice(appPrice);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.is_finish
+         *
+         * @param isFinish the value for book.is_finish
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder isFinish(String isFinish) {
+            obj.setIsFinish(isFinish);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.free_chapter_num
+         *
+         * @param freeChapterNum the value for book.free_chapter_num
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder freeChapterNum(Integer freeChapterNum) {
+            obj.setFreeChapterNum(freeChapterNum);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.word_count
+         *
+         * @param wordCount the value for book.word_count
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder wordCount(String wordCount) {
+            obj.setWordCount(wordCount);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.chapter_num
+         *
+         * @param chapterNum the value for book.chapter_num
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder chapterNum(Integer chapterNum) {
+            obj.setChapterNum(chapterNum);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.first_chapter_id
+         *
+         * @param firstChapterId the value for book.first_chapter_id
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder firstChapterId(Long firstChapterId) {
+            obj.setFirstChapterId(firstChapterId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.first_chapter_name
+         *
+         * @param firstChapterName the value for book.first_chapter_name
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder firstChapterName(String firstChapterName) {
+            obj.setFirstChapterName(firstChapterName);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.last_chapter_id
+         *
+         * @param lastChapterId the value for book.last_chapter_id
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder lastChapterId(Long lastChapterId) {
+            obj.setLastChapterId(lastChapterId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.last_chapter_name
+         *
+         * @param lastChapterName the value for book.last_chapter_name
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder lastChapterName(String lastChapterName) {
+            obj.setLastChapterName(lastChapterName);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.last_chapter_utime
+         *
+         * @param lastChapterUtime the value for book.last_chapter_utime
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder lastChapterUtime(Integer lastChapterUtime) {
+            obj.setLastChapterUtime(lastChapterUtime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.read_num
+         *
+         * @param readNum the value for book.read_num
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder readNum(Integer readNum) {
+            obj.setReadNum(readNum);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.article_chapter_order
+         *
+         * @param articleChapterOrder the value for book.article_chapter_order
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder articleChapterOrder(Integer articleChapterOrder) {
+            obj.setArticleChapterOrder(articleChapterOrder);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.attent_chapter_order
+         *
+         * @param attentChapterOrder the value for book.attent_chapter_order
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder attentChapterOrder(Integer attentChapterOrder) {
+            obj.setAttentChapterOrder(attentChapterOrder);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.corner_mark
+         *
+         * @param cornerMark the value for book.corner_mark
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder cornerMark(String cornerMark) {
+            obj.setCornerMark(cornerMark);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.recommand_book_id
+         *
+         * @param recommandBookId the value for book.recommand_book_id
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder recommandBookId(Long recommandBookId) {
+            obj.setRecommandBookId(recommandBookId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.createtime
+         *
+         * @param createtime the value for book.createtime
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder createtime(Integer createtime) {
+            obj.setCreatetime(createtime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.updatetime
+         *
+         * @param updatetime the value for book.updatetime
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder updatetime(Integer updatetime) {
+            obj.setUpdatetime(updatetime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.keywords
+         *
+         * @param keywords the value for book.keywords
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder keywords(String keywords) {
+            obj.setKeywords(keywords);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.cansee
+         *
+         * @param cansee the value for book.cansee
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder cansee(String cansee) {
+            obj.setCansee(cansee);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.rank
+         *
+         * @param rank the value for book.rank
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder rank(Byte rank) {
+            obj.setRank(rank);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.check_rank
+         *
+         * @param checkRank the value for book.check_rank
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder checkRank(Byte checkRank) {
+            obj.setCheckRank(checkRank);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.check_remark
+         *
+         * @param checkRemark the value for book.check_remark
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder checkRemark(String checkRemark) {
+            obj.setCheckRemark(checkRemark);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.editor_recommand
+         *
+         * @param editorRecommand the value for book.editor_recommand
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder editorRecommand(String editorRecommand) {
+            obj.setEditorRecommand(editorRecommand);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.book_tags
+         *
+         * @param bookTags the value for book.book_tags
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder bookTags(String bookTags) {
+            obj.setBookTags(bookTags);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.expire_time
+         *
+         * @param expireTime the value for book.expire_time
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder expireTime(Integer expireTime) {
+            obj.setExpireTime(expireTime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.cp_id
+         *
+         * @param cpId the value for book.cp_id
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder cpId(Integer cpId) {
+            obj.setCpId(cpId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.cp_name
+         *
+         * @param cpName the value for book.cp_name
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder cpName(String cpName) {
+            obj.setCpName(cpName);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.tags
+         *
+         * @param tags the value for book.tags
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder tags(String tags) {
+            obj.setTags(tags);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.classify_white_list
+         *
+         * @param classifyWhiteList the value for book.classify_white_list
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder classifyWhiteList(Byte classifyWhiteList) {
+            obj.setClassifyWhiteList(classifyWhiteList);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column book.put_ad_set
+         *
+         * @param putAdSet the value for book.put_ad_set
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Builder putAdSet(Byte putAdSet) {
+            obj.setPutAdSet(putAdSet);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Book build() {
+            return this.obj;
+        }
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public enum Column {
+        id("id", "id", "BIGINT", false),
+        isAudio("is_audio", "isAudio", "TINYINT", false),
+        bookCategoryId("book_category_id", "bookCategoryId", "INTEGER", false),
+        name("name", "name", "VARCHAR", false),
+        realname("realname", "realname", "VARCHAR", false),
+        title("title", "title", "VARCHAR", false),
+        author("author", "author", "VARCHAR", false),
+        image("image", "image", "VARCHAR", false),
+        bigCover("big_cover", "bigCover", "VARCHAR", false),
+        smallCover("small_cover", "smallCover", "VARCHAR", false),
+        description("description", "description", "VARCHAR", false),
+        idx("idx", "idx", "INTEGER", false),
+        referralNum("referral_num", "referralNum", "TINYINT", false),
+        idxx("idxx", "idxx", "INTEGER", false),
+        state("state", "state", "CHAR", false),
+        freeStime("free_stime", "freeStime", "INTEGER", false),
+        freeEtime("free_etime", "freeEtime", "INTEGER", false),
+        sex("sex", "sex", "CHAR", false),
+        billingType("billing_type", "billingType", "CHAR", false),
+        price("price", "price", "INTEGER", false),
+        appPrice("app_price", "appPrice", "INTEGER", false),
+        isFinish("is_finish", "isFinish", "CHAR", false),
+        freeChapterNum("free_chapter_num", "freeChapterNum", "INTEGER", false),
+        wordCount("word_count", "wordCount", "VARCHAR", false),
+        chapterNum("chapter_num", "chapterNum", "INTEGER", false),
+        firstChapterId("first_chapter_id", "firstChapterId", "BIGINT", false),
+        firstChapterName("first_chapter_name", "firstChapterName", "VARCHAR", false),
+        lastChapterId("last_chapter_id", "lastChapterId", "BIGINT", false),
+        lastChapterName("last_chapter_name", "lastChapterName", "VARCHAR", false),
+        lastChapterUtime("last_chapter_utime", "lastChapterUtime", "INTEGER", false),
+        readNum("read_num", "readNum", "INTEGER", false),
+        articleChapterOrder("article_chapter_order", "articleChapterOrder", "INTEGER", false),
+        attentChapterOrder("attent_chapter_order", "attentChapterOrder", "INTEGER", false),
+        cornerMark("corner_mark", "cornerMark", "CHAR", false),
+        recommandBookId("recommand_book_id", "recommandBookId", "BIGINT", false),
+        createtime("createtime", "createtime", "INTEGER", false),
+        updatetime("updatetime", "updatetime", "INTEGER", false),
+        keywords("keywords", "keywords", "VARCHAR", false),
+        cansee("cansee", "cansee", "CHAR", false),
+        rank("rank", "rank", "TINYINT", false),
+        checkRank("check_rank", "checkRank", "TINYINT", false),
+        checkRemark("check_remark", "checkRemark", "VARCHAR", false),
+        editorRecommand("editor_recommand", "editorRecommand", "VARCHAR", false),
+        bookTags("book_tags", "bookTags", "VARCHAR", false),
+        a("a", "a", "TINYINT", false),
+        expireTime("expire_time", "expireTime", "INTEGER", false),
+        cpId("cp_id", "cpId", "INTEGER", false),
+        cpName("cp_name", "cpName", "VARCHAR", false),
+        tags("tags", "tags", "VARCHAR", false),
+        classifyWhiteList("classify_white_list", "classifyWhiteList", "TINYINT", false),
+        putAdSet("put_ad_set", "putAdSet", "TINYINT", false);
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        private static final String BEGINNING_DELIMITER = "\"";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        private static final String ENDING_DELIMITER = "\"";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        private final String column;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        private final boolean isColumnNameDelimited;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        private final String javaProperty;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        private final String jdbcType;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public String getJavaProperty() {
+            return this.javaProperty;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public String getJdbcType() {
+            return this.jdbcType;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
+            this.column = column;
+            this.javaProperty = javaProperty;
+            this.jdbcType = jdbcType;
+            this.isColumnNameDelimited = isColumnNameDelimited;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public String desc() {
+            return this.getEscapedColumnName() + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public String asc() {
+            return this.getEscapedColumnName() + " ASC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public static Column[] excludes(Column ... excludes) {
+            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
+            if (excludes != null && excludes.length > 0) {
+                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
+            }
+            return columns.toArray(new Column[]{});
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public static Column[] all() {
+            return Column.values();
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public String getEscapedColumnName() {
+            if (this.isColumnNameDelimited) {
+                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
+            } else {
+                return this.column;
+            }
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public String getAliasedEscapedColumnName() {
+            return this.getEscapedColumnName();
+        }
+    }
+}

+ 5381 - 0
book-server/src/main/java/com/book/server/dao/entity/example/BookExample.java

@@ -0,0 +1,5381 @@
+package com.book.server.dao.entity.example;
+
+import com.book.server.dao.entity.Book;
+import java.util.ArrayList;
+import java.util.List;
+
+public class BookExample {
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    protected String orderByClause;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    protected boolean distinct;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    protected List<Criteria> oredCriteria;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    protected Integer offset;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    protected Integer rows;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public BookExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public BookExample orderBy(String orderByClause) {
+        this.setOrderByClause(orderByClause);
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public BookExample orderBy(String ... orderByClauses) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < orderByClauses.length; i++) {
+            sb.append(orderByClauses[i]);
+            if (i < orderByClauses.length - 1) {
+                sb.append(" , ");
+            }
+        }
+        this.setOrderByClause(sb.toString());
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria(this);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+        rows = null;
+        offset = null;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public void setOffset(Integer offset) {
+        this.offset = offset;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public Integer getOffset() {
+        return this.offset;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public void setRows(Integer rows) {
+        this.rows = rows;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public Integer getRows() {
+        return this.rows;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public BookExample limit(Integer rows) {
+        this.rows = rows;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public BookExample limit(Integer offset, Integer rows) {
+        this.offset = offset;
+        this.rows = rows;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public BookExample page(Integer page, Integer pageSize) {
+        this.offset = page * pageSize;
+        this.rows = pageSize;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public static Criteria newAndCreateCriteria() {
+        BookExample example = new BookExample();
+        return example.createCriteria();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public BookExample when(boolean condition, IExampleWhen then) {
+        if (condition) {
+            then.example(this);
+        }
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public BookExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {
+        if (condition) {
+            then.example(this);
+        } else {
+            otherwise.example(this);
+        }
+        return this;
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioIsNull() {
+            addCriterion("is_audio is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioIsNotNull() {
+            addCriterion("is_audio is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioEqualTo(Byte value) {
+            addCriterion("is_audio =", value, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_audio = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioNotEqualTo(Byte value) {
+            addCriterion("is_audio <>", value, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_audio <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioGreaterThan(Byte value) {
+            addCriterion("is_audio >", value, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_audio > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioGreaterThanOrEqualTo(Byte value) {
+            addCriterion("is_audio >=", value, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_audio >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioLessThan(Byte value) {
+            addCriterion("is_audio <", value, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_audio < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioLessThanOrEqualTo(Byte value) {
+            addCriterion("is_audio <=", value, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_audio <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioIn(List<Byte> values) {
+            addCriterion("is_audio in", values, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioNotIn(List<Byte> values) {
+            addCriterion("is_audio not in", values, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioBetween(Byte value1, Byte value2) {
+            addCriterion("is_audio between", value1, value2, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsAudioNotBetween(Byte value1, Byte value2) {
+            addCriterion("is_audio not between", value1, value2, "isAudio");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdIsNull() {
+            addCriterion("book_category_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdIsNotNull() {
+            addCriterion("book_category_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdEqualTo(Integer value) {
+            addCriterion("book_category_id =", value, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_category_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdNotEqualTo(Integer value) {
+            addCriterion("book_category_id <>", value, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_category_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdGreaterThan(Integer value) {
+            addCriterion("book_category_id >", value, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_category_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("book_category_id >=", value, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_category_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdLessThan(Integer value) {
+            addCriterion("book_category_id <", value, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_category_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdLessThanOrEqualTo(Integer value) {
+            addCriterion("book_category_id <=", value, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_category_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdIn(List<Integer> values) {
+            addCriterion("book_category_id in", values, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdNotIn(List<Integer> values) {
+            addCriterion("book_category_id not in", values, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdBetween(Integer value1, Integer value2) {
+            addCriterion("book_category_id between", value1, value2, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("book_category_id not between", value1, value2, "bookCategoryId");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIsNull() {
+            addCriterion("name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIsNotNull() {
+            addCriterion("name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameEqualTo(String value) {
+            addCriterion("name =", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("name = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotEqualTo(String value) {
+            addCriterion("name <>", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("name <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThan(String value) {
+            addCriterion("name >", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("name > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThanOrEqualTo(String value) {
+            addCriterion("name >=", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("name >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThan(String value) {
+            addCriterion("name <", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("name < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThanOrEqualTo(String value) {
+            addCriterion("name <=", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("name <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLike(String value) {
+            addCriterion("name like", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotLike(String value) {
+            addCriterion("name not like", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIn(List<String> values) {
+            addCriterion("name in", values, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotIn(List<String> values) {
+            addCriterion("name not in", values, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameBetween(String value1, String value2) {
+            addCriterion("name between", value1, value2, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotBetween(String value1, String value2) {
+            addCriterion("name not between", value1, value2, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameIsNull() {
+            addCriterion("realname is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameIsNotNull() {
+            addCriterion("realname is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameEqualTo(String value) {
+            addCriterion("realname =", value, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("realname = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameNotEqualTo(String value) {
+            addCriterion("realname <>", value, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("realname <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameGreaterThan(String value) {
+            addCriterion("realname >", value, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("realname > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameGreaterThanOrEqualTo(String value) {
+            addCriterion("realname >=", value, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("realname >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameLessThan(String value) {
+            addCriterion("realname <", value, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("realname < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameLessThanOrEqualTo(String value) {
+            addCriterion("realname <=", value, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("realname <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameLike(String value) {
+            addCriterion("realname like", value, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameNotLike(String value) {
+            addCriterion("realname not like", value, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameIn(List<String> values) {
+            addCriterion("realname in", values, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameNotIn(List<String> values) {
+            addCriterion("realname not in", values, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameBetween(String value1, String value2) {
+            addCriterion("realname between", value1, value2, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andRealnameNotBetween(String value1, String value2) {
+            addCriterion("realname not between", value1, value2, "realname");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIsNull() {
+            addCriterion("title is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIsNotNull() {
+            addCriterion("title is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleEqualTo(String value) {
+            addCriterion("title =", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("title = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotEqualTo(String value) {
+            addCriterion("title <>", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("title <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThan(String value) {
+            addCriterion("title >", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("title > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThanOrEqualTo(String value) {
+            addCriterion("title >=", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("title >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThan(String value) {
+            addCriterion("title <", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("title < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThanOrEqualTo(String value) {
+            addCriterion("title <=", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("title <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleLike(String value) {
+            addCriterion("title like", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotLike(String value) {
+            addCriterion("title not like", value, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleIn(List<String> values) {
+            addCriterion("title in", values, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotIn(List<String> values) {
+            addCriterion("title not in", values, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleBetween(String value1, String value2) {
+            addCriterion("title between", value1, value2, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andTitleNotBetween(String value1, String value2) {
+            addCriterion("title not between", value1, value2, "title");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorIsNull() {
+            addCriterion("author is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorIsNotNull() {
+            addCriterion("author is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorEqualTo(String value) {
+            addCriterion("author =", value, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("author = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorNotEqualTo(String value) {
+            addCriterion("author <>", value, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("author <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorGreaterThan(String value) {
+            addCriterion("author >", value, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("author > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorGreaterThanOrEqualTo(String value) {
+            addCriterion("author >=", value, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("author >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorLessThan(String value) {
+            addCriterion("author <", value, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("author < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorLessThanOrEqualTo(String value) {
+            addCriterion("author <=", value, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("author <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorLike(String value) {
+            addCriterion("author like", value, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorNotLike(String value) {
+            addCriterion("author not like", value, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorIn(List<String> values) {
+            addCriterion("author in", values, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorNotIn(List<String> values) {
+            addCriterion("author not in", values, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorBetween(String value1, String value2) {
+            addCriterion("author between", value1, value2, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthorNotBetween(String value1, String value2) {
+            addCriterion("author not between", value1, value2, "author");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageIsNull() {
+            addCriterion("image is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageIsNotNull() {
+            addCriterion("image is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageEqualTo(String value) {
+            addCriterion("image =", value, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("image = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andImageNotEqualTo(String value) {
+            addCriterion("image <>", value, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("image <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andImageGreaterThan(String value) {
+            addCriterion("image >", value, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("image > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andImageGreaterThanOrEqualTo(String value) {
+            addCriterion("image >=", value, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("image >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andImageLessThan(String value) {
+            addCriterion("image <", value, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("image < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andImageLessThanOrEqualTo(String value) {
+            addCriterion("image <=", value, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("image <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andImageLike(String value) {
+            addCriterion("image like", value, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageNotLike(String value) {
+            addCriterion("image not like", value, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageIn(List<String> values) {
+            addCriterion("image in", values, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageNotIn(List<String> values) {
+            addCriterion("image not in", values, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageBetween(String value1, String value2) {
+            addCriterion("image between", value1, value2, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andImageNotBetween(String value1, String value2) {
+            addCriterion("image not between", value1, value2, "image");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverIsNull() {
+            addCriterion("big_cover is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverIsNotNull() {
+            addCriterion("big_cover is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverEqualTo(String value) {
+            addCriterion("big_cover =", value, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("big_cover = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverNotEqualTo(String value) {
+            addCriterion("big_cover <>", value, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("big_cover <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverGreaterThan(String value) {
+            addCriterion("big_cover >", value, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("big_cover > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverGreaterThanOrEqualTo(String value) {
+            addCriterion("big_cover >=", value, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("big_cover >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverLessThan(String value) {
+            addCriterion("big_cover <", value, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("big_cover < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverLessThanOrEqualTo(String value) {
+            addCriterion("big_cover <=", value, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("big_cover <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverLike(String value) {
+            addCriterion("big_cover like", value, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverNotLike(String value) {
+            addCriterion("big_cover not like", value, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverIn(List<String> values) {
+            addCriterion("big_cover in", values, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverNotIn(List<String> values) {
+            addCriterion("big_cover not in", values, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverBetween(String value1, String value2) {
+            addCriterion("big_cover between", value1, value2, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andBigCoverNotBetween(String value1, String value2) {
+            addCriterion("big_cover not between", value1, value2, "bigCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverIsNull() {
+            addCriterion("small_cover is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverIsNotNull() {
+            addCriterion("small_cover is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverEqualTo(String value) {
+            addCriterion("small_cover =", value, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("small_cover = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverNotEqualTo(String value) {
+            addCriterion("small_cover <>", value, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("small_cover <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverGreaterThan(String value) {
+            addCriterion("small_cover >", value, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("small_cover > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverGreaterThanOrEqualTo(String value) {
+            addCriterion("small_cover >=", value, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("small_cover >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverLessThan(String value) {
+            addCriterion("small_cover <", value, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("small_cover < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverLessThanOrEqualTo(String value) {
+            addCriterion("small_cover <=", value, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("small_cover <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverLike(String value) {
+            addCriterion("small_cover like", value, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverNotLike(String value) {
+            addCriterion("small_cover not like", value, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverIn(List<String> values) {
+            addCriterion("small_cover in", values, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverNotIn(List<String> values) {
+            addCriterion("small_cover not in", values, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverBetween(String value1, String value2) {
+            addCriterion("small_cover between", value1, value2, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmallCoverNotBetween(String value1, String value2) {
+            addCriterion("small_cover not between", value1, value2, "smallCover");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionIsNull() {
+            addCriterion("description is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionIsNotNull() {
+            addCriterion("description is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionEqualTo(String value) {
+            addCriterion("description =", value, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("description = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionNotEqualTo(String value) {
+            addCriterion("description <>", value, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("description <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionGreaterThan(String value) {
+            addCriterion("description >", value, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("description > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionGreaterThanOrEqualTo(String value) {
+            addCriterion("description >=", value, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("description >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionLessThan(String value) {
+            addCriterion("description <", value, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("description < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionLessThanOrEqualTo(String value) {
+            addCriterion("description <=", value, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("description <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionLike(String value) {
+            addCriterion("description like", value, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionNotLike(String value) {
+            addCriterion("description not like", value, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionIn(List<String> values) {
+            addCriterion("description in", values, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionNotIn(List<String> values) {
+            addCriterion("description not in", values, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionBetween(String value1, String value2) {
+            addCriterion("description between", value1, value2, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andDescriptionNotBetween(String value1, String value2) {
+            addCriterion("description not between", value1, value2, "description");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxIsNull() {
+            addCriterion("idx is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxIsNotNull() {
+            addCriterion("idx is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxEqualTo(Integer value) {
+            addCriterion("idx =", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idx = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxNotEqualTo(Integer value) {
+            addCriterion("idx <>", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idx <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxGreaterThan(Integer value) {
+            addCriterion("idx >", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idx > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxGreaterThanOrEqualTo(Integer value) {
+            addCriterion("idx >=", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idx >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxLessThan(Integer value) {
+            addCriterion("idx <", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idx < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxLessThanOrEqualTo(Integer value) {
+            addCriterion("idx <=", value, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idx <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxIn(List<Integer> values) {
+            addCriterion("idx in", values, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxNotIn(List<Integer> values) {
+            addCriterion("idx not in", values, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxBetween(Integer value1, Integer value2) {
+            addCriterion("idx between", value1, value2, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxNotBetween(Integer value1, Integer value2) {
+            addCriterion("idx not between", value1, value2, "idx");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumIsNull() {
+            addCriterion("referral_num is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumIsNotNull() {
+            addCriterion("referral_num is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumEqualTo(Byte value) {
+            addCriterion("referral_num =", value, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("referral_num = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumNotEqualTo(Byte value) {
+            addCriterion("referral_num <>", value, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("referral_num <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumGreaterThan(Byte value) {
+            addCriterion("referral_num >", value, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("referral_num > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumGreaterThanOrEqualTo(Byte value) {
+            addCriterion("referral_num >=", value, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("referral_num >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumLessThan(Byte value) {
+            addCriterion("referral_num <", value, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("referral_num < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumLessThanOrEqualTo(Byte value) {
+            addCriterion("referral_num <=", value, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("referral_num <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumIn(List<Byte> values) {
+            addCriterion("referral_num in", values, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumNotIn(List<Byte> values) {
+            addCriterion("referral_num not in", values, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumBetween(Byte value1, Byte value2) {
+            addCriterion("referral_num between", value1, value2, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferralNumNotBetween(Byte value1, Byte value2) {
+            addCriterion("referral_num not between", value1, value2, "referralNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxIsNull() {
+            addCriterion("idxx is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxIsNotNull() {
+            addCriterion("idxx is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxEqualTo(Integer value) {
+            addCriterion("idxx =", value, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idxx = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxNotEqualTo(Integer value) {
+            addCriterion("idxx <>", value, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idxx <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxGreaterThan(Integer value) {
+            addCriterion("idxx >", value, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idxx > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxGreaterThanOrEqualTo(Integer value) {
+            addCriterion("idxx >=", value, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idxx >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxLessThan(Integer value) {
+            addCriterion("idxx <", value, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idxx < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxLessThanOrEqualTo(Integer value) {
+            addCriterion("idxx <=", value, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("idxx <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxIn(List<Integer> values) {
+            addCriterion("idxx in", values, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxNotIn(List<Integer> values) {
+            addCriterion("idxx not in", values, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxBetween(Integer value1, Integer value2) {
+            addCriterion("idxx between", value1, value2, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdxxNotBetween(Integer value1, Integer value2) {
+            addCriterion("idxx not between", value1, value2, "idxx");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateIsNull() {
+            addCriterion("state is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateIsNotNull() {
+            addCriterion("state is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateEqualTo(String value) {
+            addCriterion("state =", value, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("state = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStateNotEqualTo(String value) {
+            addCriterion("state <>", value, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("state <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStateGreaterThan(String value) {
+            addCriterion("state >", value, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("state > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStateGreaterThanOrEqualTo(String value) {
+            addCriterion("state >=", value, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("state >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStateLessThan(String value) {
+            addCriterion("state <", value, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("state < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStateLessThanOrEqualTo(String value) {
+            addCriterion("state <=", value, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("state <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andStateLike(String value) {
+            addCriterion("state like", value, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateNotLike(String value) {
+            addCriterion("state not like", value, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateIn(List<String> values) {
+            addCriterion("state in", values, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateNotIn(List<String> values) {
+            addCriterion("state not in", values, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateBetween(String value1, String value2) {
+            addCriterion("state between", value1, value2, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andStateNotBetween(String value1, String value2) {
+            addCriterion("state not between", value1, value2, "state");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeIsNull() {
+            addCriterion("free_stime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeIsNotNull() {
+            addCriterion("free_stime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeEqualTo(Integer value) {
+            addCriterion("free_stime =", value, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_stime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeNotEqualTo(Integer value) {
+            addCriterion("free_stime <>", value, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_stime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeGreaterThan(Integer value) {
+            addCriterion("free_stime >", value, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_stime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("free_stime >=", value, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_stime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeLessThan(Integer value) {
+            addCriterion("free_stime <", value, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_stime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeLessThanOrEqualTo(Integer value) {
+            addCriterion("free_stime <=", value, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_stime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeIn(List<Integer> values) {
+            addCriterion("free_stime in", values, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeNotIn(List<Integer> values) {
+            addCriterion("free_stime not in", values, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeBetween(Integer value1, Integer value2) {
+            addCriterion("free_stime between", value1, value2, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeStimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("free_stime not between", value1, value2, "freeStime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeIsNull() {
+            addCriterion("free_etime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeIsNotNull() {
+            addCriterion("free_etime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeEqualTo(Integer value) {
+            addCriterion("free_etime =", value, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_etime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeNotEqualTo(Integer value) {
+            addCriterion("free_etime <>", value, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_etime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeGreaterThan(Integer value) {
+            addCriterion("free_etime >", value, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_etime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("free_etime >=", value, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_etime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeLessThan(Integer value) {
+            addCriterion("free_etime <", value, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_etime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeLessThanOrEqualTo(Integer value) {
+            addCriterion("free_etime <=", value, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_etime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeIn(List<Integer> values) {
+            addCriterion("free_etime in", values, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeNotIn(List<Integer> values) {
+            addCriterion("free_etime not in", values, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeBetween(Integer value1, Integer value2) {
+            addCriterion("free_etime between", value1, value2, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeEtimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("free_etime not between", value1, value2, "freeEtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexIsNull() {
+            addCriterion("sex is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexIsNotNull() {
+            addCriterion("sex is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexEqualTo(String value) {
+            addCriterion("sex =", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("sex = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotEqualTo(String value) {
+            addCriterion("sex <>", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("sex <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSexGreaterThan(String value) {
+            addCriterion("sex >", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("sex > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSexGreaterThanOrEqualTo(String value) {
+            addCriterion("sex >=", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("sex >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSexLessThan(String value) {
+            addCriterion("sex <", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("sex < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSexLessThanOrEqualTo(String value) {
+            addCriterion("sex <=", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("sex <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSexLike(String value) {
+            addCriterion("sex like", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotLike(String value) {
+            addCriterion("sex not like", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexIn(List<String> values) {
+            addCriterion("sex in", values, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotIn(List<String> values) {
+            addCriterion("sex not in", values, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexBetween(String value1, String value2) {
+            addCriterion("sex between", value1, value2, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotBetween(String value1, String value2) {
+            addCriterion("sex not between", value1, value2, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeIsNull() {
+            addCriterion("billing_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeIsNotNull() {
+            addCriterion("billing_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeEqualTo(String value) {
+            addCriterion("billing_type =", value, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("billing_type = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeNotEqualTo(String value) {
+            addCriterion("billing_type <>", value, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("billing_type <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeGreaterThan(String value) {
+            addCriterion("billing_type >", value, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("billing_type > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("billing_type >=", value, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("billing_type >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeLessThan(String value) {
+            addCriterion("billing_type <", value, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("billing_type < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeLessThanOrEqualTo(String value) {
+            addCriterion("billing_type <=", value, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("billing_type <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeLike(String value) {
+            addCriterion("billing_type like", value, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeNotLike(String value) {
+            addCriterion("billing_type not like", value, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeIn(List<String> values) {
+            addCriterion("billing_type in", values, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeNotIn(List<String> values) {
+            addCriterion("billing_type not in", values, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeBetween(String value1, String value2) {
+            addCriterion("billing_type between", value1, value2, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBillingTypeNotBetween(String value1, String value2) {
+            addCriterion("billing_type not between", value1, value2, "billingType");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceIsNull() {
+            addCriterion("price is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceIsNotNull() {
+            addCriterion("price is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceEqualTo(Integer value) {
+            addCriterion("price =", value, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("price = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceNotEqualTo(Integer value) {
+            addCriterion("price <>", value, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("price <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceGreaterThan(Integer value) {
+            addCriterion("price >", value, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("price > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceGreaterThanOrEqualTo(Integer value) {
+            addCriterion("price >=", value, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("price >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceLessThan(Integer value) {
+            addCriterion("price <", value, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("price < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceLessThanOrEqualTo(Integer value) {
+            addCriterion("price <=", value, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("price <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceIn(List<Integer> values) {
+            addCriterion("price in", values, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceNotIn(List<Integer> values) {
+            addCriterion("price not in", values, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceBetween(Integer value1, Integer value2) {
+            addCriterion("price between", value1, value2, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andPriceNotBetween(Integer value1, Integer value2) {
+            addCriterion("price not between", value1, value2, "price");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceIsNull() {
+            addCriterion("app_price is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceIsNotNull() {
+            addCriterion("app_price is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceEqualTo(Integer value) {
+            addCriterion("app_price =", value, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("app_price = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceNotEqualTo(Integer value) {
+            addCriterion("app_price <>", value, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("app_price <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceGreaterThan(Integer value) {
+            addCriterion("app_price >", value, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("app_price > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceGreaterThanOrEqualTo(Integer value) {
+            addCriterion("app_price >=", value, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("app_price >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceLessThan(Integer value) {
+            addCriterion("app_price <", value, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("app_price < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceLessThanOrEqualTo(Integer value) {
+            addCriterion("app_price <=", value, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("app_price <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceIn(List<Integer> values) {
+            addCriterion("app_price in", values, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceNotIn(List<Integer> values) {
+            addCriterion("app_price not in", values, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceBetween(Integer value1, Integer value2) {
+            addCriterion("app_price between", value1, value2, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andAppPriceNotBetween(Integer value1, Integer value2) {
+            addCriterion("app_price not between", value1, value2, "appPrice");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishIsNull() {
+            addCriterion("is_finish is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishIsNotNull() {
+            addCriterion("is_finish is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishEqualTo(String value) {
+            addCriterion("is_finish =", value, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_finish = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishNotEqualTo(String value) {
+            addCriterion("is_finish <>", value, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_finish <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishGreaterThan(String value) {
+            addCriterion("is_finish >", value, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_finish > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishGreaterThanOrEqualTo(String value) {
+            addCriterion("is_finish >=", value, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_finish >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishLessThan(String value) {
+            addCriterion("is_finish <", value, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_finish < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishLessThanOrEqualTo(String value) {
+            addCriterion("is_finish <=", value, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("is_finish <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishLike(String value) {
+            addCriterion("is_finish like", value, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishNotLike(String value) {
+            addCriterion("is_finish not like", value, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishIn(List<String> values) {
+            addCriterion("is_finish in", values, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishNotIn(List<String> values) {
+            addCriterion("is_finish not in", values, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishBetween(String value1, String value2) {
+            addCriterion("is_finish between", value1, value2, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsFinishNotBetween(String value1, String value2) {
+            addCriterion("is_finish not between", value1, value2, "isFinish");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumIsNull() {
+            addCriterion("free_chapter_num is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumIsNotNull() {
+            addCriterion("free_chapter_num is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumEqualTo(Integer value) {
+            addCriterion("free_chapter_num =", value, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_chapter_num = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumNotEqualTo(Integer value) {
+            addCriterion("free_chapter_num <>", value, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_chapter_num <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumGreaterThan(Integer value) {
+            addCriterion("free_chapter_num >", value, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_chapter_num > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumGreaterThanOrEqualTo(Integer value) {
+            addCriterion("free_chapter_num >=", value, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_chapter_num >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumLessThan(Integer value) {
+            addCriterion("free_chapter_num <", value, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_chapter_num < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumLessThanOrEqualTo(Integer value) {
+            addCriterion("free_chapter_num <=", value, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("free_chapter_num <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumIn(List<Integer> values) {
+            addCriterion("free_chapter_num in", values, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumNotIn(List<Integer> values) {
+            addCriterion("free_chapter_num not in", values, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumBetween(Integer value1, Integer value2) {
+            addCriterion("free_chapter_num between", value1, value2, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeChapterNumNotBetween(Integer value1, Integer value2) {
+            addCriterion("free_chapter_num not between", value1, value2, "freeChapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountIsNull() {
+            addCriterion("word_count is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountIsNotNull() {
+            addCriterion("word_count is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountEqualTo(String value) {
+            addCriterion("word_count =", value, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("word_count = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountNotEqualTo(String value) {
+            addCriterion("word_count <>", value, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("word_count <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountGreaterThan(String value) {
+            addCriterion("word_count >", value, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("word_count > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountGreaterThanOrEqualTo(String value) {
+            addCriterion("word_count >=", value, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("word_count >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountLessThan(String value) {
+            addCriterion("word_count <", value, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("word_count < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountLessThanOrEqualTo(String value) {
+            addCriterion("word_count <=", value, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("word_count <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountLike(String value) {
+            addCriterion("word_count like", value, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountNotLike(String value) {
+            addCriterion("word_count not like", value, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountIn(List<String> values) {
+            addCriterion("word_count in", values, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountNotIn(List<String> values) {
+            addCriterion("word_count not in", values, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountBetween(String value1, String value2) {
+            addCriterion("word_count between", value1, value2, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andWordCountNotBetween(String value1, String value2) {
+            addCriterion("word_count not between", value1, value2, "wordCount");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumIsNull() {
+            addCriterion("chapter_num is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumIsNotNull() {
+            addCriterion("chapter_num is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumEqualTo(Integer value) {
+            addCriterion("chapter_num =", value, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("chapter_num = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumNotEqualTo(Integer value) {
+            addCriterion("chapter_num <>", value, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("chapter_num <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumGreaterThan(Integer value) {
+            addCriterion("chapter_num >", value, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("chapter_num > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumGreaterThanOrEqualTo(Integer value) {
+            addCriterion("chapter_num >=", value, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("chapter_num >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumLessThan(Integer value) {
+            addCriterion("chapter_num <", value, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("chapter_num < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumLessThanOrEqualTo(Integer value) {
+            addCriterion("chapter_num <=", value, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("chapter_num <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumIn(List<Integer> values) {
+            addCriterion("chapter_num in", values, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumNotIn(List<Integer> values) {
+            addCriterion("chapter_num not in", values, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumBetween(Integer value1, Integer value2) {
+            addCriterion("chapter_num between", value1, value2, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andChapterNumNotBetween(Integer value1, Integer value2) {
+            addCriterion("chapter_num not between", value1, value2, "chapterNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdIsNull() {
+            addCriterion("first_chapter_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdIsNotNull() {
+            addCriterion("first_chapter_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdEqualTo(Long value) {
+            addCriterion("first_chapter_id =", value, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdNotEqualTo(Long value) {
+            addCriterion("first_chapter_id <>", value, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdGreaterThan(Long value) {
+            addCriterion("first_chapter_id >", value, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("first_chapter_id >=", value, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdLessThan(Long value) {
+            addCriterion("first_chapter_id <", value, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdLessThanOrEqualTo(Long value) {
+            addCriterion("first_chapter_id <=", value, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdIn(List<Long> values) {
+            addCriterion("first_chapter_id in", values, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdNotIn(List<Long> values) {
+            addCriterion("first_chapter_id not in", values, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdBetween(Long value1, Long value2) {
+            addCriterion("first_chapter_id between", value1, value2, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterIdNotBetween(Long value1, Long value2) {
+            addCriterion("first_chapter_id not between", value1, value2, "firstChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameIsNull() {
+            addCriterion("first_chapter_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameIsNotNull() {
+            addCriterion("first_chapter_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameEqualTo(String value) {
+            addCriterion("first_chapter_name =", value, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_name = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameNotEqualTo(String value) {
+            addCriterion("first_chapter_name <>", value, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_name <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameGreaterThan(String value) {
+            addCriterion("first_chapter_name >", value, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_name > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameGreaterThanOrEqualTo(String value) {
+            addCriterion("first_chapter_name >=", value, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_name >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameLessThan(String value) {
+            addCriterion("first_chapter_name <", value, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_name < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameLessThanOrEqualTo(String value) {
+            addCriterion("first_chapter_name <=", value, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("first_chapter_name <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameLike(String value) {
+            addCriterion("first_chapter_name like", value, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameNotLike(String value) {
+            addCriterion("first_chapter_name not like", value, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameIn(List<String> values) {
+            addCriterion("first_chapter_name in", values, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameNotIn(List<String> values) {
+            addCriterion("first_chapter_name not in", values, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameBetween(String value1, String value2) {
+            addCriterion("first_chapter_name between", value1, value2, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFirstChapterNameNotBetween(String value1, String value2) {
+            addCriterion("first_chapter_name not between", value1, value2, "firstChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdIsNull() {
+            addCriterion("last_chapter_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdIsNotNull() {
+            addCriterion("last_chapter_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdEqualTo(Long value) {
+            addCriterion("last_chapter_id =", value, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdNotEqualTo(Long value) {
+            addCriterion("last_chapter_id <>", value, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdGreaterThan(Long value) {
+            addCriterion("last_chapter_id >", value, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("last_chapter_id >=", value, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdLessThan(Long value) {
+            addCriterion("last_chapter_id <", value, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdLessThanOrEqualTo(Long value) {
+            addCriterion("last_chapter_id <=", value, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdIn(List<Long> values) {
+            addCriterion("last_chapter_id in", values, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdNotIn(List<Long> values) {
+            addCriterion("last_chapter_id not in", values, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdBetween(Long value1, Long value2) {
+            addCriterion("last_chapter_id between", value1, value2, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterIdNotBetween(Long value1, Long value2) {
+            addCriterion("last_chapter_id not between", value1, value2, "lastChapterId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameIsNull() {
+            addCriterion("last_chapter_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameIsNotNull() {
+            addCriterion("last_chapter_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameEqualTo(String value) {
+            addCriterion("last_chapter_name =", value, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_name = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameNotEqualTo(String value) {
+            addCriterion("last_chapter_name <>", value, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_name <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameGreaterThan(String value) {
+            addCriterion("last_chapter_name >", value, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_name > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameGreaterThanOrEqualTo(String value) {
+            addCriterion("last_chapter_name >=", value, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_name >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameLessThan(String value) {
+            addCriterion("last_chapter_name <", value, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_name < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameLessThanOrEqualTo(String value) {
+            addCriterion("last_chapter_name <=", value, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_name <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameLike(String value) {
+            addCriterion("last_chapter_name like", value, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameNotLike(String value) {
+            addCriterion("last_chapter_name not like", value, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameIn(List<String> values) {
+            addCriterion("last_chapter_name in", values, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameNotIn(List<String> values) {
+            addCriterion("last_chapter_name not in", values, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameBetween(String value1, String value2) {
+            addCriterion("last_chapter_name between", value1, value2, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterNameNotBetween(String value1, String value2) {
+            addCriterion("last_chapter_name not between", value1, value2, "lastChapterName");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeIsNull() {
+            addCriterion("last_chapter_utime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeIsNotNull() {
+            addCriterion("last_chapter_utime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeEqualTo(Integer value) {
+            addCriterion("last_chapter_utime =", value, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_utime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeNotEqualTo(Integer value) {
+            addCriterion("last_chapter_utime <>", value, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_utime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeGreaterThan(Integer value) {
+            addCriterion("last_chapter_utime >", value, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_utime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("last_chapter_utime >=", value, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_utime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeLessThan(Integer value) {
+            addCriterion("last_chapter_utime <", value, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_utime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeLessThanOrEqualTo(Integer value) {
+            addCriterion("last_chapter_utime <=", value, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("last_chapter_utime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeIn(List<Integer> values) {
+            addCriterion("last_chapter_utime in", values, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeNotIn(List<Integer> values) {
+            addCriterion("last_chapter_utime not in", values, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeBetween(Integer value1, Integer value2) {
+            addCriterion("last_chapter_utime between", value1, value2, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andLastChapterUtimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("last_chapter_utime not between", value1, value2, "lastChapterUtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumIsNull() {
+            addCriterion("read_num is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumIsNotNull() {
+            addCriterion("read_num is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumEqualTo(Integer value) {
+            addCriterion("read_num =", value, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("read_num = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumNotEqualTo(Integer value) {
+            addCriterion("read_num <>", value, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("read_num <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumGreaterThan(Integer value) {
+            addCriterion("read_num >", value, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("read_num > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumGreaterThanOrEqualTo(Integer value) {
+            addCriterion("read_num >=", value, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("read_num >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumLessThan(Integer value) {
+            addCriterion("read_num <", value, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("read_num < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumLessThanOrEqualTo(Integer value) {
+            addCriterion("read_num <=", value, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("read_num <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumIn(List<Integer> values) {
+            addCriterion("read_num in", values, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumNotIn(List<Integer> values) {
+            addCriterion("read_num not in", values, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumBetween(Integer value1, Integer value2) {
+            addCriterion("read_num between", value1, value2, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadNumNotBetween(Integer value1, Integer value2) {
+            addCriterion("read_num not between", value1, value2, "readNum");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderIsNull() {
+            addCriterion("article_chapter_order is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderIsNotNull() {
+            addCriterion("article_chapter_order is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderEqualTo(Integer value) {
+            addCriterion("article_chapter_order =", value, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("article_chapter_order = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderNotEqualTo(Integer value) {
+            addCriterion("article_chapter_order <>", value, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("article_chapter_order <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderGreaterThan(Integer value) {
+            addCriterion("article_chapter_order >", value, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("article_chapter_order > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderGreaterThanOrEqualTo(Integer value) {
+            addCriterion("article_chapter_order >=", value, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("article_chapter_order >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderLessThan(Integer value) {
+            addCriterion("article_chapter_order <", value, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("article_chapter_order < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderLessThanOrEqualTo(Integer value) {
+            addCriterion("article_chapter_order <=", value, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("article_chapter_order <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderIn(List<Integer> values) {
+            addCriterion("article_chapter_order in", values, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderNotIn(List<Integer> values) {
+            addCriterion("article_chapter_order not in", values, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderBetween(Integer value1, Integer value2) {
+            addCriterion("article_chapter_order between", value1, value2, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andArticleChapterOrderNotBetween(Integer value1, Integer value2) {
+            addCriterion("article_chapter_order not between", value1, value2, "articleChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderIsNull() {
+            addCriterion("attent_chapter_order is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderIsNotNull() {
+            addCriterion("attent_chapter_order is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderEqualTo(Integer value) {
+            addCriterion("attent_chapter_order =", value, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("attent_chapter_order = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderNotEqualTo(Integer value) {
+            addCriterion("attent_chapter_order <>", value, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("attent_chapter_order <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderGreaterThan(Integer value) {
+            addCriterion("attent_chapter_order >", value, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("attent_chapter_order > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderGreaterThanOrEqualTo(Integer value) {
+            addCriterion("attent_chapter_order >=", value, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("attent_chapter_order >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderLessThan(Integer value) {
+            addCriterion("attent_chapter_order <", value, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("attent_chapter_order < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderLessThanOrEqualTo(Integer value) {
+            addCriterion("attent_chapter_order <=", value, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("attent_chapter_order <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderIn(List<Integer> values) {
+            addCriterion("attent_chapter_order in", values, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderNotIn(List<Integer> values) {
+            addCriterion("attent_chapter_order not in", values, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderBetween(Integer value1, Integer value2) {
+            addCriterion("attent_chapter_order between", value1, value2, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andAttentChapterOrderNotBetween(Integer value1, Integer value2) {
+            addCriterion("attent_chapter_order not between", value1, value2, "attentChapterOrder");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkIsNull() {
+            addCriterion("corner_mark is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkIsNotNull() {
+            addCriterion("corner_mark is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkEqualTo(String value) {
+            addCriterion("corner_mark =", value, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("corner_mark = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkNotEqualTo(String value) {
+            addCriterion("corner_mark <>", value, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("corner_mark <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkGreaterThan(String value) {
+            addCriterion("corner_mark >", value, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("corner_mark > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkGreaterThanOrEqualTo(String value) {
+            addCriterion("corner_mark >=", value, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("corner_mark >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkLessThan(String value) {
+            addCriterion("corner_mark <", value, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("corner_mark < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkLessThanOrEqualTo(String value) {
+            addCriterion("corner_mark <=", value, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("corner_mark <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkLike(String value) {
+            addCriterion("corner_mark like", value, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkNotLike(String value) {
+            addCriterion("corner_mark not like", value, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkIn(List<String> values) {
+            addCriterion("corner_mark in", values, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkNotIn(List<String> values) {
+            addCriterion("corner_mark not in", values, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkBetween(String value1, String value2) {
+            addCriterion("corner_mark between", value1, value2, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCornerMarkNotBetween(String value1, String value2) {
+            addCriterion("corner_mark not between", value1, value2, "cornerMark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdIsNull() {
+            addCriterion("recommand_book_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdIsNotNull() {
+            addCriterion("recommand_book_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdEqualTo(Long value) {
+            addCriterion("recommand_book_id =", value, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("recommand_book_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdNotEqualTo(Long value) {
+            addCriterion("recommand_book_id <>", value, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("recommand_book_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdGreaterThan(Long value) {
+            addCriterion("recommand_book_id >", value, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("recommand_book_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("recommand_book_id >=", value, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("recommand_book_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdLessThan(Long value) {
+            addCriterion("recommand_book_id <", value, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("recommand_book_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdLessThanOrEqualTo(Long value) {
+            addCriterion("recommand_book_id <=", value, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("recommand_book_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdIn(List<Long> values) {
+            addCriterion("recommand_book_id in", values, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdNotIn(List<Long> values) {
+            addCriterion("recommand_book_id not in", values, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdBetween(Long value1, Long value2) {
+            addCriterion("recommand_book_id between", value1, value2, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecommandBookIdNotBetween(Long value1, Long value2) {
+            addCriterion("recommand_book_id not between", value1, value2, "recommandBookId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIsNull() {
+            addCriterion("createtime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIsNotNull() {
+            addCriterion("createtime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeEqualTo(Integer value) {
+            addCriterion("createtime =", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("createtime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotEqualTo(Integer value) {
+            addCriterion("createtime <>", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("createtime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThan(Integer value) {
+            addCriterion("createtime >", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("createtime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("createtime >=", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("createtime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThan(Integer value) {
+            addCriterion("createtime <", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("createtime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanOrEqualTo(Integer value) {
+            addCriterion("createtime <=", value, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("createtime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeIn(List<Integer> values) {
+            addCriterion("createtime in", values, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotIn(List<Integer> values) {
+            addCriterion("createtime not in", values, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeBetween(Integer value1, Integer value2) {
+            addCriterion("createtime between", value1, value2, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatetimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("createtime not between", value1, value2, "createtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIsNull() {
+            addCriterion("updatetime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIsNotNull() {
+            addCriterion("updatetime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeEqualTo(Integer value) {
+            addCriterion("updatetime =", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("updatetime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotEqualTo(Integer value) {
+            addCriterion("updatetime <>", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("updatetime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThan(Integer value) {
+            addCriterion("updatetime >", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("updatetime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("updatetime >=", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("updatetime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThan(Integer value) {
+            addCriterion("updatetime <", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("updatetime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanOrEqualTo(Integer value) {
+            addCriterion("updatetime <=", value, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("updatetime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeIn(List<Integer> values) {
+            addCriterion("updatetime in", values, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotIn(List<Integer> values) {
+            addCriterion("updatetime not in", values, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeBetween(Integer value1, Integer value2) {
+            addCriterion("updatetime between", value1, value2, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatetimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("updatetime not between", value1, value2, "updatetime");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsIsNull() {
+            addCriterion("keywords is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsIsNotNull() {
+            addCriterion("keywords is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsEqualTo(String value) {
+            addCriterion("keywords =", value, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("keywords = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsNotEqualTo(String value) {
+            addCriterion("keywords <>", value, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("keywords <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsGreaterThan(String value) {
+            addCriterion("keywords >", value, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("keywords > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsGreaterThanOrEqualTo(String value) {
+            addCriterion("keywords >=", value, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("keywords >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsLessThan(String value) {
+            addCriterion("keywords <", value, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("keywords < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsLessThanOrEqualTo(String value) {
+            addCriterion("keywords <=", value, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("keywords <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsLike(String value) {
+            addCriterion("keywords like", value, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsNotLike(String value) {
+            addCriterion("keywords not like", value, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsIn(List<String> values) {
+            addCriterion("keywords in", values, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsNotIn(List<String> values) {
+            addCriterion("keywords not in", values, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsBetween(String value1, String value2) {
+            addCriterion("keywords between", value1, value2, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andKeywordsNotBetween(String value1, String value2) {
+            addCriterion("keywords not between", value1, value2, "keywords");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeIsNull() {
+            addCriterion("cansee is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeIsNotNull() {
+            addCriterion("cansee is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeEqualTo(String value) {
+            addCriterion("cansee =", value, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cansee = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeNotEqualTo(String value) {
+            addCriterion("cansee <>", value, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cansee <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeGreaterThan(String value) {
+            addCriterion("cansee >", value, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cansee > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeGreaterThanOrEqualTo(String value) {
+            addCriterion("cansee >=", value, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cansee >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeLessThan(String value) {
+            addCriterion("cansee <", value, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cansee < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeLessThanOrEqualTo(String value) {
+            addCriterion("cansee <=", value, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cansee <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeLike(String value) {
+            addCriterion("cansee like", value, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeNotLike(String value) {
+            addCriterion("cansee not like", value, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeIn(List<String> values) {
+            addCriterion("cansee in", values, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeNotIn(List<String> values) {
+            addCriterion("cansee not in", values, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeBetween(String value1, String value2) {
+            addCriterion("cansee between", value1, value2, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andCanseeNotBetween(String value1, String value2) {
+            addCriterion("cansee not between", value1, value2, "cansee");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankIsNull() {
+            addCriterion("rank is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankIsNotNull() {
+            addCriterion("rank is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankEqualTo(Byte value) {
+            addCriterion("rank =", value, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("rank = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRankNotEqualTo(Byte value) {
+            addCriterion("rank <>", value, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("rank <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRankGreaterThan(Byte value) {
+            addCriterion("rank >", value, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("rank > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRankGreaterThanOrEqualTo(Byte value) {
+            addCriterion("rank >=", value, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("rank >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRankLessThan(Byte value) {
+            addCriterion("rank <", value, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("rank < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRankLessThanOrEqualTo(Byte value) {
+            addCriterion("rank <=", value, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("rank <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRankIn(List<Byte> values) {
+            addCriterion("rank in", values, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankNotIn(List<Byte> values) {
+            addCriterion("rank not in", values, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankBetween(Byte value1, Byte value2) {
+            addCriterion("rank between", value1, value2, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andRankNotBetween(Byte value1, Byte value2) {
+            addCriterion("rank not between", value1, value2, "rank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankIsNull() {
+            addCriterion("check_rank is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankIsNotNull() {
+            addCriterion("check_rank is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankEqualTo(Byte value) {
+            addCriterion("check_rank =", value, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_rank = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankNotEqualTo(Byte value) {
+            addCriterion("check_rank <>", value, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_rank <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankGreaterThan(Byte value) {
+            addCriterion("check_rank >", value, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_rank > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankGreaterThanOrEqualTo(Byte value) {
+            addCriterion("check_rank >=", value, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_rank >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankLessThan(Byte value) {
+            addCriterion("check_rank <", value, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_rank < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankLessThanOrEqualTo(Byte value) {
+            addCriterion("check_rank <=", value, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_rank <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankIn(List<Byte> values) {
+            addCriterion("check_rank in", values, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankNotIn(List<Byte> values) {
+            addCriterion("check_rank not in", values, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankBetween(Byte value1, Byte value2) {
+            addCriterion("check_rank between", value1, value2, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRankNotBetween(Byte value1, Byte value2) {
+            addCriterion("check_rank not between", value1, value2, "checkRank");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkIsNull() {
+            addCriterion("check_remark is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkIsNotNull() {
+            addCriterion("check_remark is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkEqualTo(String value) {
+            addCriterion("check_remark =", value, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_remark = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkNotEqualTo(String value) {
+            addCriterion("check_remark <>", value, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_remark <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkGreaterThan(String value) {
+            addCriterion("check_remark >", value, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_remark > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkGreaterThanOrEqualTo(String value) {
+            addCriterion("check_remark >=", value, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_remark >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkLessThan(String value) {
+            addCriterion("check_remark <", value, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_remark < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkLessThanOrEqualTo(String value) {
+            addCriterion("check_remark <=", value, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("check_remark <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkLike(String value) {
+            addCriterion("check_remark like", value, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkNotLike(String value) {
+            addCriterion("check_remark not like", value, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkIn(List<String> values) {
+            addCriterion("check_remark in", values, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkNotIn(List<String> values) {
+            addCriterion("check_remark not in", values, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkBetween(String value1, String value2) {
+            addCriterion("check_remark between", value1, value2, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCheckRemarkNotBetween(String value1, String value2) {
+            addCriterion("check_remark not between", value1, value2, "checkRemark");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandIsNull() {
+            addCriterion("editor_recommand is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandIsNotNull() {
+            addCriterion("editor_recommand is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandEqualTo(String value) {
+            addCriterion("editor_recommand =", value, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("editor_recommand = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandNotEqualTo(String value) {
+            addCriterion("editor_recommand <>", value, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("editor_recommand <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandGreaterThan(String value) {
+            addCriterion("editor_recommand >", value, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("editor_recommand > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandGreaterThanOrEqualTo(String value) {
+            addCriterion("editor_recommand >=", value, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("editor_recommand >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandLessThan(String value) {
+            addCriterion("editor_recommand <", value, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("editor_recommand < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandLessThanOrEqualTo(String value) {
+            addCriterion("editor_recommand <=", value, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("editor_recommand <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandLike(String value) {
+            addCriterion("editor_recommand like", value, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandNotLike(String value) {
+            addCriterion("editor_recommand not like", value, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandIn(List<String> values) {
+            addCriterion("editor_recommand in", values, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandNotIn(List<String> values) {
+            addCriterion("editor_recommand not in", values, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandBetween(String value1, String value2) {
+            addCriterion("editor_recommand between", value1, value2, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andEditorRecommandNotBetween(String value1, String value2) {
+            addCriterion("editor_recommand not between", value1, value2, "editorRecommand");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsIsNull() {
+            addCriterion("book_tags is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsIsNotNull() {
+            addCriterion("book_tags is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsEqualTo(String value) {
+            addCriterion("book_tags =", value, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_tags = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsNotEqualTo(String value) {
+            addCriterion("book_tags <>", value, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_tags <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsGreaterThan(String value) {
+            addCriterion("book_tags >", value, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_tags > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsGreaterThanOrEqualTo(String value) {
+            addCriterion("book_tags >=", value, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_tags >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsLessThan(String value) {
+            addCriterion("book_tags <", value, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_tags < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsLessThanOrEqualTo(String value) {
+            addCriterion("book_tags <=", value, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("book_tags <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsLike(String value) {
+            addCriterion("book_tags like", value, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsNotLike(String value) {
+            addCriterion("book_tags not like", value, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsIn(List<String> values) {
+            addCriterion("book_tags in", values, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsNotIn(List<String> values) {
+            addCriterion("book_tags not in", values, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsBetween(String value1, String value2) {
+            addCriterion("book_tags between", value1, value2, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookTagsNotBetween(String value1, String value2) {
+            addCriterion("book_tags not between", value1, value2, "bookTags");
+            return (Criteria) this;
+        }
+
+        public Criteria andAIsNull() {
+            addCriterion("a is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAIsNotNull() {
+            addCriterion("a is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAEqualTo(Byte value) {
+            addCriterion("a =", value, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andAEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("a = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andANotEqualTo(Byte value) {
+            addCriterion("a <>", value, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andANotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("a <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAGreaterThan(Byte value) {
+            addCriterion("a >", value, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andAGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("a > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAGreaterThanOrEqualTo(Byte value) {
+            addCriterion("a >=", value, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andAGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("a >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andALessThan(Byte value) {
+            addCriterion("a <", value, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andALessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("a < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andALessThanOrEqualTo(Byte value) {
+            addCriterion("a <=", value, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andALessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("a <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAIn(List<Byte> values) {
+            addCriterion("a in", values, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andANotIn(List<Byte> values) {
+            addCriterion("a not in", values, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andABetween(Byte value1, Byte value2) {
+            addCriterion("a between", value1, value2, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andANotBetween(Byte value1, Byte value2) {
+            addCriterion("a not between", value1, value2, "a");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeIsNull() {
+            addCriterion("expire_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeIsNotNull() {
+            addCriterion("expire_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeEqualTo(Integer value) {
+            addCriterion("expire_time =", value, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("expire_time = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeNotEqualTo(Integer value) {
+            addCriterion("expire_time <>", value, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("expire_time <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeGreaterThan(Integer value) {
+            addCriterion("expire_time >", value, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("expire_time > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("expire_time >=", value, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("expire_time >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeLessThan(Integer value) {
+            addCriterion("expire_time <", value, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("expire_time < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeLessThanOrEqualTo(Integer value) {
+            addCriterion("expire_time <=", value, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("expire_time <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeIn(List<Integer> values) {
+            addCriterion("expire_time in", values, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeNotIn(List<Integer> values) {
+            addCriterion("expire_time not in", values, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeBetween(Integer value1, Integer value2) {
+            addCriterion("expire_time between", value1, value2, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andExpireTimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("expire_time not between", value1, value2, "expireTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdIsNull() {
+            addCriterion("cp_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdIsNotNull() {
+            addCriterion("cp_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdEqualTo(Integer value) {
+            addCriterion("cp_id =", value, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdNotEqualTo(Integer value) {
+            addCriterion("cp_id <>", value, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdGreaterThan(Integer value) {
+            addCriterion("cp_id >", value, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("cp_id >=", value, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdLessThan(Integer value) {
+            addCriterion("cp_id <", value, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdLessThanOrEqualTo(Integer value) {
+            addCriterion("cp_id <=", value, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdIn(List<Integer> values) {
+            addCriterion("cp_id in", values, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdNotIn(List<Integer> values) {
+            addCriterion("cp_id not in", values, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdBetween(Integer value1, Integer value2) {
+            addCriterion("cp_id between", value1, value2, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("cp_id not between", value1, value2, "cpId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameIsNull() {
+            addCriterion("cp_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameIsNotNull() {
+            addCriterion("cp_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameEqualTo(String value) {
+            addCriterion("cp_name =", value, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_name = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameNotEqualTo(String value) {
+            addCriterion("cp_name <>", value, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_name <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameGreaterThan(String value) {
+            addCriterion("cp_name >", value, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_name > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameGreaterThanOrEqualTo(String value) {
+            addCriterion("cp_name >=", value, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_name >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameLessThan(String value) {
+            addCriterion("cp_name <", value, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_name < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameLessThanOrEqualTo(String value) {
+            addCriterion("cp_name <=", value, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("cp_name <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameLike(String value) {
+            addCriterion("cp_name like", value, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameNotLike(String value) {
+            addCriterion("cp_name not like", value, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameIn(List<String> values) {
+            addCriterion("cp_name in", values, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameNotIn(List<String> values) {
+            addCriterion("cp_name not in", values, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameBetween(String value1, String value2) {
+            addCriterion("cp_name between", value1, value2, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andCpNameNotBetween(String value1, String value2) {
+            addCriterion("cp_name not between", value1, value2, "cpName");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsIsNull() {
+            addCriterion("tags is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsIsNotNull() {
+            addCriterion("tags is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsEqualTo(String value) {
+            addCriterion("tags =", value, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("tags = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsNotEqualTo(String value) {
+            addCriterion("tags <>", value, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("tags <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsGreaterThan(String value) {
+            addCriterion("tags >", value, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("tags > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsGreaterThanOrEqualTo(String value) {
+            addCriterion("tags >=", value, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("tags >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsLessThan(String value) {
+            addCriterion("tags <", value, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("tags < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsLessThanOrEqualTo(String value) {
+            addCriterion("tags <=", value, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("tags <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsLike(String value) {
+            addCriterion("tags like", value, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsNotLike(String value) {
+            addCriterion("tags not like", value, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsIn(List<String> values) {
+            addCriterion("tags in", values, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsNotIn(List<String> values) {
+            addCriterion("tags not in", values, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsBetween(String value1, String value2) {
+            addCriterion("tags between", value1, value2, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andTagsNotBetween(String value1, String value2) {
+            addCriterion("tags not between", value1, value2, "tags");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListIsNull() {
+            addCriterion("classify_white_list is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListIsNotNull() {
+            addCriterion("classify_white_list is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListEqualTo(Byte value) {
+            addCriterion("classify_white_list =", value, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("classify_white_list = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListNotEqualTo(Byte value) {
+            addCriterion("classify_white_list <>", value, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("classify_white_list <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListGreaterThan(Byte value) {
+            addCriterion("classify_white_list >", value, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("classify_white_list > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListGreaterThanOrEqualTo(Byte value) {
+            addCriterion("classify_white_list >=", value, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("classify_white_list >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListLessThan(Byte value) {
+            addCriterion("classify_white_list <", value, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("classify_white_list < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListLessThanOrEqualTo(Byte value) {
+            addCriterion("classify_white_list <=", value, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("classify_white_list <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListIn(List<Byte> values) {
+            addCriterion("classify_white_list in", values, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListNotIn(List<Byte> values) {
+            addCriterion("classify_white_list not in", values, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListBetween(Byte value1, Byte value2) {
+            addCriterion("classify_white_list between", value1, value2, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andClassifyWhiteListNotBetween(Byte value1, Byte value2) {
+            addCriterion("classify_white_list not between", value1, value2, "classifyWhiteList");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetIsNull() {
+            addCriterion("put_ad_set is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetIsNotNull() {
+            addCriterion("put_ad_set is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetEqualTo(Byte value) {
+            addCriterion("put_ad_set =", value, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("put_ad_set = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetNotEqualTo(Byte value) {
+            addCriterion("put_ad_set <>", value, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetNotEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("put_ad_set <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetGreaterThan(Byte value) {
+            addCriterion("put_ad_set >", value, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetGreaterThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("put_ad_set > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetGreaterThanOrEqualTo(Byte value) {
+            addCriterion("put_ad_set >=", value, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetGreaterThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("put_ad_set >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetLessThan(Byte value) {
+            addCriterion("put_ad_set <", value, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetLessThanColumn(Book.Column column) {
+            addCriterion(new StringBuilder("put_ad_set < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetLessThanOrEqualTo(Byte value) {
+            addCriterion("put_ad_set <=", value, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetLessThanOrEqualToColumn(Book.Column column) {
+            addCriterion(new StringBuilder("put_ad_set <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetIn(List<Byte> values) {
+            addCriterion("put_ad_set in", values, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetNotIn(List<Byte> values) {
+            addCriterion("put_ad_set not in", values, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetBetween(Byte value1, Byte value2) {
+            addCriterion("put_ad_set between", value1, value2, "putAdSet");
+            return (Criteria) this;
+        }
+
+        public Criteria andPutAdSetNotBetween(Byte value1, Byte value2) {
+            addCriterion("put_ad_set not between", value1, value2, "putAdSet");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table book
+     *
+     * @mbg.generated do_not_delete_during_merge Thu Aug 12 00:28:56 CST 2021
+     */
+    public static class Criteria extends GeneratedCriteria {
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        private BookExample example;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        protected Criteria(BookExample example) {
+            super();
+            this.example = example;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public BookExample example() {
+            return this.example;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        @Deprecated
+        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {
+            if (ifAdd) {
+                add.add(this);
+            }
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Criteria when(boolean condition, ICriteriaWhen then) {
+            if (condition) {
+                then.criteria(this);
+            }
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {
+            if (condition) {
+                then.criteria(this);
+            } else {
+                otherwise.criteria(this);
+            }
+            return this;
+        }
+
+        @Deprecated
+        public interface ICriteriaAdd {
+            /**
+             * This method was generated by MyBatis Generator.
+             * This method corresponds to the database table book
+             *
+             * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+             */
+            Criteria add(Criteria add);
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+
+    public interface ICriteriaWhen {
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        void criteria(Criteria criteria);
+    }
+
+    public interface IExampleWhen {
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table book
+         *
+         * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+         */
+        void example(com.book.server.dao.entity.example.BookExample example);
+    }
+}

+ 164 - 0
book-server/src/main/java/com/book/server/dao/mapper/BookMapper.java

@@ -0,0 +1,164 @@
+package com.book.server.dao.mapper;
+
+import com.book.server.dao.entity.Book;
+import com.book.server.dao.entity.example.BookExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BookMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    long countByExample(BookExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int deleteByExample(BookExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int insert(Book record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int insertSelective(@Param("record") Book record, @Param("selective") Book.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    Book selectOneByExample(BookExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    Book selectOneByExampleSelective(@Param("example") BookExample example, @Param("selective") Book.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    List<Book> selectByExampleSelective(@Param("example") BookExample example, @Param("selective") Book.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    List<Book> selectByExample(BookExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    Book selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") Book.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    Book selectByPrimaryKey(Long id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int updateByExampleSelective(@Param("record") Book record, @Param("example") BookExample example, @Param("selective") Book.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int updateByExample(@Param("record") Book record, @Param("example") BookExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int updateByPrimaryKeySelective(@Param("record") Book record, @Param("selective") Book.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int updateByPrimaryKey(Book record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int batchInsert(@Param("list") List<Book> list);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int batchInsertSelective(@Param("list") List<Book> list, @Param("selective") Book.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int upsert(Book record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table book
+     *
+     * @mbg.generated Thu Aug 12 00:28:56 CST 2021
+     */
+    int upsertSelective(@Param("record") Book record, @Param("selective") Book.Column ... selective);
+}

+ 2 - 2
book-server/src/main/resources/application.yml

@@ -5,8 +5,8 @@ spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://www.tianyunperfect.cn:3306/cps_test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
-    username: cps_test
+    url: jdbc:mysql://www.tianyunperfect.cn:3306/test_cps?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
+    username: test_cps
     password: xKysDECnJLXkMYdJ
     #下面为连接池补充设置
     druid:

+ 1960 - 0
book-server/src/main/resources/mapper/BookMapper.xml

@@ -0,0 +1,1960 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.book.server.dao.mapper.BookMapper">
+  <resultMap id="BaseResultMap" type="com.book.server.dao.entity.Book">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="is_audio" jdbcType="TINYINT" property="isAudio" />
+    <result column="book_category_id" jdbcType="INTEGER" property="bookCategoryId" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="realname" jdbcType="VARCHAR" property="realname" />
+    <result column="title" jdbcType="VARCHAR" property="title" />
+    <result column="author" jdbcType="VARCHAR" property="author" />
+    <result column="image" jdbcType="VARCHAR" property="image" />
+    <result column="big_cover" jdbcType="VARCHAR" property="bigCover" />
+    <result column="small_cover" jdbcType="VARCHAR" property="smallCover" />
+    <result column="description" jdbcType="VARCHAR" property="description" />
+    <result column="idx" jdbcType="INTEGER" property="idx" />
+    <result column="referral_num" jdbcType="TINYINT" property="referralNum" />
+    <result column="idxx" jdbcType="INTEGER" property="idxx" />
+    <result column="state" jdbcType="CHAR" property="state" />
+    <result column="free_stime" jdbcType="INTEGER" property="freeStime" />
+    <result column="free_etime" jdbcType="INTEGER" property="freeEtime" />
+    <result column="sex" jdbcType="CHAR" property="sex" />
+    <result column="billing_type" jdbcType="CHAR" property="billingType" />
+    <result column="price" jdbcType="INTEGER" property="price" />
+    <result column="app_price" jdbcType="INTEGER" property="appPrice" />
+    <result column="is_finish" jdbcType="CHAR" property="isFinish" />
+    <result column="free_chapter_num" jdbcType="INTEGER" property="freeChapterNum" />
+    <result column="word_count" jdbcType="VARCHAR" property="wordCount" />
+    <result column="chapter_num" jdbcType="INTEGER" property="chapterNum" />
+    <result column="first_chapter_id" jdbcType="BIGINT" property="firstChapterId" />
+    <result column="first_chapter_name" jdbcType="VARCHAR" property="firstChapterName" />
+    <result column="last_chapter_id" jdbcType="BIGINT" property="lastChapterId" />
+    <result column="last_chapter_name" jdbcType="VARCHAR" property="lastChapterName" />
+    <result column="last_chapter_utime" jdbcType="INTEGER" property="lastChapterUtime" />
+    <result column="read_num" jdbcType="INTEGER" property="readNum" />
+    <result column="article_chapter_order" jdbcType="INTEGER" property="articleChapterOrder" />
+    <result column="attent_chapter_order" jdbcType="INTEGER" property="attentChapterOrder" />
+    <result column="corner_mark" jdbcType="CHAR" property="cornerMark" />
+    <result column="recommand_book_id" jdbcType="BIGINT" property="recommandBookId" />
+    <result column="createtime" jdbcType="INTEGER" property="createtime" />
+    <result column="updatetime" jdbcType="INTEGER" property="updatetime" />
+    <result column="keywords" jdbcType="VARCHAR" property="keywords" />
+    <result column="cansee" jdbcType="CHAR" property="cansee" />
+    <result column="rank" jdbcType="TINYINT" property="rank" />
+    <result column="check_rank" jdbcType="TINYINT" property="checkRank" />
+    <result column="check_remark" jdbcType="VARCHAR" property="checkRemark" />
+    <result column="editor_recommand" jdbcType="VARCHAR" property="editorRecommand" />
+    <result column="book_tags" jdbcType="VARCHAR" property="bookTags" />
+    <result column="a" jdbcType="TINYINT" property="a" />
+    <result column="expire_time" jdbcType="INTEGER" property="expireTime" />
+    <result column="cp_id" jdbcType="INTEGER" property="cpId" />
+    <result column="cp_name" jdbcType="VARCHAR" property="cpName" />
+    <result column="tags" jdbcType="VARCHAR" property="tags" />
+    <result column="classify_white_list" jdbcType="TINYINT" property="classifyWhiteList" />
+    <result column="put_ad_set" jdbcType="TINYINT" property="putAdSet" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    id, is_audio, book_category_id, name, realname, title, author, image, big_cover, 
+    small_cover, description, idx, referral_num, idxx, state, free_stime, free_etime, 
+    sex, billing_type, price, app_price, is_finish, free_chapter_num, word_count, chapter_num, 
+    first_chapter_id, first_chapter_name, last_chapter_id, last_chapter_name, last_chapter_utime, 
+    read_num, article_chapter_order, attent_chapter_order, corner_mark, recommand_book_id, 
+    createtime, updatetime, keywords, cansee, rank, check_rank, check_remark, editor_recommand, 
+    book_tags, a, expire_time, cp_id, cp_name, tags, classify_white_list, put_ad_set
+  </sql>
+  <select id="selectByExample" parameterType="com.book.server.dao.entity.example.BookExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from book
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    <if test="rows != null">
+      <if test="offset != null">
+        limit ${offset}, ${rows}
+      </if>
+      <if test="offset == null">
+        limit ${rows}
+      </if>
+    </if>
+  </select>
+  <select id="selectByExampleSelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    select
+    <if test="example != null and example.distinct">
+      distinct
+    </if>
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from book
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+    <if test="example != null and example.orderByClause != null">
+      order by ${example.orderByClause}
+    </if>
+    <if test="example != null and example.rows != null">
+      <if test="example.offset != null">
+        limit ${example.offset}, ${example.rows}
+      </if>
+      <if test="example.offset == null">
+        limit ${example.rows}
+      </if>
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from book
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <select id="selectByPrimaryKeySelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    select
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from book
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    delete from book
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.book.server.dao.entity.example.BookExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    delete from book
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.book.server.dao.entity.Book">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    insert into book (id, is_audio, book_category_id, 
+      name, realname, title, 
+      author, image, big_cover, 
+      small_cover, description, idx, 
+      referral_num, idxx, state, 
+      free_stime, free_etime, sex, 
+      billing_type, price, app_price, 
+      is_finish, free_chapter_num, word_count, 
+      chapter_num, first_chapter_id, first_chapter_name, 
+      last_chapter_id, last_chapter_name, last_chapter_utime, 
+      read_num, article_chapter_order, attent_chapter_order, 
+      corner_mark, recommand_book_id, createtime, 
+      updatetime, keywords, cansee, 
+      rank, check_rank, check_remark, 
+      editor_recommand, book_tags, a, 
+      expire_time, cp_id, cp_name, 
+      tags, classify_white_list, put_ad_set
+      )
+    values (#{id,jdbcType=BIGINT}, #{isAudio,jdbcType=TINYINT}, #{bookCategoryId,jdbcType=INTEGER}, 
+      #{name,jdbcType=VARCHAR}, #{realname,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, 
+      #{author,jdbcType=VARCHAR}, #{image,jdbcType=VARCHAR}, #{bigCover,jdbcType=VARCHAR}, 
+      #{smallCover,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{idx,jdbcType=INTEGER}, 
+      #{referralNum,jdbcType=TINYINT}, #{idxx,jdbcType=INTEGER}, #{state,jdbcType=CHAR}, 
+      #{freeStime,jdbcType=INTEGER}, #{freeEtime,jdbcType=INTEGER}, #{sex,jdbcType=CHAR}, 
+      #{billingType,jdbcType=CHAR}, #{price,jdbcType=INTEGER}, #{appPrice,jdbcType=INTEGER}, 
+      #{isFinish,jdbcType=CHAR}, #{freeChapterNum,jdbcType=INTEGER}, #{wordCount,jdbcType=VARCHAR}, 
+      #{chapterNum,jdbcType=INTEGER}, #{firstChapterId,jdbcType=BIGINT}, #{firstChapterName,jdbcType=VARCHAR}, 
+      #{lastChapterId,jdbcType=BIGINT}, #{lastChapterName,jdbcType=VARCHAR}, #{lastChapterUtime,jdbcType=INTEGER}, 
+      #{readNum,jdbcType=INTEGER}, #{articleChapterOrder,jdbcType=INTEGER}, #{attentChapterOrder,jdbcType=INTEGER}, 
+      #{cornerMark,jdbcType=CHAR}, #{recommandBookId,jdbcType=BIGINT}, #{createtime,jdbcType=INTEGER}, 
+      #{updatetime,jdbcType=INTEGER}, #{keywords,jdbcType=VARCHAR}, #{cansee,jdbcType=CHAR}, 
+      #{rank,jdbcType=TINYINT}, #{checkRank,jdbcType=TINYINT}, #{checkRemark,jdbcType=VARCHAR}, 
+      #{editorRecommand,jdbcType=VARCHAR}, #{bookTags,jdbcType=VARCHAR}, #{a,jdbcType=TINYINT}, 
+      #{expireTime,jdbcType=INTEGER}, #{cpId,jdbcType=INTEGER}, #{cpName,jdbcType=VARCHAR}, 
+      #{tags,jdbcType=VARCHAR}, #{classifyWhiteList,jdbcType=TINYINT}, #{putAdSet,jdbcType=TINYINT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    insert into book
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          ${column.escapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            id,
+          </if>
+          <if test="record.isAudio != null">
+            is_audio,
+          </if>
+          <if test="record.bookCategoryId != null">
+            book_category_id,
+          </if>
+          <if test="record.name != null">
+            name,
+          </if>
+          <if test="record.realname != null">
+            realname,
+          </if>
+          <if test="record.title != null">
+            title,
+          </if>
+          <if test="record.author != null">
+            author,
+          </if>
+          <if test="record.image != null">
+            image,
+          </if>
+          <if test="record.bigCover != null">
+            big_cover,
+          </if>
+          <if test="record.smallCover != null">
+            small_cover,
+          </if>
+          <if test="record.description != null">
+            description,
+          </if>
+          <if test="record.idx != null">
+            idx,
+          </if>
+          <if test="record.referralNum != null">
+            referral_num,
+          </if>
+          <if test="record.idxx != null">
+            idxx,
+          </if>
+          <if test="record.state != null">
+            state,
+          </if>
+          <if test="record.freeStime != null">
+            free_stime,
+          </if>
+          <if test="record.freeEtime != null">
+            free_etime,
+          </if>
+          <if test="record.sex != null">
+            sex,
+          </if>
+          <if test="record.billingType != null">
+            billing_type,
+          </if>
+          <if test="record.price != null">
+            price,
+          </if>
+          <if test="record.appPrice != null">
+            app_price,
+          </if>
+          <if test="record.isFinish != null">
+            is_finish,
+          </if>
+          <if test="record.freeChapterNum != null">
+            free_chapter_num,
+          </if>
+          <if test="record.wordCount != null">
+            word_count,
+          </if>
+          <if test="record.chapterNum != null">
+            chapter_num,
+          </if>
+          <if test="record.firstChapterId != null">
+            first_chapter_id,
+          </if>
+          <if test="record.firstChapterName != null">
+            first_chapter_name,
+          </if>
+          <if test="record.lastChapterId != null">
+            last_chapter_id,
+          </if>
+          <if test="record.lastChapterName != null">
+            last_chapter_name,
+          </if>
+          <if test="record.lastChapterUtime != null">
+            last_chapter_utime,
+          </if>
+          <if test="record.readNum != null">
+            read_num,
+          </if>
+          <if test="record.articleChapterOrder != null">
+            article_chapter_order,
+          </if>
+          <if test="record.attentChapterOrder != null">
+            attent_chapter_order,
+          </if>
+          <if test="record.cornerMark != null">
+            corner_mark,
+          </if>
+          <if test="record.recommandBookId != null">
+            recommand_book_id,
+          </if>
+          <if test="record.createtime != null">
+            createtime,
+          </if>
+          <if test="record.updatetime != null">
+            updatetime,
+          </if>
+          <if test="record.keywords != null">
+            keywords,
+          </if>
+          <if test="record.cansee != null">
+            cansee,
+          </if>
+          <if test="record.rank != null">
+            rank,
+          </if>
+          <if test="record.checkRank != null">
+            check_rank,
+          </if>
+          <if test="record.checkRemark != null">
+            check_remark,
+          </if>
+          <if test="record.editorRecommand != null">
+            editor_recommand,
+          </if>
+          <if test="record.bookTags != null">
+            book_tags,
+          </if>
+          <if test="record.a != null">
+            a,
+          </if>
+          <if test="record.expireTime != null">
+            expire_time,
+          </if>
+          <if test="record.cpId != null">
+            cp_id,
+          </if>
+          <if test="record.cpName != null">
+            cp_name,
+          </if>
+          <if test="record.tags != null">
+            tags,
+          </if>
+          <if test="record.classifyWhiteList != null">
+            classify_white_list,
+          </if>
+          <if test="record.putAdSet != null">
+            put_ad_set,
+          </if>
+        </trim>
+        <trim prefix="(" suffix=")" suffixOverrides="," />
+      </otherwise>
+    </choose>
+    values
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            #{record.id,jdbcType=BIGINT},
+          </if>
+          <if test="record.isAudio != null">
+            #{record.isAudio,jdbcType=TINYINT},
+          </if>
+          <if test="record.bookCategoryId != null">
+            #{record.bookCategoryId,jdbcType=INTEGER},
+          </if>
+          <if test="record.name != null">
+            #{record.name,jdbcType=VARCHAR},
+          </if>
+          <if test="record.realname != null">
+            #{record.realname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.title != null">
+            #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.author != null">
+            #{record.author,jdbcType=VARCHAR},
+          </if>
+          <if test="record.image != null">
+            #{record.image,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bigCover != null">
+            #{record.bigCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.smallCover != null">
+            #{record.smallCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.description != null">
+            #{record.description,jdbcType=VARCHAR},
+          </if>
+          <if test="record.idx != null">
+            #{record.idx,jdbcType=INTEGER},
+          </if>
+          <if test="record.referralNum != null">
+            #{record.referralNum,jdbcType=TINYINT},
+          </if>
+          <if test="record.idxx != null">
+            #{record.idxx,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.freeStime != null">
+            #{record.freeStime,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeEtime != null">
+            #{record.freeEtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sex != null">
+            #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.billingType != null">
+            #{record.billingType,jdbcType=CHAR},
+          </if>
+          <if test="record.price != null">
+            #{record.price,jdbcType=INTEGER},
+          </if>
+          <if test="record.appPrice != null">
+            #{record.appPrice,jdbcType=INTEGER},
+          </if>
+          <if test="record.isFinish != null">
+            #{record.isFinish,jdbcType=CHAR},
+          </if>
+          <if test="record.freeChapterNum != null">
+            #{record.freeChapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.wordCount != null">
+            #{record.wordCount,jdbcType=VARCHAR},
+          </if>
+          <if test="record.chapterNum != null">
+            #{record.chapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.firstChapterId != null">
+            #{record.firstChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.firstChapterName != null">
+            #{record.firstChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterId != null">
+            #{record.lastChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.lastChapterName != null">
+            #{record.lastChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterUtime != null">
+            #{record.lastChapterUtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.readNum != null">
+            #{record.readNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.articleChapterOrder != null">
+            #{record.articleChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.attentChapterOrder != null">
+            #{record.attentChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.cornerMark != null">
+            #{record.cornerMark,jdbcType=CHAR},
+          </if>
+          <if test="record.recommandBookId != null">
+            #{record.recommandBookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.createtime != null">
+            #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.keywords != null">
+            #{record.keywords,jdbcType=VARCHAR},
+          </if>
+          <if test="record.cansee != null">
+            #{record.cansee,jdbcType=CHAR},
+          </if>
+          <if test="record.rank != null">
+            #{record.rank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRank != null">
+            #{record.checkRank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRemark != null">
+            #{record.checkRemark,jdbcType=VARCHAR},
+          </if>
+          <if test="record.editorRecommand != null">
+            #{record.editorRecommand,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookTags != null">
+            #{record.bookTags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.a != null">
+            #{record.a,jdbcType=TINYINT},
+          </if>
+          <if test="record.expireTime != null">
+            #{record.expireTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpId != null">
+            #{record.cpId,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpName != null">
+            #{record.cpName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.tags != null">
+            #{record.tags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.classifyWhiteList != null">
+            #{record.classifyWhiteList,jdbcType=TINYINT},
+          </if>
+          <if test="record.putAdSet != null">
+            #{record.putAdSet,jdbcType=TINYINT},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+  </insert>
+  <select id="countByExample" parameterType="com.book.server.dao.entity.example.BookExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    select count(*) from book
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    update book
+    SET
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.id != null">
+            id = #{record.id,jdbcType=BIGINT},
+          </if>
+          <if test="record.isAudio != null">
+            is_audio = #{record.isAudio,jdbcType=TINYINT},
+          </if>
+          <if test="record.bookCategoryId != null">
+            book_category_id = #{record.bookCategoryId,jdbcType=INTEGER},
+          </if>
+          <if test="record.name != null">
+            name = #{record.name,jdbcType=VARCHAR},
+          </if>
+          <if test="record.realname != null">
+            realname = #{record.realname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.title != null">
+            title = #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.author != null">
+            author = #{record.author,jdbcType=VARCHAR},
+          </if>
+          <if test="record.image != null">
+            image = #{record.image,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bigCover != null">
+            big_cover = #{record.bigCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.smallCover != null">
+            small_cover = #{record.smallCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.description != null">
+            description = #{record.description,jdbcType=VARCHAR},
+          </if>
+          <if test="record.idx != null">
+            idx = #{record.idx,jdbcType=INTEGER},
+          </if>
+          <if test="record.referralNum != null">
+            referral_num = #{record.referralNum,jdbcType=TINYINT},
+          </if>
+          <if test="record.idxx != null">
+            idxx = #{record.idxx,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            state = #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.freeStime != null">
+            free_stime = #{record.freeStime,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeEtime != null">
+            free_etime = #{record.freeEtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sex != null">
+            sex = #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.billingType != null">
+            billing_type = #{record.billingType,jdbcType=CHAR},
+          </if>
+          <if test="record.price != null">
+            price = #{record.price,jdbcType=INTEGER},
+          </if>
+          <if test="record.appPrice != null">
+            app_price = #{record.appPrice,jdbcType=INTEGER},
+          </if>
+          <if test="record.isFinish != null">
+            is_finish = #{record.isFinish,jdbcType=CHAR},
+          </if>
+          <if test="record.freeChapterNum != null">
+            free_chapter_num = #{record.freeChapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.wordCount != null">
+            word_count = #{record.wordCount,jdbcType=VARCHAR},
+          </if>
+          <if test="record.chapterNum != null">
+            chapter_num = #{record.chapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.firstChapterId != null">
+            first_chapter_id = #{record.firstChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.firstChapterName != null">
+            first_chapter_name = #{record.firstChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterId != null">
+            last_chapter_id = #{record.lastChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.lastChapterName != null">
+            last_chapter_name = #{record.lastChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterUtime != null">
+            last_chapter_utime = #{record.lastChapterUtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.readNum != null">
+            read_num = #{record.readNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.articleChapterOrder != null">
+            article_chapter_order = #{record.articleChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.attentChapterOrder != null">
+            attent_chapter_order = #{record.attentChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.cornerMark != null">
+            corner_mark = #{record.cornerMark,jdbcType=CHAR},
+          </if>
+          <if test="record.recommandBookId != null">
+            recommand_book_id = #{record.recommandBookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.keywords != null">
+            keywords = #{record.keywords,jdbcType=VARCHAR},
+          </if>
+          <if test="record.cansee != null">
+            cansee = #{record.cansee,jdbcType=CHAR},
+          </if>
+          <if test="record.rank != null">
+            rank = #{record.rank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRank != null">
+            check_rank = #{record.checkRank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRemark != null">
+            check_remark = #{record.checkRemark,jdbcType=VARCHAR},
+          </if>
+          <if test="record.editorRecommand != null">
+            editor_recommand = #{record.editorRecommand,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookTags != null">
+            book_tags = #{record.bookTags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.a != null">
+            a = #{record.a,jdbcType=TINYINT},
+          </if>
+          <if test="record.expireTime != null">
+            expire_time = #{record.expireTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpId != null">
+            cp_id = #{record.cpId,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpName != null">
+            cp_name = #{record.cpName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.tags != null">
+            tags = #{record.tags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.classifyWhiteList != null">
+            classify_white_list = #{record.classifyWhiteList,jdbcType=TINYINT},
+          </if>
+          <if test="record.putAdSet != null">
+            put_ad_set = #{record.putAdSet,jdbcType=TINYINT},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    update book
+    set id = #{record.id,jdbcType=BIGINT},
+      is_audio = #{record.isAudio,jdbcType=TINYINT},
+      book_category_id = #{record.bookCategoryId,jdbcType=INTEGER},
+      name = #{record.name,jdbcType=VARCHAR},
+      realname = #{record.realname,jdbcType=VARCHAR},
+      title = #{record.title,jdbcType=VARCHAR},
+      author = #{record.author,jdbcType=VARCHAR},
+      image = #{record.image,jdbcType=VARCHAR},
+      big_cover = #{record.bigCover,jdbcType=VARCHAR},
+      small_cover = #{record.smallCover,jdbcType=VARCHAR},
+      description = #{record.description,jdbcType=VARCHAR},
+      idx = #{record.idx,jdbcType=INTEGER},
+      referral_num = #{record.referralNum,jdbcType=TINYINT},
+      idxx = #{record.idxx,jdbcType=INTEGER},
+      state = #{record.state,jdbcType=CHAR},
+      free_stime = #{record.freeStime,jdbcType=INTEGER},
+      free_etime = #{record.freeEtime,jdbcType=INTEGER},
+      sex = #{record.sex,jdbcType=CHAR},
+      billing_type = #{record.billingType,jdbcType=CHAR},
+      price = #{record.price,jdbcType=INTEGER},
+      app_price = #{record.appPrice,jdbcType=INTEGER},
+      is_finish = #{record.isFinish,jdbcType=CHAR},
+      free_chapter_num = #{record.freeChapterNum,jdbcType=INTEGER},
+      word_count = #{record.wordCount,jdbcType=VARCHAR},
+      chapter_num = #{record.chapterNum,jdbcType=INTEGER},
+      first_chapter_id = #{record.firstChapterId,jdbcType=BIGINT},
+      first_chapter_name = #{record.firstChapterName,jdbcType=VARCHAR},
+      last_chapter_id = #{record.lastChapterId,jdbcType=BIGINT},
+      last_chapter_name = #{record.lastChapterName,jdbcType=VARCHAR},
+      last_chapter_utime = #{record.lastChapterUtime,jdbcType=INTEGER},
+      read_num = #{record.readNum,jdbcType=INTEGER},
+      article_chapter_order = #{record.articleChapterOrder,jdbcType=INTEGER},
+      attent_chapter_order = #{record.attentChapterOrder,jdbcType=INTEGER},
+      corner_mark = #{record.cornerMark,jdbcType=CHAR},
+      recommand_book_id = #{record.recommandBookId,jdbcType=BIGINT},
+      createtime = #{record.createtime,jdbcType=INTEGER},
+      updatetime = #{record.updatetime,jdbcType=INTEGER},
+      keywords = #{record.keywords,jdbcType=VARCHAR},
+      cansee = #{record.cansee,jdbcType=CHAR},
+      rank = #{record.rank,jdbcType=TINYINT},
+      check_rank = #{record.checkRank,jdbcType=TINYINT},
+      check_remark = #{record.checkRemark,jdbcType=VARCHAR},
+      editor_recommand = #{record.editorRecommand,jdbcType=VARCHAR},
+      book_tags = #{record.bookTags,jdbcType=VARCHAR},
+      a = #{record.a,jdbcType=TINYINT},
+      expire_time = #{record.expireTime,jdbcType=INTEGER},
+      cp_id = #{record.cpId,jdbcType=INTEGER},
+      cp_name = #{record.cpName,jdbcType=VARCHAR},
+      tags = #{record.tags,jdbcType=VARCHAR},
+      classify_white_list = #{record.classifyWhiteList,jdbcType=TINYINT},
+      put_ad_set = #{record.putAdSet,jdbcType=TINYINT}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    update book
+    SET
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.isAudio != null">
+            is_audio = #{record.isAudio,jdbcType=TINYINT},
+          </if>
+          <if test="record.bookCategoryId != null">
+            book_category_id = #{record.bookCategoryId,jdbcType=INTEGER},
+          </if>
+          <if test="record.name != null">
+            name = #{record.name,jdbcType=VARCHAR},
+          </if>
+          <if test="record.realname != null">
+            realname = #{record.realname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.title != null">
+            title = #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.author != null">
+            author = #{record.author,jdbcType=VARCHAR},
+          </if>
+          <if test="record.image != null">
+            image = #{record.image,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bigCover != null">
+            big_cover = #{record.bigCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.smallCover != null">
+            small_cover = #{record.smallCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.description != null">
+            description = #{record.description,jdbcType=VARCHAR},
+          </if>
+          <if test="record.idx != null">
+            idx = #{record.idx,jdbcType=INTEGER},
+          </if>
+          <if test="record.referralNum != null">
+            referral_num = #{record.referralNum,jdbcType=TINYINT},
+          </if>
+          <if test="record.idxx != null">
+            idxx = #{record.idxx,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            state = #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.freeStime != null">
+            free_stime = #{record.freeStime,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeEtime != null">
+            free_etime = #{record.freeEtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sex != null">
+            sex = #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.billingType != null">
+            billing_type = #{record.billingType,jdbcType=CHAR},
+          </if>
+          <if test="record.price != null">
+            price = #{record.price,jdbcType=INTEGER},
+          </if>
+          <if test="record.appPrice != null">
+            app_price = #{record.appPrice,jdbcType=INTEGER},
+          </if>
+          <if test="record.isFinish != null">
+            is_finish = #{record.isFinish,jdbcType=CHAR},
+          </if>
+          <if test="record.freeChapterNum != null">
+            free_chapter_num = #{record.freeChapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.wordCount != null">
+            word_count = #{record.wordCount,jdbcType=VARCHAR},
+          </if>
+          <if test="record.chapterNum != null">
+            chapter_num = #{record.chapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.firstChapterId != null">
+            first_chapter_id = #{record.firstChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.firstChapterName != null">
+            first_chapter_name = #{record.firstChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterId != null">
+            last_chapter_id = #{record.lastChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.lastChapterName != null">
+            last_chapter_name = #{record.lastChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterUtime != null">
+            last_chapter_utime = #{record.lastChapterUtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.readNum != null">
+            read_num = #{record.readNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.articleChapterOrder != null">
+            article_chapter_order = #{record.articleChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.attentChapterOrder != null">
+            attent_chapter_order = #{record.attentChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.cornerMark != null">
+            corner_mark = #{record.cornerMark,jdbcType=CHAR},
+          </if>
+          <if test="record.recommandBookId != null">
+            recommand_book_id = #{record.recommandBookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.keywords != null">
+            keywords = #{record.keywords,jdbcType=VARCHAR},
+          </if>
+          <if test="record.cansee != null">
+            cansee = #{record.cansee,jdbcType=CHAR},
+          </if>
+          <if test="record.rank != null">
+            rank = #{record.rank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRank != null">
+            check_rank = #{record.checkRank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRemark != null">
+            check_remark = #{record.checkRemark,jdbcType=VARCHAR},
+          </if>
+          <if test="record.editorRecommand != null">
+            editor_recommand = #{record.editorRecommand,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookTags != null">
+            book_tags = #{record.bookTags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.a != null">
+            a = #{record.a,jdbcType=TINYINT},
+          </if>
+          <if test="record.expireTime != null">
+            expire_time = #{record.expireTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpId != null">
+            cp_id = #{record.cpId,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpName != null">
+            cp_name = #{record.cpName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.tags != null">
+            tags = #{record.tags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.classifyWhiteList != null">
+            classify_white_list = #{record.classifyWhiteList,jdbcType=TINYINT},
+          </if>
+          <if test="record.putAdSet != null">
+            put_ad_set = #{record.putAdSet,jdbcType=TINYINT},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    where id = #{record.id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.book.server.dao.entity.Book">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    update book
+    set is_audio = #{isAudio,jdbcType=TINYINT},
+      book_category_id = #{bookCategoryId,jdbcType=INTEGER},
+      name = #{name,jdbcType=VARCHAR},
+      realname = #{realname,jdbcType=VARCHAR},
+      title = #{title,jdbcType=VARCHAR},
+      author = #{author,jdbcType=VARCHAR},
+      image = #{image,jdbcType=VARCHAR},
+      big_cover = #{bigCover,jdbcType=VARCHAR},
+      small_cover = #{smallCover,jdbcType=VARCHAR},
+      description = #{description,jdbcType=VARCHAR},
+      idx = #{idx,jdbcType=INTEGER},
+      referral_num = #{referralNum,jdbcType=TINYINT},
+      idxx = #{idxx,jdbcType=INTEGER},
+      state = #{state,jdbcType=CHAR},
+      free_stime = #{freeStime,jdbcType=INTEGER},
+      free_etime = #{freeEtime,jdbcType=INTEGER},
+      sex = #{sex,jdbcType=CHAR},
+      billing_type = #{billingType,jdbcType=CHAR},
+      price = #{price,jdbcType=INTEGER},
+      app_price = #{appPrice,jdbcType=INTEGER},
+      is_finish = #{isFinish,jdbcType=CHAR},
+      free_chapter_num = #{freeChapterNum,jdbcType=INTEGER},
+      word_count = #{wordCount,jdbcType=VARCHAR},
+      chapter_num = #{chapterNum,jdbcType=INTEGER},
+      first_chapter_id = #{firstChapterId,jdbcType=BIGINT},
+      first_chapter_name = #{firstChapterName,jdbcType=VARCHAR},
+      last_chapter_id = #{lastChapterId,jdbcType=BIGINT},
+      last_chapter_name = #{lastChapterName,jdbcType=VARCHAR},
+      last_chapter_utime = #{lastChapterUtime,jdbcType=INTEGER},
+      read_num = #{readNum,jdbcType=INTEGER},
+      article_chapter_order = #{articleChapterOrder,jdbcType=INTEGER},
+      attent_chapter_order = #{attentChapterOrder,jdbcType=INTEGER},
+      corner_mark = #{cornerMark,jdbcType=CHAR},
+      recommand_book_id = #{recommandBookId,jdbcType=BIGINT},
+      createtime = #{createtime,jdbcType=INTEGER},
+      updatetime = #{updatetime,jdbcType=INTEGER},
+      keywords = #{keywords,jdbcType=VARCHAR},
+      cansee = #{cansee,jdbcType=CHAR},
+      rank = #{rank,jdbcType=TINYINT},
+      check_rank = #{checkRank,jdbcType=TINYINT},
+      check_remark = #{checkRemark,jdbcType=VARCHAR},
+      editor_recommand = #{editorRecommand,jdbcType=VARCHAR},
+      book_tags = #{bookTags,jdbcType=VARCHAR},
+      a = #{a,jdbcType=TINYINT},
+      expire_time = #{expireTime,jdbcType=INTEGER},
+      cp_id = #{cpId,jdbcType=INTEGER},
+      cp_name = #{cpName,jdbcType=VARCHAR},
+      tags = #{tags,jdbcType=VARCHAR},
+      classify_white_list = #{classifyWhiteList,jdbcType=TINYINT},
+      put_ad_set = #{putAdSet,jdbcType=TINYINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <select id="selectOneByExample" parameterType="com.book.server.dao.entity.example.BookExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    select
+    <include refid="Base_Column_List" />
+    from book
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    limit 1
+  </select>
+  <select id="selectOneByExampleSelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    select
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from book
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+    <if test="example != null and example.orderByClause != null">
+      order by ${example.orderByClause}
+    </if>
+    limit 1
+  </select>
+  <insert id="batchInsert" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    insert into book
+    (id, is_audio, book_category_id, name, realname, title, author, image, big_cover, 
+      small_cover, description, idx, referral_num, idxx, state, free_stime, free_etime, 
+      sex, billing_type, price, app_price, is_finish, free_chapter_num, word_count, chapter_num, 
+      first_chapter_id, first_chapter_name, last_chapter_id, last_chapter_name, last_chapter_utime, 
+      read_num, article_chapter_order, attent_chapter_order, corner_mark, recommand_book_id, 
+      createtime, updatetime, keywords, cansee, rank, check_rank, check_remark, editor_recommand, 
+      book_tags, a, expire_time, cp_id, cp_name, tags, classify_white_list, put_ad_set
+      )
+    values
+    <foreach collection="list" item="item" separator=",">
+      (#{item.id,jdbcType=BIGINT}, #{item.isAudio,jdbcType=TINYINT}, #{item.bookCategoryId,jdbcType=INTEGER}, 
+        #{item.name,jdbcType=VARCHAR}, #{item.realname,jdbcType=VARCHAR}, #{item.title,jdbcType=VARCHAR}, 
+        #{item.author,jdbcType=VARCHAR}, #{item.image,jdbcType=VARCHAR}, #{item.bigCover,jdbcType=VARCHAR}, 
+        #{item.smallCover,jdbcType=VARCHAR}, #{item.description,jdbcType=VARCHAR}, #{item.idx,jdbcType=INTEGER}, 
+        #{item.referralNum,jdbcType=TINYINT}, #{item.idxx,jdbcType=INTEGER}, #{item.state,jdbcType=CHAR}, 
+        #{item.freeStime,jdbcType=INTEGER}, #{item.freeEtime,jdbcType=INTEGER}, #{item.sex,jdbcType=CHAR}, 
+        #{item.billingType,jdbcType=CHAR}, #{item.price,jdbcType=INTEGER}, #{item.appPrice,jdbcType=INTEGER}, 
+        #{item.isFinish,jdbcType=CHAR}, #{item.freeChapterNum,jdbcType=INTEGER}, #{item.wordCount,jdbcType=VARCHAR}, 
+        #{item.chapterNum,jdbcType=INTEGER}, #{item.firstChapterId,jdbcType=BIGINT}, #{item.firstChapterName,jdbcType=VARCHAR}, 
+        #{item.lastChapterId,jdbcType=BIGINT}, #{item.lastChapterName,jdbcType=VARCHAR}, 
+        #{item.lastChapterUtime,jdbcType=INTEGER}, #{item.readNum,jdbcType=INTEGER}, #{item.articleChapterOrder,jdbcType=INTEGER}, 
+        #{item.attentChapterOrder,jdbcType=INTEGER}, #{item.cornerMark,jdbcType=CHAR}, 
+        #{item.recommandBookId,jdbcType=BIGINT}, #{item.createtime,jdbcType=INTEGER}, #{item.updatetime,jdbcType=INTEGER}, 
+        #{item.keywords,jdbcType=VARCHAR}, #{item.cansee,jdbcType=CHAR}, #{item.rank,jdbcType=TINYINT}, 
+        #{item.checkRank,jdbcType=TINYINT}, #{item.checkRemark,jdbcType=VARCHAR}, #{item.editorRecommand,jdbcType=VARCHAR}, 
+        #{item.bookTags,jdbcType=VARCHAR}, #{item.a,jdbcType=TINYINT}, #{item.expireTime,jdbcType=INTEGER}, 
+        #{item.cpId,jdbcType=INTEGER}, #{item.cpName,jdbcType=VARCHAR}, #{item.tags,jdbcType=VARCHAR}, 
+        #{item.classifyWhiteList,jdbcType=TINYINT}, #{item.putAdSet,jdbcType=TINYINT})
+    </foreach>
+  </insert>
+  <insert id="batchInsertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    insert into book (
+    <foreach collection="selective" item="column" separator=",">
+      ${column.escapedColumnName}
+    </foreach>
+    )
+    values
+    <foreach collection="list" item="item" separator=",">
+      (
+      <foreach collection="selective" item="column" separator=",">
+        <if test="'id'.toString() == column.value">
+          #{item.id,jdbcType=BIGINT}
+        </if>
+        <if test="'is_audio'.toString() == column.value">
+          #{item.isAudio,jdbcType=TINYINT}
+        </if>
+        <if test="'book_category_id'.toString() == column.value">
+          #{item.bookCategoryId,jdbcType=INTEGER}
+        </if>
+        <if test="'name'.toString() == column.value">
+          #{item.name,jdbcType=VARCHAR}
+        </if>
+        <if test="'realname'.toString() == column.value">
+          #{item.realname,jdbcType=VARCHAR}
+        </if>
+        <if test="'title'.toString() == column.value">
+          #{item.title,jdbcType=VARCHAR}
+        </if>
+        <if test="'author'.toString() == column.value">
+          #{item.author,jdbcType=VARCHAR}
+        </if>
+        <if test="'image'.toString() == column.value">
+          #{item.image,jdbcType=VARCHAR}
+        </if>
+        <if test="'big_cover'.toString() == column.value">
+          #{item.bigCover,jdbcType=VARCHAR}
+        </if>
+        <if test="'small_cover'.toString() == column.value">
+          #{item.smallCover,jdbcType=VARCHAR}
+        </if>
+        <if test="'description'.toString() == column.value">
+          #{item.description,jdbcType=VARCHAR}
+        </if>
+        <if test="'idx'.toString() == column.value">
+          #{item.idx,jdbcType=INTEGER}
+        </if>
+        <if test="'referral_num'.toString() == column.value">
+          #{item.referralNum,jdbcType=TINYINT}
+        </if>
+        <if test="'idxx'.toString() == column.value">
+          #{item.idxx,jdbcType=INTEGER}
+        </if>
+        <if test="'state'.toString() == column.value">
+          #{item.state,jdbcType=CHAR}
+        </if>
+        <if test="'free_stime'.toString() == column.value">
+          #{item.freeStime,jdbcType=INTEGER}
+        </if>
+        <if test="'free_etime'.toString() == column.value">
+          #{item.freeEtime,jdbcType=INTEGER}
+        </if>
+        <if test="'sex'.toString() == column.value">
+          #{item.sex,jdbcType=CHAR}
+        </if>
+        <if test="'billing_type'.toString() == column.value">
+          #{item.billingType,jdbcType=CHAR}
+        </if>
+        <if test="'price'.toString() == column.value">
+          #{item.price,jdbcType=INTEGER}
+        </if>
+        <if test="'app_price'.toString() == column.value">
+          #{item.appPrice,jdbcType=INTEGER}
+        </if>
+        <if test="'is_finish'.toString() == column.value">
+          #{item.isFinish,jdbcType=CHAR}
+        </if>
+        <if test="'free_chapter_num'.toString() == column.value">
+          #{item.freeChapterNum,jdbcType=INTEGER}
+        </if>
+        <if test="'word_count'.toString() == column.value">
+          #{item.wordCount,jdbcType=VARCHAR}
+        </if>
+        <if test="'chapter_num'.toString() == column.value">
+          #{item.chapterNum,jdbcType=INTEGER}
+        </if>
+        <if test="'first_chapter_id'.toString() == column.value">
+          #{item.firstChapterId,jdbcType=BIGINT}
+        </if>
+        <if test="'first_chapter_name'.toString() == column.value">
+          #{item.firstChapterName,jdbcType=VARCHAR}
+        </if>
+        <if test="'last_chapter_id'.toString() == column.value">
+          #{item.lastChapterId,jdbcType=BIGINT}
+        </if>
+        <if test="'last_chapter_name'.toString() == column.value">
+          #{item.lastChapterName,jdbcType=VARCHAR}
+        </if>
+        <if test="'last_chapter_utime'.toString() == column.value">
+          #{item.lastChapterUtime,jdbcType=INTEGER}
+        </if>
+        <if test="'read_num'.toString() == column.value">
+          #{item.readNum,jdbcType=INTEGER}
+        </if>
+        <if test="'article_chapter_order'.toString() == column.value">
+          #{item.articleChapterOrder,jdbcType=INTEGER}
+        </if>
+        <if test="'attent_chapter_order'.toString() == column.value">
+          #{item.attentChapterOrder,jdbcType=INTEGER}
+        </if>
+        <if test="'corner_mark'.toString() == column.value">
+          #{item.cornerMark,jdbcType=CHAR}
+        </if>
+        <if test="'recommand_book_id'.toString() == column.value">
+          #{item.recommandBookId,jdbcType=BIGINT}
+        </if>
+        <if test="'createtime'.toString() == column.value">
+          #{item.createtime,jdbcType=INTEGER}
+        </if>
+        <if test="'updatetime'.toString() == column.value">
+          #{item.updatetime,jdbcType=INTEGER}
+        </if>
+        <if test="'keywords'.toString() == column.value">
+          #{item.keywords,jdbcType=VARCHAR}
+        </if>
+        <if test="'cansee'.toString() == column.value">
+          #{item.cansee,jdbcType=CHAR}
+        </if>
+        <if test="'rank'.toString() == column.value">
+          #{item.rank,jdbcType=TINYINT}
+        </if>
+        <if test="'check_rank'.toString() == column.value">
+          #{item.checkRank,jdbcType=TINYINT}
+        </if>
+        <if test="'check_remark'.toString() == column.value">
+          #{item.checkRemark,jdbcType=VARCHAR}
+        </if>
+        <if test="'editor_recommand'.toString() == column.value">
+          #{item.editorRecommand,jdbcType=VARCHAR}
+        </if>
+        <if test="'book_tags'.toString() == column.value">
+          #{item.bookTags,jdbcType=VARCHAR}
+        </if>
+        <if test="'a'.toString() == column.value">
+          #{item.a,jdbcType=TINYINT}
+        </if>
+        <if test="'expire_time'.toString() == column.value">
+          #{item.expireTime,jdbcType=INTEGER}
+        </if>
+        <if test="'cp_id'.toString() == column.value">
+          #{item.cpId,jdbcType=INTEGER}
+        </if>
+        <if test="'cp_name'.toString() == column.value">
+          #{item.cpName,jdbcType=VARCHAR}
+        </if>
+        <if test="'tags'.toString() == column.value">
+          #{item.tags,jdbcType=VARCHAR}
+        </if>
+        <if test="'classify_white_list'.toString() == column.value">
+          #{item.classifyWhiteList,jdbcType=TINYINT}
+        </if>
+        <if test="'put_ad_set'.toString() == column.value">
+          #{item.putAdSet,jdbcType=TINYINT}
+        </if>
+      </foreach>
+      )
+    </foreach>
+  </insert>
+  <insert id="upsertSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    insert into book
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          ${column.escapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            id,
+          </if>
+          <if test="record.isAudio != null">
+            is_audio,
+          </if>
+          <if test="record.bookCategoryId != null">
+            book_category_id,
+          </if>
+          <if test="record.name != null">
+            name,
+          </if>
+          <if test="record.realname != null">
+            realname,
+          </if>
+          <if test="record.title != null">
+            title,
+          </if>
+          <if test="record.author != null">
+            author,
+          </if>
+          <if test="record.image != null">
+            image,
+          </if>
+          <if test="record.bigCover != null">
+            big_cover,
+          </if>
+          <if test="record.smallCover != null">
+            small_cover,
+          </if>
+          <if test="record.description != null">
+            description,
+          </if>
+          <if test="record.idx != null">
+            idx,
+          </if>
+          <if test="record.referralNum != null">
+            referral_num,
+          </if>
+          <if test="record.idxx != null">
+            idxx,
+          </if>
+          <if test="record.state != null">
+            state,
+          </if>
+          <if test="record.freeStime != null">
+            free_stime,
+          </if>
+          <if test="record.freeEtime != null">
+            free_etime,
+          </if>
+          <if test="record.sex != null">
+            sex,
+          </if>
+          <if test="record.billingType != null">
+            billing_type,
+          </if>
+          <if test="record.price != null">
+            price,
+          </if>
+          <if test="record.appPrice != null">
+            app_price,
+          </if>
+          <if test="record.isFinish != null">
+            is_finish,
+          </if>
+          <if test="record.freeChapterNum != null">
+            free_chapter_num,
+          </if>
+          <if test="record.wordCount != null">
+            word_count,
+          </if>
+          <if test="record.chapterNum != null">
+            chapter_num,
+          </if>
+          <if test="record.firstChapterId != null">
+            first_chapter_id,
+          </if>
+          <if test="record.firstChapterName != null">
+            first_chapter_name,
+          </if>
+          <if test="record.lastChapterId != null">
+            last_chapter_id,
+          </if>
+          <if test="record.lastChapterName != null">
+            last_chapter_name,
+          </if>
+          <if test="record.lastChapterUtime != null">
+            last_chapter_utime,
+          </if>
+          <if test="record.readNum != null">
+            read_num,
+          </if>
+          <if test="record.articleChapterOrder != null">
+            article_chapter_order,
+          </if>
+          <if test="record.attentChapterOrder != null">
+            attent_chapter_order,
+          </if>
+          <if test="record.cornerMark != null">
+            corner_mark,
+          </if>
+          <if test="record.recommandBookId != null">
+            recommand_book_id,
+          </if>
+          <if test="record.createtime != null">
+            createtime,
+          </if>
+          <if test="record.updatetime != null">
+            updatetime,
+          </if>
+          <if test="record.keywords != null">
+            keywords,
+          </if>
+          <if test="record.cansee != null">
+            cansee,
+          </if>
+          <if test="record.rank != null">
+            rank,
+          </if>
+          <if test="record.checkRank != null">
+            check_rank,
+          </if>
+          <if test="record.checkRemark != null">
+            check_remark,
+          </if>
+          <if test="record.editorRecommand != null">
+            editor_recommand,
+          </if>
+          <if test="record.bookTags != null">
+            book_tags,
+          </if>
+          <if test="record.a != null">
+            a,
+          </if>
+          <if test="record.expireTime != null">
+            expire_time,
+          </if>
+          <if test="record.cpId != null">
+            cp_id,
+          </if>
+          <if test="record.cpName != null">
+            cp_name,
+          </if>
+          <if test="record.tags != null">
+            tags,
+          </if>
+          <if test="record.classifyWhiteList != null">
+            classify_white_list,
+          </if>
+          <if test="record.putAdSet != null">
+            put_ad_set,
+          </if>
+        </trim>
+        <trim prefix="(" suffix=")" suffixOverrides="," />
+      </otherwise>
+    </choose>
+    values
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach close=")" collection="selective" item="column" open="(" separator=",">
+          #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+          <if test="record.id != null">
+            #{record.id,jdbcType=BIGINT},
+          </if>
+          <if test="record.isAudio != null">
+            #{record.isAudio,jdbcType=TINYINT},
+          </if>
+          <if test="record.bookCategoryId != null">
+            #{record.bookCategoryId,jdbcType=INTEGER},
+          </if>
+          <if test="record.name != null">
+            #{record.name,jdbcType=VARCHAR},
+          </if>
+          <if test="record.realname != null">
+            #{record.realname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.title != null">
+            #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.author != null">
+            #{record.author,jdbcType=VARCHAR},
+          </if>
+          <if test="record.image != null">
+            #{record.image,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bigCover != null">
+            #{record.bigCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.smallCover != null">
+            #{record.smallCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.description != null">
+            #{record.description,jdbcType=VARCHAR},
+          </if>
+          <if test="record.idx != null">
+            #{record.idx,jdbcType=INTEGER},
+          </if>
+          <if test="record.referralNum != null">
+            #{record.referralNum,jdbcType=TINYINT},
+          </if>
+          <if test="record.idxx != null">
+            #{record.idxx,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.freeStime != null">
+            #{record.freeStime,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeEtime != null">
+            #{record.freeEtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sex != null">
+            #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.billingType != null">
+            #{record.billingType,jdbcType=CHAR},
+          </if>
+          <if test="record.price != null">
+            #{record.price,jdbcType=INTEGER},
+          </if>
+          <if test="record.appPrice != null">
+            #{record.appPrice,jdbcType=INTEGER},
+          </if>
+          <if test="record.isFinish != null">
+            #{record.isFinish,jdbcType=CHAR},
+          </if>
+          <if test="record.freeChapterNum != null">
+            #{record.freeChapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.wordCount != null">
+            #{record.wordCount,jdbcType=VARCHAR},
+          </if>
+          <if test="record.chapterNum != null">
+            #{record.chapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.firstChapterId != null">
+            #{record.firstChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.firstChapterName != null">
+            #{record.firstChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterId != null">
+            #{record.lastChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.lastChapterName != null">
+            #{record.lastChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterUtime != null">
+            #{record.lastChapterUtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.readNum != null">
+            #{record.readNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.articleChapterOrder != null">
+            #{record.articleChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.attentChapterOrder != null">
+            #{record.attentChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.cornerMark != null">
+            #{record.cornerMark,jdbcType=CHAR},
+          </if>
+          <if test="record.recommandBookId != null">
+            #{record.recommandBookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.createtime != null">
+            #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.keywords != null">
+            #{record.keywords,jdbcType=VARCHAR},
+          </if>
+          <if test="record.cansee != null">
+            #{record.cansee,jdbcType=CHAR},
+          </if>
+          <if test="record.rank != null">
+            #{record.rank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRank != null">
+            #{record.checkRank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRemark != null">
+            #{record.checkRemark,jdbcType=VARCHAR},
+          </if>
+          <if test="record.editorRecommand != null">
+            #{record.editorRecommand,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookTags != null">
+            #{record.bookTags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.a != null">
+            #{record.a,jdbcType=TINYINT},
+          </if>
+          <if test="record.expireTime != null">
+            #{record.expireTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpId != null">
+            #{record.cpId,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpName != null">
+            #{record.cpName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.tags != null">
+            #{record.tags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.classifyWhiteList != null">
+            #{record.classifyWhiteList,jdbcType=TINYINT},
+          </if>
+          <if test="record.putAdSet != null">
+            #{record.putAdSet,jdbcType=TINYINT},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    on duplicate key update 
+    <choose>
+      <when test="selective != null and selective.length > 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.escapedColumnName} = #{record.${column.javaProperty},jdbcType=${column.jdbcType}}
+        </foreach>
+      </when>
+      <otherwise>
+        <trim suffixOverrides=",">
+          <if test="record.id != null">
+            id = #{record.id,jdbcType=BIGINT},
+          </if>
+          <if test="record.isAudio != null">
+            is_audio = #{record.isAudio,jdbcType=TINYINT},
+          </if>
+          <if test="record.bookCategoryId != null">
+            book_category_id = #{record.bookCategoryId,jdbcType=INTEGER},
+          </if>
+          <if test="record.name != null">
+            name = #{record.name,jdbcType=VARCHAR},
+          </if>
+          <if test="record.realname != null">
+            realname = #{record.realname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.title != null">
+            title = #{record.title,jdbcType=VARCHAR},
+          </if>
+          <if test="record.author != null">
+            author = #{record.author,jdbcType=VARCHAR},
+          </if>
+          <if test="record.image != null">
+            image = #{record.image,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bigCover != null">
+            big_cover = #{record.bigCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.smallCover != null">
+            small_cover = #{record.smallCover,jdbcType=VARCHAR},
+          </if>
+          <if test="record.description != null">
+            description = #{record.description,jdbcType=VARCHAR},
+          </if>
+          <if test="record.idx != null">
+            idx = #{record.idx,jdbcType=INTEGER},
+          </if>
+          <if test="record.referralNum != null">
+            referral_num = #{record.referralNum,jdbcType=TINYINT},
+          </if>
+          <if test="record.idxx != null">
+            idxx = #{record.idxx,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            state = #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.freeStime != null">
+            free_stime = #{record.freeStime,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeEtime != null">
+            free_etime = #{record.freeEtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.sex != null">
+            sex = #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.billingType != null">
+            billing_type = #{record.billingType,jdbcType=CHAR},
+          </if>
+          <if test="record.price != null">
+            price = #{record.price,jdbcType=INTEGER},
+          </if>
+          <if test="record.appPrice != null">
+            app_price = #{record.appPrice,jdbcType=INTEGER},
+          </if>
+          <if test="record.isFinish != null">
+            is_finish = #{record.isFinish,jdbcType=CHAR},
+          </if>
+          <if test="record.freeChapterNum != null">
+            free_chapter_num = #{record.freeChapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.wordCount != null">
+            word_count = #{record.wordCount,jdbcType=VARCHAR},
+          </if>
+          <if test="record.chapterNum != null">
+            chapter_num = #{record.chapterNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.firstChapterId != null">
+            first_chapter_id = #{record.firstChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.firstChapterName != null">
+            first_chapter_name = #{record.firstChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterId != null">
+            last_chapter_id = #{record.lastChapterId,jdbcType=BIGINT},
+          </if>
+          <if test="record.lastChapterName != null">
+            last_chapter_name = #{record.lastChapterName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.lastChapterUtime != null">
+            last_chapter_utime = #{record.lastChapterUtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.readNum != null">
+            read_num = #{record.readNum,jdbcType=INTEGER},
+          </if>
+          <if test="record.articleChapterOrder != null">
+            article_chapter_order = #{record.articleChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.attentChapterOrder != null">
+            attent_chapter_order = #{record.attentChapterOrder,jdbcType=INTEGER},
+          </if>
+          <if test="record.cornerMark != null">
+            corner_mark = #{record.cornerMark,jdbcType=CHAR},
+          </if>
+          <if test="record.recommandBookId != null">
+            recommand_book_id = #{record.recommandBookId,jdbcType=BIGINT},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+          <if test="record.keywords != null">
+            keywords = #{record.keywords,jdbcType=VARCHAR},
+          </if>
+          <if test="record.cansee != null">
+            cansee = #{record.cansee,jdbcType=CHAR},
+          </if>
+          <if test="record.rank != null">
+            rank = #{record.rank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRank != null">
+            check_rank = #{record.checkRank,jdbcType=TINYINT},
+          </if>
+          <if test="record.checkRemark != null">
+            check_remark = #{record.checkRemark,jdbcType=VARCHAR},
+          </if>
+          <if test="record.editorRecommand != null">
+            editor_recommand = #{record.editorRecommand,jdbcType=VARCHAR},
+          </if>
+          <if test="record.bookTags != null">
+            book_tags = #{record.bookTags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.a != null">
+            a = #{record.a,jdbcType=TINYINT},
+          </if>
+          <if test="record.expireTime != null">
+            expire_time = #{record.expireTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpId != null">
+            cp_id = #{record.cpId,jdbcType=INTEGER},
+          </if>
+          <if test="record.cpName != null">
+            cp_name = #{record.cpName,jdbcType=VARCHAR},
+          </if>
+          <if test="record.tags != null">
+            tags = #{record.tags,jdbcType=VARCHAR},
+          </if>
+          <if test="record.classifyWhiteList != null">
+            classify_white_list = #{record.classifyWhiteList,jdbcType=TINYINT},
+          </if>
+          <if test="record.putAdSet != null">
+            put_ad_set = #{record.putAdSet,jdbcType=TINYINT},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+  </insert>
+  <insert id="upsert" parameterType="com.book.server.dao.entity.Book">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Aug 12 00:28:56 CST 2021.
+    -->
+    insert into book
+    (id, is_audio, book_category_id, name, realname, title, author, image, big_cover, 
+      small_cover, description, idx, referral_num, idxx, state, free_stime, free_etime, 
+      sex, billing_type, price, app_price, is_finish, free_chapter_num, word_count, chapter_num, 
+      first_chapter_id, first_chapter_name, last_chapter_id, last_chapter_name, last_chapter_utime, 
+      read_num, article_chapter_order, attent_chapter_order, corner_mark, recommand_book_id, 
+      createtime, updatetime, keywords, cansee, rank, check_rank, check_remark, editor_recommand, 
+      book_tags, a, expire_time, cp_id, cp_name, tags, classify_white_list, put_ad_set
+      )
+    values
+    (#{id,jdbcType=BIGINT}, #{isAudio,jdbcType=TINYINT}, #{bookCategoryId,jdbcType=INTEGER}, 
+      #{name,jdbcType=VARCHAR}, #{realname,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, 
+      #{author,jdbcType=VARCHAR}, #{image,jdbcType=VARCHAR}, #{bigCover,jdbcType=VARCHAR}, 
+      #{smallCover,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{idx,jdbcType=INTEGER}, 
+      #{referralNum,jdbcType=TINYINT}, #{idxx,jdbcType=INTEGER}, #{state,jdbcType=CHAR}, 
+      #{freeStime,jdbcType=INTEGER}, #{freeEtime,jdbcType=INTEGER}, #{sex,jdbcType=CHAR}, 
+      #{billingType,jdbcType=CHAR}, #{price,jdbcType=INTEGER}, #{appPrice,jdbcType=INTEGER}, 
+      #{isFinish,jdbcType=CHAR}, #{freeChapterNum,jdbcType=INTEGER}, #{wordCount,jdbcType=VARCHAR}, 
+      #{chapterNum,jdbcType=INTEGER}, #{firstChapterId,jdbcType=BIGINT}, #{firstChapterName,jdbcType=VARCHAR}, 
+      #{lastChapterId,jdbcType=BIGINT}, #{lastChapterName,jdbcType=VARCHAR}, #{lastChapterUtime,jdbcType=INTEGER}, 
+      #{readNum,jdbcType=INTEGER}, #{articleChapterOrder,jdbcType=INTEGER}, #{attentChapterOrder,jdbcType=INTEGER}, 
+      #{cornerMark,jdbcType=CHAR}, #{recommandBookId,jdbcType=BIGINT}, #{createtime,jdbcType=INTEGER}, 
+      #{updatetime,jdbcType=INTEGER}, #{keywords,jdbcType=VARCHAR}, #{cansee,jdbcType=CHAR}, 
+      #{rank,jdbcType=TINYINT}, #{checkRank,jdbcType=TINYINT}, #{checkRemark,jdbcType=VARCHAR}, 
+      #{editorRecommand,jdbcType=VARCHAR}, #{bookTags,jdbcType=VARCHAR}, #{a,jdbcType=TINYINT}, 
+      #{expireTime,jdbcType=INTEGER}, #{cpId,jdbcType=INTEGER}, #{cpName,jdbcType=VARCHAR}, 
+      #{tags,jdbcType=VARCHAR}, #{classifyWhiteList,jdbcType=TINYINT}, #{putAdSet,jdbcType=TINYINT}
+      )
+    on duplicate key update 
+    id = #{id,jdbcType=BIGINT}, 
+    is_audio = #{isAudio,jdbcType=TINYINT}, 
+    book_category_id = #{bookCategoryId,jdbcType=INTEGER}, 
+    name = #{name,jdbcType=VARCHAR}, 
+    realname = #{realname,jdbcType=VARCHAR}, 
+    title = #{title,jdbcType=VARCHAR}, 
+    author = #{author,jdbcType=VARCHAR}, 
+    image = #{image,jdbcType=VARCHAR}, 
+    big_cover = #{bigCover,jdbcType=VARCHAR}, 
+    small_cover = #{smallCover,jdbcType=VARCHAR}, 
+    description = #{description,jdbcType=VARCHAR}, 
+    idx = #{idx,jdbcType=INTEGER}, 
+    referral_num = #{referralNum,jdbcType=TINYINT}, 
+    idxx = #{idxx,jdbcType=INTEGER}, 
+    state = #{state,jdbcType=CHAR}, 
+    free_stime = #{freeStime,jdbcType=INTEGER}, 
+    free_etime = #{freeEtime,jdbcType=INTEGER}, 
+    sex = #{sex,jdbcType=CHAR}, 
+    billing_type = #{billingType,jdbcType=CHAR}, 
+    price = #{price,jdbcType=INTEGER}, 
+    app_price = #{appPrice,jdbcType=INTEGER}, 
+    is_finish = #{isFinish,jdbcType=CHAR}, 
+    free_chapter_num = #{freeChapterNum,jdbcType=INTEGER}, 
+    word_count = #{wordCount,jdbcType=VARCHAR}, 
+    chapter_num = #{chapterNum,jdbcType=INTEGER}, 
+    first_chapter_id = #{firstChapterId,jdbcType=BIGINT}, 
+    first_chapter_name = #{firstChapterName,jdbcType=VARCHAR}, 
+    last_chapter_id = #{lastChapterId,jdbcType=BIGINT}, 
+    last_chapter_name = #{lastChapterName,jdbcType=VARCHAR}, 
+    last_chapter_utime = #{lastChapterUtime,jdbcType=INTEGER}, 
+    read_num = #{readNum,jdbcType=INTEGER}, 
+    article_chapter_order = #{articleChapterOrder,jdbcType=INTEGER}, 
+    attent_chapter_order = #{attentChapterOrder,jdbcType=INTEGER}, 
+    corner_mark = #{cornerMark,jdbcType=CHAR}, 
+    recommand_book_id = #{recommandBookId,jdbcType=BIGINT}, 
+    createtime = #{createtime,jdbcType=INTEGER}, 
+    updatetime = #{updatetime,jdbcType=INTEGER}, 
+    keywords = #{keywords,jdbcType=VARCHAR}, 
+    cansee = #{cansee,jdbcType=CHAR}, 
+    rank = #{rank,jdbcType=TINYINT}, 
+    check_rank = #{checkRank,jdbcType=TINYINT}, 
+    check_remark = #{checkRemark,jdbcType=VARCHAR}, 
+    editor_recommand = #{editorRecommand,jdbcType=VARCHAR}, 
+    book_tags = #{bookTags,jdbcType=VARCHAR}, 
+    a = #{a,jdbcType=TINYINT}, 
+    expire_time = #{expireTime,jdbcType=INTEGER}, 
+    cp_id = #{cpId,jdbcType=INTEGER}, 
+    cp_name = #{cpName,jdbcType=VARCHAR}, 
+    tags = #{tags,jdbcType=VARCHAR}, 
+    classify_white_list = #{classifyWhiteList,jdbcType=TINYINT}, 
+    put_ad_set = #{putAdSet,jdbcType=TINYINT}
+  </insert>
+</mapper>

+ 2 - 2
book-server/src/main/resources/mybatis-generator.xml

@@ -103,8 +103,8 @@
         <!--数据库连接配置 need to change-->
         <jdbcConnection
                 driverClass="com.mysql.cj.jdbc.Driver"
-                connectionURL="jdbc:mysql://47.240.19.58:3306/cps_test?nullCatalogMeansCurrent=true&amp;serverTimezone=UTC"
-                userId="cps_test"
+                connectionURL="jdbc:mysql://47.240.19.58:3306/test_cps?nullCatalogMeansCurrent=true&amp;serverTimezone=UTC"
+                userId="test_cps"
                 password="xKysDECnJLXkMYdJ"/>
 
         <!--指定自动生成的 POJO置于哪个包下 need to change -->