Browse Source

添加用户信息查询

tianyunperfect 3 years ago
parent
commit
5bf51b22a6

+ 1 - 1
bin/push_server.sh

@@ -1,4 +1,4 @@
-mvn clean package -Dmaven.test.skip=true
+#mvn clean package -Dmaven.test.skip=true
 
 
 remote=root@121.41.100.198
 remote=root@121.41.100.198
 remoteDir=/app/book-server
 remoteDir=/app/book-server

+ 31 - 0
book-server/src/main/java/com/book/server/controller/UserController.java

@@ -0,0 +1,31 @@
+package com.book.server.controller;
+
+import com.book.server.common.entity.Result;
+import com.book.server.dao.entity.User;
+import com.book.server.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 用户
+ */
+@RestController
+@RequestMapping("/api/user")
+public class UserController extends BaseController {
+    @Autowired
+    private UserService userService;
+
+    /**
+     * 获取用户基本信息
+     *
+     * @param openId 微信 openId
+     * @return
+     */
+    @GetMapping("/getUser")
+    public Result<User> getUserByOpenId(String openId) {
+        User user = userService.getUserByOpenId(openId);
+        return Result.byObject(user);
+    }
+}

+ 862 - 0
book-server/src/main/java/com/book/server/dao/entity/User.java

@@ -0,0 +1,862 @@
+package com.book.server.dao.entity;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import lombok.Data;
+
+@Data
+public class User implements Serializable {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.id
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Long id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.openid
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String openid;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.unionid
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String unionid;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.visitor
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String visitor;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.nickname
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String nickname;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.sex
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String sex;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.mobile
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String mobile;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.avatar
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String avatar;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.is_subscribe
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String isSubscribe;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.subscription_extend
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String subscriptionExtend;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.subscribe_time
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Integer subscribeTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.book_category_ids
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String bookCategoryIds;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.operate_time
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Integer operateTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.is_pay
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String isPay;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.kandian
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Integer kandian;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.free_kandian
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Integer freeKandian;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.vip_endtime
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Integer vipEndtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.register_ip
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String registerIp;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.country
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String country;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.area
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String area;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.province
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String province;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.city
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String city;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.isp
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String isp;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.channel_id
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Integer channelId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.state
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private String state;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.createtime
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Integer createtime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column user.updatetime
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private Integer updatetime;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public static User.Builder builder() {
+        return new User.Builder();
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public static class Builder {
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        private User obj;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder() {
+            this.obj = new User();
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.id
+         *
+         * @param id the value for user.id
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user.openid
+         *
+         * @param openid the value for user.openid
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder openid(String openid) {
+            obj.setOpenid(openid);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.unionid
+         *
+         * @param unionid the value for user.unionid
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder unionid(String unionid) {
+            obj.setUnionid(unionid);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.visitor
+         *
+         * @param visitor the value for user.visitor
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder visitor(String visitor) {
+            obj.setVisitor(visitor);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.nickname
+         *
+         * @param nickname the value for user.nickname
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder nickname(String nickname) {
+            obj.setNickname(nickname);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.sex
+         *
+         * @param sex the value for user.sex
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user.mobile
+         *
+         * @param mobile the value for user.mobile
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder mobile(String mobile) {
+            obj.setMobile(mobile);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.avatar
+         *
+         * @param avatar the value for user.avatar
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder avatar(String avatar) {
+            obj.setAvatar(avatar);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.is_subscribe
+         *
+         * @param isSubscribe the value for user.is_subscribe
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder isSubscribe(String isSubscribe) {
+            obj.setIsSubscribe(isSubscribe);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.subscription_extend
+         *
+         * @param subscriptionExtend the value for user.subscription_extend
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder subscriptionExtend(String subscriptionExtend) {
+            obj.setSubscriptionExtend(subscriptionExtend);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.subscribe_time
+         *
+         * @param subscribeTime the value for user.subscribe_time
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder subscribeTime(Integer subscribeTime) {
+            obj.setSubscribeTime(subscribeTime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.book_category_ids
+         *
+         * @param bookCategoryIds the value for user.book_category_ids
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder bookCategoryIds(String bookCategoryIds) {
+            obj.setBookCategoryIds(bookCategoryIds);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.operate_time
+         *
+         * @param operateTime the value for user.operate_time
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder operateTime(Integer operateTime) {
+            obj.setOperateTime(operateTime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.is_pay
+         *
+         * @param isPay the value for user.is_pay
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder isPay(String isPay) {
+            obj.setIsPay(isPay);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.kandian
+         *
+         * @param kandian the value for user.kandian
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder kandian(Integer kandian) {
+            obj.setKandian(kandian);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.free_kandian
+         *
+         * @param freeKandian the value for user.free_kandian
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder freeKandian(Integer freeKandian) {
+            obj.setFreeKandian(freeKandian);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.vip_endtime
+         *
+         * @param vipEndtime the value for user.vip_endtime
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder vipEndtime(Integer vipEndtime) {
+            obj.setVipEndtime(vipEndtime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.register_ip
+         *
+         * @param registerIp the value for user.register_ip
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder registerIp(String registerIp) {
+            obj.setRegisterIp(registerIp);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.country
+         *
+         * @param country the value for user.country
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder country(String country) {
+            obj.setCountry(country);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.area
+         *
+         * @param area the value for user.area
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder area(String area) {
+            obj.setArea(area);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.province
+         *
+         * @param province the value for user.province
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder province(String province) {
+            obj.setProvince(province);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.city
+         *
+         * @param city the value for user.city
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder city(String city) {
+            obj.setCity(city);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.isp
+         *
+         * @param isp the value for user.isp
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder isp(String isp) {
+            obj.setIsp(isp);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.channel_id
+         *
+         * @param channelId the value for user.channel_id
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder channelId(Integer channelId) {
+            obj.setChannelId(channelId);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method sets the value of the database column user.state
+         *
+         * @param state the value for user.state
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user.createtime
+         *
+         * @param createtime the value for user.createtime
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user.updatetime
+         *
+         * @param updatetime the value for user.updatetime
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public Builder updatetime(Integer updatetime) {
+            obj.setUpdatetime(updatetime);
+            return this;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public User build() {
+            return this.obj;
+        }
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public enum Column {
+        id("id", "id", "BIGINT", false),
+        openid("openid", "openid", "VARCHAR", false),
+        unionid("unionid", "unionid", "VARCHAR", false),
+        visitor("visitor", "visitor", "VARCHAR", false),
+        nickname("nickname", "nickname", "VARCHAR", false),
+        sex("sex", "sex", "CHAR", false),
+        mobile("mobile", "mobile", "CHAR", false),
+        avatar("avatar", "avatar", "VARCHAR", false),
+        isSubscribe("is_subscribe", "isSubscribe", "CHAR", false),
+        subscriptionExtend("subscription_extend", "subscriptionExtend", "CHAR", false),
+        subscribeTime("subscribe_time", "subscribeTime", "INTEGER", false),
+        bookCategoryIds("book_category_ids", "bookCategoryIds", "VARCHAR", false),
+        operateTime("operate_time", "operateTime", "INTEGER", false),
+        isPay("is_pay", "isPay", "CHAR", false),
+        kandian("kandian", "kandian", "INTEGER", false),
+        freeKandian("free_kandian", "freeKandian", "INTEGER", false),
+        vipEndtime("vip_endtime", "vipEndtime", "INTEGER", false),
+        registerIp("register_ip", "registerIp", "VARCHAR", false),
+        country("country", "country", "VARCHAR", false),
+        area("area", "area", "VARCHAR", false),
+        province("province", "province", "VARCHAR", false),
+        city("city", "city", "VARCHAR", false),
+        isp("isp", "isp", "VARCHAR", false),
+        channelId("channel_id", "channelId", "INTEGER", false),
+        state("state", "state", "CHAR", false),
+        createtime("createtime", "createtime", "INTEGER", false),
+        updatetime("updatetime", "updatetime", "INTEGER", false);
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        private static final String BEGINNING_DELIMITER = "\"";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        private static final String ENDING_DELIMITER = "\"";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        private final String column;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        private final boolean isColumnNameDelimited;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        private final String javaProperty;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        private final String jdbcType;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public String getJavaProperty() {
+            return this.javaProperty;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public String getJdbcType() {
+            return this.jdbcType;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public String desc() {
+            return this.getEscapedColumnName() + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public String asc() {
+            return this.getEscapedColumnName() + " ASC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public static Column[] all() {
+            return Column.values();
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public String getAliasedEscapedColumnName() {
+            return this.getEscapedColumnName();
+        }
+    }
+}

+ 3171 - 0
book-server/src/main/java/com/book/server/dao/entity/example/UserExample.java

@@ -0,0 +1,3171 @@
+package com.book.server.dao.entity.example;
+
+import com.book.server.dao.entity.User;
+import java.util.ArrayList;
+import java.util.List;
+
+public class UserExample {
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    protected String orderByClause;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    protected boolean distinct;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    protected List<Criteria> oredCriteria;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    protected Integer offset;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    protected Integer rows;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public UserExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public UserExample orderBy(String orderByClause) {
+        this.setOrderByClause(orderByClause);
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public UserExample 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public void setOffset(Integer offset) {
+        this.offset = offset;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public Integer getOffset() {
+        return this.offset;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public void setRows(Integer rows) {
+        this.rows = rows;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public Integer getRows() {
+        return this.rows;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public UserExample limit(Integer rows) {
+        this.rows = rows;
+        return this;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public UserExample 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public UserExample 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public static Criteria newAndCreateCriteria() {
+        UserExample example = new UserExample();
+        return example.createCriteria();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public UserExample 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    public UserExample 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 user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 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(User.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(User.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(User.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(User.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(User.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(User.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 andOpenidIsNull() {
+            addCriterion("openid is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidIsNotNull() {
+            addCriterion("openid is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidEqualTo(String value) {
+            addCriterion("openid =", value, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("openid = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidNotEqualTo(String value) {
+            addCriterion("openid <>", value, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("openid <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidGreaterThan(String value) {
+            addCriterion("openid >", value, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("openid > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidGreaterThanOrEqualTo(String value) {
+            addCriterion("openid >=", value, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("openid >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidLessThan(String value) {
+            addCriterion("openid <", value, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("openid < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidLessThanOrEqualTo(String value) {
+            addCriterion("openid <=", value, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("openid <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidLike(String value) {
+            addCriterion("openid like", value, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidNotLike(String value) {
+            addCriterion("openid not like", value, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidIn(List<String> values) {
+            addCriterion("openid in", values, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidNotIn(List<String> values) {
+            addCriterion("openid not in", values, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidBetween(String value1, String value2) {
+            addCriterion("openid between", value1, value2, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andOpenidNotBetween(String value1, String value2) {
+            addCriterion("openid not between", value1, value2, "openid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidIsNull() {
+            addCriterion("unionid is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidIsNotNull() {
+            addCriterion("unionid is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidEqualTo(String value) {
+            addCriterion("unionid =", value, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("unionid = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidNotEqualTo(String value) {
+            addCriterion("unionid <>", value, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("unionid <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidGreaterThan(String value) {
+            addCriterion("unionid >", value, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("unionid > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidGreaterThanOrEqualTo(String value) {
+            addCriterion("unionid >=", value, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("unionid >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidLessThan(String value) {
+            addCriterion("unionid <", value, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("unionid < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidLessThanOrEqualTo(String value) {
+            addCriterion("unionid <=", value, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("unionid <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidLike(String value) {
+            addCriterion("unionid like", value, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidNotLike(String value) {
+            addCriterion("unionid not like", value, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidIn(List<String> values) {
+            addCriterion("unionid in", values, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidNotIn(List<String> values) {
+            addCriterion("unionid not in", values, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidBetween(String value1, String value2) {
+            addCriterion("unionid between", value1, value2, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUnionidNotBetween(String value1, String value2) {
+            addCriterion("unionid not between", value1, value2, "unionid");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorIsNull() {
+            addCriterion("visitor is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorIsNotNull() {
+            addCriterion("visitor is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorEqualTo(String value) {
+            addCriterion("visitor =", value, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("visitor = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorNotEqualTo(String value) {
+            addCriterion("visitor <>", value, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("visitor <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorGreaterThan(String value) {
+            addCriterion("visitor >", value, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("visitor > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorGreaterThanOrEqualTo(String value) {
+            addCriterion("visitor >=", value, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("visitor >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorLessThan(String value) {
+            addCriterion("visitor <", value, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("visitor < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorLessThanOrEqualTo(String value) {
+            addCriterion("visitor <=", value, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("visitor <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorLike(String value) {
+            addCriterion("visitor like", value, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorNotLike(String value) {
+            addCriterion("visitor not like", value, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorIn(List<String> values) {
+            addCriterion("visitor in", values, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorNotIn(List<String> values) {
+            addCriterion("visitor not in", values, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorBetween(String value1, String value2) {
+            addCriterion("visitor between", value1, value2, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andVisitorNotBetween(String value1, String value2) {
+            addCriterion("visitor not between", value1, value2, "visitor");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameIsNull() {
+            addCriterion("nickname is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameIsNotNull() {
+            addCriterion("nickname is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameEqualTo(String value) {
+            addCriterion("nickname =", value, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("nickname = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameNotEqualTo(String value) {
+            addCriterion("nickname <>", value, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("nickname <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameGreaterThan(String value) {
+            addCriterion("nickname >", value, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("nickname > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameGreaterThanOrEqualTo(String value) {
+            addCriterion("nickname >=", value, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("nickname >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameLessThan(String value) {
+            addCriterion("nickname <", value, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("nickname < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameLessThanOrEqualTo(String value) {
+            addCriterion("nickname <=", value, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("nickname <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameLike(String value) {
+            addCriterion("nickname like", value, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameNotLike(String value) {
+            addCriterion("nickname not like", value, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameIn(List<String> values) {
+            addCriterion("nickname in", values, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameNotIn(List<String> values) {
+            addCriterion("nickname not in", values, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameBetween(String value1, String value2) {
+            addCriterion("nickname between", value1, value2, "nickname");
+            return (Criteria) this;
+        }
+
+        public Criteria andNicknameNotBetween(String value1, String value2) {
+            addCriterion("nickname not between", value1, value2, "nickname");
+            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(User.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(User.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(User.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(User.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(User.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(User.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 andMobileIsNull() {
+            addCriterion("mobile is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileIsNotNull() {
+            addCriterion("mobile is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileEqualTo(String value) {
+            addCriterion("mobile =", value, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("mobile = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileNotEqualTo(String value) {
+            addCriterion("mobile <>", value, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("mobile <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileGreaterThan(String value) {
+            addCriterion("mobile >", value, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("mobile > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileGreaterThanOrEqualTo(String value) {
+            addCriterion("mobile >=", value, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("mobile >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileLessThan(String value) {
+            addCriterion("mobile <", value, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("mobile < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileLessThanOrEqualTo(String value) {
+            addCriterion("mobile <=", value, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("mobile <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileLike(String value) {
+            addCriterion("mobile like", value, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileNotLike(String value) {
+            addCriterion("mobile not like", value, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileIn(List<String> values) {
+            addCriterion("mobile in", values, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileNotIn(List<String> values) {
+            addCriterion("mobile not in", values, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileBetween(String value1, String value2) {
+            addCriterion("mobile between", value1, value2, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andMobileNotBetween(String value1, String value2) {
+            addCriterion("mobile not between", value1, value2, "mobile");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarIsNull() {
+            addCriterion("avatar is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarIsNotNull() {
+            addCriterion("avatar is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarEqualTo(String value) {
+            addCriterion("avatar =", value, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("avatar = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarNotEqualTo(String value) {
+            addCriterion("avatar <>", value, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("avatar <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarGreaterThan(String value) {
+            addCriterion("avatar >", value, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("avatar > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarGreaterThanOrEqualTo(String value) {
+            addCriterion("avatar >=", value, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("avatar >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarLessThan(String value) {
+            addCriterion("avatar <", value, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("avatar < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarLessThanOrEqualTo(String value) {
+            addCriterion("avatar <=", value, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("avatar <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarLike(String value) {
+            addCriterion("avatar like", value, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarNotLike(String value) {
+            addCriterion("avatar not like", value, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarIn(List<String> values) {
+            addCriterion("avatar in", values, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarNotIn(List<String> values) {
+            addCriterion("avatar not in", values, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarBetween(String value1, String value2) {
+            addCriterion("avatar between", value1, value2, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andAvatarNotBetween(String value1, String value2) {
+            addCriterion("avatar not between", value1, value2, "avatar");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeIsNull() {
+            addCriterion("is_subscribe is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeIsNotNull() {
+            addCriterion("is_subscribe is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeEqualTo(String value) {
+            addCriterion("is_subscribe =", value, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_subscribe = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeNotEqualTo(String value) {
+            addCriterion("is_subscribe <>", value, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_subscribe <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeGreaterThan(String value) {
+            addCriterion("is_subscribe >", value, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_subscribe > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeGreaterThanOrEqualTo(String value) {
+            addCriterion("is_subscribe >=", value, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_subscribe >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeLessThan(String value) {
+            addCriterion("is_subscribe <", value, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_subscribe < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeLessThanOrEqualTo(String value) {
+            addCriterion("is_subscribe <=", value, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_subscribe <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeLike(String value) {
+            addCriterion("is_subscribe like", value, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeNotLike(String value) {
+            addCriterion("is_subscribe not like", value, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeIn(List<String> values) {
+            addCriterion("is_subscribe in", values, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeNotIn(List<String> values) {
+            addCriterion("is_subscribe not in", values, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeBetween(String value1, String value2) {
+            addCriterion("is_subscribe between", value1, value2, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsSubscribeNotBetween(String value1, String value2) {
+            addCriterion("is_subscribe not between", value1, value2, "isSubscribe");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendIsNull() {
+            addCriterion("subscription_extend is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendIsNotNull() {
+            addCriterion("subscription_extend is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendEqualTo(String value) {
+            addCriterion("subscription_extend =", value, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscription_extend = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendNotEqualTo(String value) {
+            addCriterion("subscription_extend <>", value, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscription_extend <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendGreaterThan(String value) {
+            addCriterion("subscription_extend >", value, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscription_extend > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendGreaterThanOrEqualTo(String value) {
+            addCriterion("subscription_extend >=", value, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscription_extend >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendLessThan(String value) {
+            addCriterion("subscription_extend <", value, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscription_extend < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendLessThanOrEqualTo(String value) {
+            addCriterion("subscription_extend <=", value, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscription_extend <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendLike(String value) {
+            addCriterion("subscription_extend like", value, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendNotLike(String value) {
+            addCriterion("subscription_extend not like", value, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendIn(List<String> values) {
+            addCriterion("subscription_extend in", values, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendNotIn(List<String> values) {
+            addCriterion("subscription_extend not in", values, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendBetween(String value1, String value2) {
+            addCriterion("subscription_extend between", value1, value2, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscriptionExtendNotBetween(String value1, String value2) {
+            addCriterion("subscription_extend not between", value1, value2, "subscriptionExtend");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeIsNull() {
+            addCriterion("subscribe_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeIsNotNull() {
+            addCriterion("subscribe_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeEqualTo(Integer value) {
+            addCriterion("subscribe_time =", value, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscribe_time = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeNotEqualTo(Integer value) {
+            addCriterion("subscribe_time <>", value, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscribe_time <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeGreaterThan(Integer value) {
+            addCriterion("subscribe_time >", value, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscribe_time > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("subscribe_time >=", value, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscribe_time >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeLessThan(Integer value) {
+            addCriterion("subscribe_time <", value, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscribe_time < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeLessThanOrEqualTo(Integer value) {
+            addCriterion("subscribe_time <=", value, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("subscribe_time <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeIn(List<Integer> values) {
+            addCriterion("subscribe_time in", values, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeNotIn(List<Integer> values) {
+            addCriterion("subscribe_time not in", values, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeBetween(Integer value1, Integer value2) {
+            addCriterion("subscribe_time between", value1, value2, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubscribeTimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("subscribe_time not between", value1, value2, "subscribeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsIsNull() {
+            addCriterion("book_category_ids is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsIsNotNull() {
+            addCriterion("book_category_ids is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsEqualTo(String value) {
+            addCriterion("book_category_ids =", value, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("book_category_ids = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsNotEqualTo(String value) {
+            addCriterion("book_category_ids <>", value, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("book_category_ids <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsGreaterThan(String value) {
+            addCriterion("book_category_ids >", value, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("book_category_ids > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsGreaterThanOrEqualTo(String value) {
+            addCriterion("book_category_ids >=", value, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("book_category_ids >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsLessThan(String value) {
+            addCriterion("book_category_ids <", value, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("book_category_ids < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsLessThanOrEqualTo(String value) {
+            addCriterion("book_category_ids <=", value, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("book_category_ids <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsLike(String value) {
+            addCriterion("book_category_ids like", value, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsNotLike(String value) {
+            addCriterion("book_category_ids not like", value, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsIn(List<String> values) {
+            addCriterion("book_category_ids in", values, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsNotIn(List<String> values) {
+            addCriterion("book_category_ids not in", values, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsBetween(String value1, String value2) {
+            addCriterion("book_category_ids between", value1, value2, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andBookCategoryIdsNotBetween(String value1, String value2) {
+            addCriterion("book_category_ids not between", value1, value2, "bookCategoryIds");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeIsNull() {
+            addCriterion("operate_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeIsNotNull() {
+            addCriterion("operate_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeEqualTo(Integer value) {
+            addCriterion("operate_time =", value, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("operate_time = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeNotEqualTo(Integer value) {
+            addCriterion("operate_time <>", value, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("operate_time <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeGreaterThan(Integer value) {
+            addCriterion("operate_time >", value, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("operate_time > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("operate_time >=", value, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("operate_time >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeLessThan(Integer value) {
+            addCriterion("operate_time <", value, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("operate_time < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeLessThanOrEqualTo(Integer value) {
+            addCriterion("operate_time <=", value, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("operate_time <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeIn(List<Integer> values) {
+            addCriterion("operate_time in", values, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeNotIn(List<Integer> values) {
+            addCriterion("operate_time not in", values, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeBetween(Integer value1, Integer value2) {
+            addCriterion("operate_time between", value1, value2, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andOperateTimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("operate_time not between", value1, value2, "operateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayIsNull() {
+            addCriterion("is_pay is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayIsNotNull() {
+            addCriterion("is_pay is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayEqualTo(String value) {
+            addCriterion("is_pay =", value, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_pay = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayNotEqualTo(String value) {
+            addCriterion("is_pay <>", value, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_pay <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayGreaterThan(String value) {
+            addCriterion("is_pay >", value, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_pay > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayGreaterThanOrEqualTo(String value) {
+            addCriterion("is_pay >=", value, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_pay >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayLessThan(String value) {
+            addCriterion("is_pay <", value, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_pay < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayLessThanOrEqualTo(String value) {
+            addCriterion("is_pay <=", value, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("is_pay <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayLike(String value) {
+            addCriterion("is_pay like", value, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayNotLike(String value) {
+            addCriterion("is_pay not like", value, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayIn(List<String> values) {
+            addCriterion("is_pay in", values, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayNotIn(List<String> values) {
+            addCriterion("is_pay not in", values, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayBetween(String value1, String value2) {
+            addCriterion("is_pay between", value1, value2, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsPayNotBetween(String value1, String value2) {
+            addCriterion("is_pay not between", value1, value2, "isPay");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianIsNull() {
+            addCriterion("kandian is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianIsNotNull() {
+            addCriterion("kandian is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianEqualTo(Integer value) {
+            addCriterion("kandian =", value, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("kandian = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianNotEqualTo(Integer value) {
+            addCriterion("kandian <>", value, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("kandian <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianGreaterThan(Integer value) {
+            addCriterion("kandian >", value, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("kandian > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianGreaterThanOrEqualTo(Integer value) {
+            addCriterion("kandian >=", value, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("kandian >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianLessThan(Integer value) {
+            addCriterion("kandian <", value, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("kandian < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianLessThanOrEqualTo(Integer value) {
+            addCriterion("kandian <=", value, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("kandian <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianIn(List<Integer> values) {
+            addCriterion("kandian in", values, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianNotIn(List<Integer> values) {
+            addCriterion("kandian not in", values, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianBetween(Integer value1, Integer value2) {
+            addCriterion("kandian between", value1, value2, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andKandianNotBetween(Integer value1, Integer value2) {
+            addCriterion("kandian not between", value1, value2, "kandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianIsNull() {
+            addCriterion("free_kandian is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianIsNotNull() {
+            addCriterion("free_kandian is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianEqualTo(Integer value) {
+            addCriterion("free_kandian =", value, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("free_kandian = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianNotEqualTo(Integer value) {
+            addCriterion("free_kandian <>", value, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("free_kandian <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianGreaterThan(Integer value) {
+            addCriterion("free_kandian >", value, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("free_kandian > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianGreaterThanOrEqualTo(Integer value) {
+            addCriterion("free_kandian >=", value, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("free_kandian >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianLessThan(Integer value) {
+            addCriterion("free_kandian <", value, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("free_kandian < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianLessThanOrEqualTo(Integer value) {
+            addCriterion("free_kandian <=", value, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("free_kandian <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianIn(List<Integer> values) {
+            addCriterion("free_kandian in", values, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianNotIn(List<Integer> values) {
+            addCriterion("free_kandian not in", values, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianBetween(Integer value1, Integer value2) {
+            addCriterion("free_kandian between", value1, value2, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andFreeKandianNotBetween(Integer value1, Integer value2) {
+            addCriterion("free_kandian not between", value1, value2, "freeKandian");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeIsNull() {
+            addCriterion("vip_endtime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeIsNotNull() {
+            addCriterion("vip_endtime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeEqualTo(Integer value) {
+            addCriterion("vip_endtime =", value, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("vip_endtime = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeNotEqualTo(Integer value) {
+            addCriterion("vip_endtime <>", value, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("vip_endtime <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeGreaterThan(Integer value) {
+            addCriterion("vip_endtime >", value, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("vip_endtime > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("vip_endtime >=", value, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("vip_endtime >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeLessThan(Integer value) {
+            addCriterion("vip_endtime <", value, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("vip_endtime < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeLessThanOrEqualTo(Integer value) {
+            addCriterion("vip_endtime <=", value, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("vip_endtime <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeIn(List<Integer> values) {
+            addCriterion("vip_endtime in", values, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeNotIn(List<Integer> values) {
+            addCriterion("vip_endtime not in", values, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeBetween(Integer value1, Integer value2) {
+            addCriterion("vip_endtime between", value1, value2, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andVipEndtimeNotBetween(Integer value1, Integer value2) {
+            addCriterion("vip_endtime not between", value1, value2, "vipEndtime");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpIsNull() {
+            addCriterion("register_ip is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpIsNotNull() {
+            addCriterion("register_ip is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpEqualTo(String value) {
+            addCriterion("register_ip =", value, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("register_ip = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpNotEqualTo(String value) {
+            addCriterion("register_ip <>", value, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("register_ip <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpGreaterThan(String value) {
+            addCriterion("register_ip >", value, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("register_ip > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpGreaterThanOrEqualTo(String value) {
+            addCriterion("register_ip >=", value, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("register_ip >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpLessThan(String value) {
+            addCriterion("register_ip <", value, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("register_ip < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpLessThanOrEqualTo(String value) {
+            addCriterion("register_ip <=", value, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("register_ip <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpLike(String value) {
+            addCriterion("register_ip like", value, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpNotLike(String value) {
+            addCriterion("register_ip not like", value, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpIn(List<String> values) {
+            addCriterion("register_ip in", values, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpNotIn(List<String> values) {
+            addCriterion("register_ip not in", values, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpBetween(String value1, String value2) {
+            addCriterion("register_ip between", value1, value2, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegisterIpNotBetween(String value1, String value2) {
+            addCriterion("register_ip not between", value1, value2, "registerIp");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryIsNull() {
+            addCriterion("country is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryIsNotNull() {
+            addCriterion("country is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryEqualTo(String value) {
+            addCriterion("country =", value, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("country = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNotEqualTo(String value) {
+            addCriterion("country <>", value, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("country <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryGreaterThan(String value) {
+            addCriterion("country >", value, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("country > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryGreaterThanOrEqualTo(String value) {
+            addCriterion("country >=", value, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("country >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryLessThan(String value) {
+            addCriterion("country <", value, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("country < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryLessThanOrEqualTo(String value) {
+            addCriterion("country <=", value, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("country <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryLike(String value) {
+            addCriterion("country like", value, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNotLike(String value) {
+            addCriterion("country not like", value, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryIn(List<String> values) {
+            addCriterion("country in", values, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNotIn(List<String> values) {
+            addCriterion("country not in", values, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryBetween(String value1, String value2) {
+            addCriterion("country between", value1, value2, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNotBetween(String value1, String value2) {
+            addCriterion("country not between", value1, value2, "country");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaIsNull() {
+            addCriterion("area is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaIsNotNull() {
+            addCriterion("area is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaEqualTo(String value) {
+            addCriterion("area =", value, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("area = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaNotEqualTo(String value) {
+            addCriterion("area <>", value, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("area <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaGreaterThan(String value) {
+            addCriterion("area >", value, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("area > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaGreaterThanOrEqualTo(String value) {
+            addCriterion("area >=", value, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("area >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaLessThan(String value) {
+            addCriterion("area <", value, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("area < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaLessThanOrEqualTo(String value) {
+            addCriterion("area <=", value, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("area <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaLike(String value) {
+            addCriterion("area like", value, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaNotLike(String value) {
+            addCriterion("area not like", value, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaIn(List<String> values) {
+            addCriterion("area in", values, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaNotIn(List<String> values) {
+            addCriterion("area not in", values, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaBetween(String value1, String value2) {
+            addCriterion("area between", value1, value2, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andAreaNotBetween(String value1, String value2) {
+            addCriterion("area not between", value1, value2, "area");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceIsNull() {
+            addCriterion("province is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceIsNotNull() {
+            addCriterion("province is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceEqualTo(String value) {
+            addCriterion("province =", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("province = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotEqualTo(String value) {
+            addCriterion("province <>", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("province <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceGreaterThan(String value) {
+            addCriterion("province >", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("province > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceGreaterThanOrEqualTo(String value) {
+            addCriterion("province >=", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("province >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceLessThan(String value) {
+            addCriterion("province <", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("province < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceLessThanOrEqualTo(String value) {
+            addCriterion("province <=", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("province <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceLike(String value) {
+            addCriterion("province like", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotLike(String value) {
+            addCriterion("province not like", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceIn(List<String> values) {
+            addCriterion("province in", values, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotIn(List<String> values) {
+            addCriterion("province not in", values, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceBetween(String value1, String value2) {
+            addCriterion("province between", value1, value2, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotBetween(String value1, String value2) {
+            addCriterion("province not between", value1, value2, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityIsNull() {
+            addCriterion("city is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityIsNotNull() {
+            addCriterion("city is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityEqualTo(String value) {
+            addCriterion("city =", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("city = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotEqualTo(String value) {
+            addCriterion("city <>", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("city <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCityGreaterThan(String value) {
+            addCriterion("city >", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("city > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCityGreaterThanOrEqualTo(String value) {
+            addCriterion("city >=", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("city >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCityLessThan(String value) {
+            addCriterion("city <", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("city < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCityLessThanOrEqualTo(String value) {
+            addCriterion("city <=", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("city <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andCityLike(String value) {
+            addCriterion("city like", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotLike(String value) {
+            addCriterion("city not like", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityIn(List<String> values) {
+            addCriterion("city in", values, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotIn(List<String> values) {
+            addCriterion("city not in", values, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityBetween(String value1, String value2) {
+            addCriterion("city between", value1, value2, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotBetween(String value1, String value2) {
+            addCriterion("city not between", value1, value2, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspIsNull() {
+            addCriterion("isp is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspIsNotNull() {
+            addCriterion("isp is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspEqualTo(String value) {
+            addCriterion("isp =", value, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("isp = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIspNotEqualTo(String value) {
+            addCriterion("isp <>", value, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("isp <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIspGreaterThan(String value) {
+            addCriterion("isp >", value, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("isp > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIspGreaterThanOrEqualTo(String value) {
+            addCriterion("isp >=", value, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("isp >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIspLessThan(String value) {
+            addCriterion("isp <", value, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("isp < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIspLessThanOrEqualTo(String value) {
+            addCriterion("isp <=", value, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("isp <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andIspLike(String value) {
+            addCriterion("isp like", value, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspNotLike(String value) {
+            addCriterion("isp not like", value, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspIn(List<String> values) {
+            addCriterion("isp in", values, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspNotIn(List<String> values) {
+            addCriterion("isp not in", values, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspBetween(String value1, String value2) {
+            addCriterion("isp between", value1, value2, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andIspNotBetween(String value1, String value2) {
+            addCriterion("isp not between", value1, value2, "isp");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdIsNull() {
+            addCriterion("channel_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdIsNotNull() {
+            addCriterion("channel_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdEqualTo(Integer value) {
+            addCriterion("channel_id =", value, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("channel_id = ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdNotEqualTo(Integer value) {
+            addCriterion("channel_id <>", value, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdNotEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("channel_id <> ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdGreaterThan(Integer value) {
+            addCriterion("channel_id >", value, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdGreaterThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("channel_id > ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("channel_id >=", value, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdGreaterThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("channel_id >= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdLessThan(Integer value) {
+            addCriterion("channel_id <", value, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdLessThanColumn(User.Column column) {
+            addCriterion(new StringBuilder("channel_id < ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdLessThanOrEqualTo(Integer value) {
+            addCriterion("channel_id <=", value, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdLessThanOrEqualToColumn(User.Column column) {
+            addCriterion(new StringBuilder("channel_id <= ").append(column.getEscapedColumnName()).toString());
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdIn(List<Integer> values) {
+            addCriterion("channel_id in", values, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdNotIn(List<Integer> values) {
+            addCriterion("channel_id not in", values, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdBetween(Integer value1, Integer value2) {
+            addCriterion("channel_id between", value1, value2, "channelId");
+            return (Criteria) this;
+        }
+
+        public Criteria andChannelIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("channel_id not between", value1, value2, "channelId");
+            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(User.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(User.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(User.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(User.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(User.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(User.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 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(User.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(User.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(User.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(User.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(User.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(User.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(User.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(User.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(User.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(User.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(User.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(User.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;
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table user
+     *
+     * @mbg.generated do_not_delete_during_merge Tue Aug 17 22:19:18 CST 2021
+     */
+    public static class Criteria extends GeneratedCriteria {
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        private UserExample example;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        protected Criteria(UserExample example) {
+            super();
+            this.example = example;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        public UserExample example() {
+            return this.example;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 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 user
+             *
+             * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+             */
+            Criteria add(Criteria add);
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 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 user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        void criteria(Criteria criteria);
+    }
+
+    public interface IExampleWhen {
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table user
+         *
+         * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+         */
+        void example(com.book.server.dao.entity.example.UserExample example);
+    }
+}

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

@@ -0,0 +1,164 @@
+package com.book.server.dao.mapper;
+
+import com.book.server.dao.entity.User;
+import com.book.server.dao.entity.example.UserExample;
+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 UserMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    long countByExample(UserExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int deleteByExample(UserExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int insert(User record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int insertSelective(@Param("record") User record, @Param("selective") User.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    User selectOneByExample(UserExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    User selectOneByExampleSelective(@Param("example") UserExample example, @Param("selective") User.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    List<User> selectByExampleSelective(@Param("example") UserExample example, @Param("selective") User.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    List<User> selectByExample(UserExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    User selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") User.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    User selectByPrimaryKey(Long id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example, @Param("selective") User.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int updateByExample(@Param("record") User record, @Param("example") UserExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int updateByPrimaryKeySelective(@Param("record") User record, @Param("selective") User.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int updateByPrimaryKey(User record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int batchInsert(@Param("list") List<User> list);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int batchInsertSelective(@Param("list") List<User> list, @Param("selective") User.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int upsert(User record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table user
+     *
+     * @mbg.generated Tue Aug 17 22:19:18 CST 2021
+     */
+    int upsertSelective(@Param("record") User record, @Param("selective") User.Column ... selective);
+}

+ 7 - 0
book-server/src/main/java/com/book/server/service/UserService.java

@@ -0,0 +1,7 @@
+package com.book.server.service;
+
+import com.book.server.dao.entity.User;
+
+public interface UserService {
+    User getUserByOpenId(String openid);
+}

+ 2 - 2
book-server/src/main/java/com/book/server/service/impl/BookServiceImpl.java

@@ -54,7 +54,7 @@ public class BookServiceImpl implements BookService {
 
 
     @Override
     @Override
     public List<BookRes> query(QueryVO queryVO) {
     public List<BookRes> query(QueryVO queryVO) {
-        queryVO.setQuery("%"+queryVO.getQuery()+"%");
+        queryVO.setQuery("%" + queryVO.getQuery() + "%");
         List<BookRes> bookResList = bookMapper2.queryBookRes(queryVO, queryVO.getPage() * queryVO.getSize(), queryVO.getSize());
         List<BookRes> bookResList = bookMapper2.queryBookRes(queryVO, queryVO.getPage() * queryVO.getSize(), queryVO.getSize());
         return bookResList;
         return bookResList;
     }
     }
@@ -224,7 +224,7 @@ public class BookServiceImpl implements BookService {
             int i = new Random().nextInt(bookList.size());
             int i = new Random().nextInt(bookList.size());
             book.setRecommandBookId(bookList.get(i).getId());
             book.setRecommandBookId(bookList.get(i).getId());
             System.out.println(JsonUtils.toJsonStr(book));
             System.out.println(JsonUtils.toJsonStr(book));
-               bookMapper.insert(book);
+            bookMapper.insert(book);
 
 
 
 
         }
         }

+ 24 - 0
book-server/src/main/java/com/book/server/service/impl/UserServiceImpl.java

@@ -0,0 +1,24 @@
+package com.book.server.service.impl;
+
+import com.book.server.dao.entity.User;
+import com.book.server.dao.entity.example.UserExample;
+import com.book.server.dao.mapper.UserMapper;
+import com.book.server.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl implements UserService {
+    @Autowired
+    private UserMapper userMapper;
+
+    @Override
+    public User getUserByOpenId(String openid) {
+        User user = userMapper.selectOneByExample(
+                UserExample.newAndCreateCriteria()
+                        .andOpenidEqualTo(openid)
+                        .example()
+        );
+        return user;
+    }
+}

+ 1 - 1
book-server/src/main/resources/application-dev.yml

@@ -1,5 +1,5 @@
 server:
 server:
-  port: 8080
+  port: 9999
 
 
 spring:
 spring:
   datasource:
   datasource:

+ 0 - 3
book-server/src/main/resources/application.yml

@@ -1,6 +1,3 @@
-server:
-  port: 9999
-
 spring:
 spring:
   # 环境 dev:开发环境|test:测试环境|prod:生产环境
   # 环境 dev:开发环境|test:测试环境|prod:生产环境
   profiles:
   profiles:

+ 1244 - 0
book-server/src/main/resources/mapper/UserMapper.xml

@@ -0,0 +1,1244 @@
+<?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.UserMapper">
+  <resultMap id="BaseResultMap" type="com.book.server.dao.entity.User">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Tue Aug 17 22:19:18 CST 2021.
+    -->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="openid" jdbcType="VARCHAR" property="openid" />
+    <result column="unionid" jdbcType="VARCHAR" property="unionid" />
+    <result column="visitor" jdbcType="VARCHAR" property="visitor" />
+    <result column="nickname" jdbcType="VARCHAR" property="nickname" />
+    <result column="sex" jdbcType="CHAR" property="sex" />
+    <result column="mobile" jdbcType="CHAR" property="mobile" />
+    <result column="avatar" jdbcType="VARCHAR" property="avatar" />
+    <result column="is_subscribe" jdbcType="CHAR" property="isSubscribe" />
+    <result column="subscription_extend" jdbcType="CHAR" property="subscriptionExtend" />
+    <result column="subscribe_time" jdbcType="INTEGER" property="subscribeTime" />
+    <result column="book_category_ids" jdbcType="VARCHAR" property="bookCategoryIds" />
+    <result column="operate_time" jdbcType="INTEGER" property="operateTime" />
+    <result column="is_pay" jdbcType="CHAR" property="isPay" />
+    <result column="kandian" jdbcType="INTEGER" property="kandian" />
+    <result column="free_kandian" jdbcType="INTEGER" property="freeKandian" />
+    <result column="vip_endtime" jdbcType="INTEGER" property="vipEndtime" />
+    <result column="register_ip" jdbcType="VARCHAR" property="registerIp" />
+    <result column="country" jdbcType="VARCHAR" property="country" />
+    <result column="area" jdbcType="VARCHAR" property="area" />
+    <result column="province" jdbcType="VARCHAR" property="province" />
+    <result column="city" jdbcType="VARCHAR" property="city" />
+    <result column="isp" jdbcType="VARCHAR" property="isp" />
+    <result column="channel_id" jdbcType="INTEGER" property="channelId" />
+    <result column="state" jdbcType="CHAR" property="state" />
+    <result column="createtime" jdbcType="INTEGER" property="createtime" />
+    <result column="updatetime" jdbcType="INTEGER" property="updatetime" />
+  </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 Tue Aug 17 22:19:18 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 Tue Aug 17 22:19:18 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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    id, openid, unionid, visitor, nickname, sex, mobile, avatar, is_subscribe, subscription_extend, 
+    subscribe_time, book_category_ids, operate_time, is_pay, kandian, free_kandian, vip_endtime, 
+    register_ip, country, area, province, city, isp, channel_id, state, createtime, updatetime
+  </sql>
+  <select id="selectByExample" parameterType="com.book.server.dao.entity.example.UserExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Tue Aug 17 22:19:18 CST 2021.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from user
+    <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 Tue Aug 17 22:19:18 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 user
+    <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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from user
+    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 Tue Aug 17 22:19:18 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 user
+    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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    delete from user
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.book.server.dao.entity.example.UserExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Tue Aug 17 22:19:18 CST 2021.
+    -->
+    delete from user
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.book.server.dao.entity.User">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Tue Aug 17 22:19:18 CST 2021.
+    -->
+    insert into user (id, openid, unionid, 
+      visitor, nickname, sex, 
+      mobile, avatar, is_subscribe, 
+      subscription_extend, subscribe_time, book_category_ids, 
+      operate_time, is_pay, kandian, 
+      free_kandian, vip_endtime, register_ip, 
+      country, area, province, 
+      city, isp, channel_id, 
+      state, createtime, updatetime
+      )
+    values (#{id,jdbcType=BIGINT}, #{openid,jdbcType=VARCHAR}, #{unionid,jdbcType=VARCHAR}, 
+      #{visitor,jdbcType=VARCHAR}, #{nickname,jdbcType=VARCHAR}, #{sex,jdbcType=CHAR}, 
+      #{mobile,jdbcType=CHAR}, #{avatar,jdbcType=VARCHAR}, #{isSubscribe,jdbcType=CHAR}, 
+      #{subscriptionExtend,jdbcType=CHAR}, #{subscribeTime,jdbcType=INTEGER}, #{bookCategoryIds,jdbcType=VARCHAR}, 
+      #{operateTime,jdbcType=INTEGER}, #{isPay,jdbcType=CHAR}, #{kandian,jdbcType=INTEGER}, 
+      #{freeKandian,jdbcType=INTEGER}, #{vipEndtime,jdbcType=INTEGER}, #{registerIp,jdbcType=VARCHAR}, 
+      #{country,jdbcType=VARCHAR}, #{area,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR}, 
+      #{city,jdbcType=VARCHAR}, #{isp,jdbcType=VARCHAR}, #{channelId,jdbcType=INTEGER}, 
+      #{state,jdbcType=CHAR}, #{createtime,jdbcType=INTEGER}, #{updatetime,jdbcType=INTEGER}
+      )
+  </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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    insert into user
+    <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.openid != null">
+            openid,
+          </if>
+          <if test="record.unionid != null">
+            unionid,
+          </if>
+          <if test="record.visitor != null">
+            visitor,
+          </if>
+          <if test="record.nickname != null">
+            nickname,
+          </if>
+          <if test="record.sex != null">
+            sex,
+          </if>
+          <if test="record.mobile != null">
+            mobile,
+          </if>
+          <if test="record.avatar != null">
+            avatar,
+          </if>
+          <if test="record.isSubscribe != null">
+            is_subscribe,
+          </if>
+          <if test="record.subscriptionExtend != null">
+            subscription_extend,
+          </if>
+          <if test="record.subscribeTime != null">
+            subscribe_time,
+          </if>
+          <if test="record.bookCategoryIds != null">
+            book_category_ids,
+          </if>
+          <if test="record.operateTime != null">
+            operate_time,
+          </if>
+          <if test="record.isPay != null">
+            is_pay,
+          </if>
+          <if test="record.kandian != null">
+            kandian,
+          </if>
+          <if test="record.freeKandian != null">
+            free_kandian,
+          </if>
+          <if test="record.vipEndtime != null">
+            vip_endtime,
+          </if>
+          <if test="record.registerIp != null">
+            register_ip,
+          </if>
+          <if test="record.country != null">
+            country,
+          </if>
+          <if test="record.area != null">
+            area,
+          </if>
+          <if test="record.province != null">
+            province,
+          </if>
+          <if test="record.city != null">
+            city,
+          </if>
+          <if test="record.isp != null">
+            isp,
+          </if>
+          <if test="record.channelId != null">
+            channel_id,
+          </if>
+          <if test="record.state != null">
+            state,
+          </if>
+          <if test="record.createtime != null">
+            createtime,
+          </if>
+          <if test="record.updatetime != null">
+            updatetime,
+          </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.openid != null">
+            #{record.openid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.unionid != null">
+            #{record.unionid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.visitor != null">
+            #{record.visitor,jdbcType=VARCHAR},
+          </if>
+          <if test="record.nickname != null">
+            #{record.nickname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sex != null">
+            #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.mobile != null">
+            #{record.mobile,jdbcType=CHAR},
+          </if>
+          <if test="record.avatar != null">
+            #{record.avatar,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isSubscribe != null">
+            #{record.isSubscribe,jdbcType=CHAR},
+          </if>
+          <if test="record.subscriptionExtend != null">
+            #{record.subscriptionExtend,jdbcType=CHAR},
+          </if>
+          <if test="record.subscribeTime != null">
+            #{record.subscribeTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.bookCategoryIds != null">
+            #{record.bookCategoryIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.operateTime != null">
+            #{record.operateTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.isPay != null">
+            #{record.isPay,jdbcType=CHAR},
+          </if>
+          <if test="record.kandian != null">
+            #{record.kandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeKandian != null">
+            #{record.freeKandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.vipEndtime != null">
+            #{record.vipEndtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.registerIp != null">
+            #{record.registerIp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.country != null">
+            #{record.country,jdbcType=VARCHAR},
+          </if>
+          <if test="record.area != null">
+            #{record.area,jdbcType=VARCHAR},
+          </if>
+          <if test="record.province != null">
+            #{record.province,jdbcType=VARCHAR},
+          </if>
+          <if test="record.city != null">
+            #{record.city,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isp != null">
+            #{record.isp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.channelId != null">
+            #{record.channelId,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            #{record.updatetime,jdbcType=INTEGER},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+  </insert>
+  <select id="countByExample" parameterType="com.book.server.dao.entity.example.UserExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Tue Aug 17 22:19:18 CST 2021.
+    -->
+    select count(*) from user
+    <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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    update user
+    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.openid != null">
+            openid = #{record.openid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.unionid != null">
+            unionid = #{record.unionid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.visitor != null">
+            visitor = #{record.visitor,jdbcType=VARCHAR},
+          </if>
+          <if test="record.nickname != null">
+            nickname = #{record.nickname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sex != null">
+            sex = #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.mobile != null">
+            mobile = #{record.mobile,jdbcType=CHAR},
+          </if>
+          <if test="record.avatar != null">
+            avatar = #{record.avatar,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isSubscribe != null">
+            is_subscribe = #{record.isSubscribe,jdbcType=CHAR},
+          </if>
+          <if test="record.subscriptionExtend != null">
+            subscription_extend = #{record.subscriptionExtend,jdbcType=CHAR},
+          </if>
+          <if test="record.subscribeTime != null">
+            subscribe_time = #{record.subscribeTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.bookCategoryIds != null">
+            book_category_ids = #{record.bookCategoryIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.operateTime != null">
+            operate_time = #{record.operateTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.isPay != null">
+            is_pay = #{record.isPay,jdbcType=CHAR},
+          </if>
+          <if test="record.kandian != null">
+            kandian = #{record.kandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeKandian != null">
+            free_kandian = #{record.freeKandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.vipEndtime != null">
+            vip_endtime = #{record.vipEndtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.registerIp != null">
+            register_ip = #{record.registerIp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.country != null">
+            country = #{record.country,jdbcType=VARCHAR},
+          </if>
+          <if test="record.area != null">
+            area = #{record.area,jdbcType=VARCHAR},
+          </if>
+          <if test="record.province != null">
+            province = #{record.province,jdbcType=VARCHAR},
+          </if>
+          <if test="record.city != null">
+            city = #{record.city,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isp != null">
+            isp = #{record.isp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.channelId != null">
+            channel_id = #{record.channelId,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            state = #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    update user
+    set id = #{record.id,jdbcType=BIGINT},
+      openid = #{record.openid,jdbcType=VARCHAR},
+      unionid = #{record.unionid,jdbcType=VARCHAR},
+      visitor = #{record.visitor,jdbcType=VARCHAR},
+      nickname = #{record.nickname,jdbcType=VARCHAR},
+      sex = #{record.sex,jdbcType=CHAR},
+      mobile = #{record.mobile,jdbcType=CHAR},
+      avatar = #{record.avatar,jdbcType=VARCHAR},
+      is_subscribe = #{record.isSubscribe,jdbcType=CHAR},
+      subscription_extend = #{record.subscriptionExtend,jdbcType=CHAR},
+      subscribe_time = #{record.subscribeTime,jdbcType=INTEGER},
+      book_category_ids = #{record.bookCategoryIds,jdbcType=VARCHAR},
+      operate_time = #{record.operateTime,jdbcType=INTEGER},
+      is_pay = #{record.isPay,jdbcType=CHAR},
+      kandian = #{record.kandian,jdbcType=INTEGER},
+      free_kandian = #{record.freeKandian,jdbcType=INTEGER},
+      vip_endtime = #{record.vipEndtime,jdbcType=INTEGER},
+      register_ip = #{record.registerIp,jdbcType=VARCHAR},
+      country = #{record.country,jdbcType=VARCHAR},
+      area = #{record.area,jdbcType=VARCHAR},
+      province = #{record.province,jdbcType=VARCHAR},
+      city = #{record.city,jdbcType=VARCHAR},
+      isp = #{record.isp,jdbcType=VARCHAR},
+      channel_id = #{record.channelId,jdbcType=INTEGER},
+      state = #{record.state,jdbcType=CHAR},
+      createtime = #{record.createtime,jdbcType=INTEGER},
+      updatetime = #{record.updatetime,jdbcType=INTEGER}
+    <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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    update user
+    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.openid != null">
+            openid = #{record.openid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.unionid != null">
+            unionid = #{record.unionid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.visitor != null">
+            visitor = #{record.visitor,jdbcType=VARCHAR},
+          </if>
+          <if test="record.nickname != null">
+            nickname = #{record.nickname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sex != null">
+            sex = #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.mobile != null">
+            mobile = #{record.mobile,jdbcType=CHAR},
+          </if>
+          <if test="record.avatar != null">
+            avatar = #{record.avatar,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isSubscribe != null">
+            is_subscribe = #{record.isSubscribe,jdbcType=CHAR},
+          </if>
+          <if test="record.subscriptionExtend != null">
+            subscription_extend = #{record.subscriptionExtend,jdbcType=CHAR},
+          </if>
+          <if test="record.subscribeTime != null">
+            subscribe_time = #{record.subscribeTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.bookCategoryIds != null">
+            book_category_ids = #{record.bookCategoryIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.operateTime != null">
+            operate_time = #{record.operateTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.isPay != null">
+            is_pay = #{record.isPay,jdbcType=CHAR},
+          </if>
+          <if test="record.kandian != null">
+            kandian = #{record.kandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeKandian != null">
+            free_kandian = #{record.freeKandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.vipEndtime != null">
+            vip_endtime = #{record.vipEndtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.registerIp != null">
+            register_ip = #{record.registerIp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.country != null">
+            country = #{record.country,jdbcType=VARCHAR},
+          </if>
+          <if test="record.area != null">
+            area = #{record.area,jdbcType=VARCHAR},
+          </if>
+          <if test="record.province != null">
+            province = #{record.province,jdbcType=VARCHAR},
+          </if>
+          <if test="record.city != null">
+            city = #{record.city,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isp != null">
+            isp = #{record.isp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.channelId != null">
+            channel_id = #{record.channelId,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            state = #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+    where id = #{record.id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.book.server.dao.entity.User">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Tue Aug 17 22:19:18 CST 2021.
+    -->
+    update user
+    set openid = #{openid,jdbcType=VARCHAR},
+      unionid = #{unionid,jdbcType=VARCHAR},
+      visitor = #{visitor,jdbcType=VARCHAR},
+      nickname = #{nickname,jdbcType=VARCHAR},
+      sex = #{sex,jdbcType=CHAR},
+      mobile = #{mobile,jdbcType=CHAR},
+      avatar = #{avatar,jdbcType=VARCHAR},
+      is_subscribe = #{isSubscribe,jdbcType=CHAR},
+      subscription_extend = #{subscriptionExtend,jdbcType=CHAR},
+      subscribe_time = #{subscribeTime,jdbcType=INTEGER},
+      book_category_ids = #{bookCategoryIds,jdbcType=VARCHAR},
+      operate_time = #{operateTime,jdbcType=INTEGER},
+      is_pay = #{isPay,jdbcType=CHAR},
+      kandian = #{kandian,jdbcType=INTEGER},
+      free_kandian = #{freeKandian,jdbcType=INTEGER},
+      vip_endtime = #{vipEndtime,jdbcType=INTEGER},
+      register_ip = #{registerIp,jdbcType=VARCHAR},
+      country = #{country,jdbcType=VARCHAR},
+      area = #{area,jdbcType=VARCHAR},
+      province = #{province,jdbcType=VARCHAR},
+      city = #{city,jdbcType=VARCHAR},
+      isp = #{isp,jdbcType=VARCHAR},
+      channel_id = #{channelId,jdbcType=INTEGER},
+      state = #{state,jdbcType=CHAR},
+      createtime = #{createtime,jdbcType=INTEGER},
+      updatetime = #{updatetime,jdbcType=INTEGER}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <select id="selectOneByExample" parameterType="com.book.server.dao.entity.example.UserExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Tue Aug 17 22:19:18 CST 2021.
+    -->
+    select
+    <include refid="Base_Column_List" />
+    from user
+    <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 Tue Aug 17 22:19:18 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 user
+    <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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    insert into user
+    (id, openid, unionid, visitor, nickname, sex, mobile, avatar, is_subscribe, subscription_extend, 
+      subscribe_time, book_category_ids, operate_time, is_pay, kandian, free_kandian, 
+      vip_endtime, register_ip, country, area, province, city, isp, channel_id, state, 
+      createtime, updatetime)
+    values
+    <foreach collection="list" item="item" separator=",">
+      (#{item.id,jdbcType=BIGINT}, #{item.openid,jdbcType=VARCHAR}, #{item.unionid,jdbcType=VARCHAR}, 
+        #{item.visitor,jdbcType=VARCHAR}, #{item.nickname,jdbcType=VARCHAR}, #{item.sex,jdbcType=CHAR}, 
+        #{item.mobile,jdbcType=CHAR}, #{item.avatar,jdbcType=VARCHAR}, #{item.isSubscribe,jdbcType=CHAR}, 
+        #{item.subscriptionExtend,jdbcType=CHAR}, #{item.subscribeTime,jdbcType=INTEGER}, 
+        #{item.bookCategoryIds,jdbcType=VARCHAR}, #{item.operateTime,jdbcType=INTEGER}, 
+        #{item.isPay,jdbcType=CHAR}, #{item.kandian,jdbcType=INTEGER}, #{item.freeKandian,jdbcType=INTEGER}, 
+        #{item.vipEndtime,jdbcType=INTEGER}, #{item.registerIp,jdbcType=VARCHAR}, #{item.country,jdbcType=VARCHAR}, 
+        #{item.area,jdbcType=VARCHAR}, #{item.province,jdbcType=VARCHAR}, #{item.city,jdbcType=VARCHAR}, 
+        #{item.isp,jdbcType=VARCHAR}, #{item.channelId,jdbcType=INTEGER}, #{item.state,jdbcType=CHAR}, 
+        #{item.createtime,jdbcType=INTEGER}, #{item.updatetime,jdbcType=INTEGER})
+    </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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    insert into user (
+    <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="'openid'.toString() == column.value">
+          #{item.openid,jdbcType=VARCHAR}
+        </if>
+        <if test="'unionid'.toString() == column.value">
+          #{item.unionid,jdbcType=VARCHAR}
+        </if>
+        <if test="'visitor'.toString() == column.value">
+          #{item.visitor,jdbcType=VARCHAR}
+        </if>
+        <if test="'nickname'.toString() == column.value">
+          #{item.nickname,jdbcType=VARCHAR}
+        </if>
+        <if test="'sex'.toString() == column.value">
+          #{item.sex,jdbcType=CHAR}
+        </if>
+        <if test="'mobile'.toString() == column.value">
+          #{item.mobile,jdbcType=CHAR}
+        </if>
+        <if test="'avatar'.toString() == column.value">
+          #{item.avatar,jdbcType=VARCHAR}
+        </if>
+        <if test="'is_subscribe'.toString() == column.value">
+          #{item.isSubscribe,jdbcType=CHAR}
+        </if>
+        <if test="'subscription_extend'.toString() == column.value">
+          #{item.subscriptionExtend,jdbcType=CHAR}
+        </if>
+        <if test="'subscribe_time'.toString() == column.value">
+          #{item.subscribeTime,jdbcType=INTEGER}
+        </if>
+        <if test="'book_category_ids'.toString() == column.value">
+          #{item.bookCategoryIds,jdbcType=VARCHAR}
+        </if>
+        <if test="'operate_time'.toString() == column.value">
+          #{item.operateTime,jdbcType=INTEGER}
+        </if>
+        <if test="'is_pay'.toString() == column.value">
+          #{item.isPay,jdbcType=CHAR}
+        </if>
+        <if test="'kandian'.toString() == column.value">
+          #{item.kandian,jdbcType=INTEGER}
+        </if>
+        <if test="'free_kandian'.toString() == column.value">
+          #{item.freeKandian,jdbcType=INTEGER}
+        </if>
+        <if test="'vip_endtime'.toString() == column.value">
+          #{item.vipEndtime,jdbcType=INTEGER}
+        </if>
+        <if test="'register_ip'.toString() == column.value">
+          #{item.registerIp,jdbcType=VARCHAR}
+        </if>
+        <if test="'country'.toString() == column.value">
+          #{item.country,jdbcType=VARCHAR}
+        </if>
+        <if test="'area'.toString() == column.value">
+          #{item.area,jdbcType=VARCHAR}
+        </if>
+        <if test="'province'.toString() == column.value">
+          #{item.province,jdbcType=VARCHAR}
+        </if>
+        <if test="'city'.toString() == column.value">
+          #{item.city,jdbcType=VARCHAR}
+        </if>
+        <if test="'isp'.toString() == column.value">
+          #{item.isp,jdbcType=VARCHAR}
+        </if>
+        <if test="'channel_id'.toString() == column.value">
+          #{item.channelId,jdbcType=INTEGER}
+        </if>
+        <if test="'state'.toString() == column.value">
+          #{item.state,jdbcType=CHAR}
+        </if>
+        <if test="'createtime'.toString() == column.value">
+          #{item.createtime,jdbcType=INTEGER}
+        </if>
+        <if test="'updatetime'.toString() == column.value">
+          #{item.updatetime,jdbcType=INTEGER}
+        </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 Tue Aug 17 22:19:18 CST 2021.
+    -->
+    insert into user
+    <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.openid != null">
+            openid,
+          </if>
+          <if test="record.unionid != null">
+            unionid,
+          </if>
+          <if test="record.visitor != null">
+            visitor,
+          </if>
+          <if test="record.nickname != null">
+            nickname,
+          </if>
+          <if test="record.sex != null">
+            sex,
+          </if>
+          <if test="record.mobile != null">
+            mobile,
+          </if>
+          <if test="record.avatar != null">
+            avatar,
+          </if>
+          <if test="record.isSubscribe != null">
+            is_subscribe,
+          </if>
+          <if test="record.subscriptionExtend != null">
+            subscription_extend,
+          </if>
+          <if test="record.subscribeTime != null">
+            subscribe_time,
+          </if>
+          <if test="record.bookCategoryIds != null">
+            book_category_ids,
+          </if>
+          <if test="record.operateTime != null">
+            operate_time,
+          </if>
+          <if test="record.isPay != null">
+            is_pay,
+          </if>
+          <if test="record.kandian != null">
+            kandian,
+          </if>
+          <if test="record.freeKandian != null">
+            free_kandian,
+          </if>
+          <if test="record.vipEndtime != null">
+            vip_endtime,
+          </if>
+          <if test="record.registerIp != null">
+            register_ip,
+          </if>
+          <if test="record.country != null">
+            country,
+          </if>
+          <if test="record.area != null">
+            area,
+          </if>
+          <if test="record.province != null">
+            province,
+          </if>
+          <if test="record.city != null">
+            city,
+          </if>
+          <if test="record.isp != null">
+            isp,
+          </if>
+          <if test="record.channelId != null">
+            channel_id,
+          </if>
+          <if test="record.state != null">
+            state,
+          </if>
+          <if test="record.createtime != null">
+            createtime,
+          </if>
+          <if test="record.updatetime != null">
+            updatetime,
+          </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.openid != null">
+            #{record.openid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.unionid != null">
+            #{record.unionid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.visitor != null">
+            #{record.visitor,jdbcType=VARCHAR},
+          </if>
+          <if test="record.nickname != null">
+            #{record.nickname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sex != null">
+            #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.mobile != null">
+            #{record.mobile,jdbcType=CHAR},
+          </if>
+          <if test="record.avatar != null">
+            #{record.avatar,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isSubscribe != null">
+            #{record.isSubscribe,jdbcType=CHAR},
+          </if>
+          <if test="record.subscriptionExtend != null">
+            #{record.subscriptionExtend,jdbcType=CHAR},
+          </if>
+          <if test="record.subscribeTime != null">
+            #{record.subscribeTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.bookCategoryIds != null">
+            #{record.bookCategoryIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.operateTime != null">
+            #{record.operateTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.isPay != null">
+            #{record.isPay,jdbcType=CHAR},
+          </if>
+          <if test="record.kandian != null">
+            #{record.kandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeKandian != null">
+            #{record.freeKandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.vipEndtime != null">
+            #{record.vipEndtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.registerIp != null">
+            #{record.registerIp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.country != null">
+            #{record.country,jdbcType=VARCHAR},
+          </if>
+          <if test="record.area != null">
+            #{record.area,jdbcType=VARCHAR},
+          </if>
+          <if test="record.province != null">
+            #{record.province,jdbcType=VARCHAR},
+          </if>
+          <if test="record.city != null">
+            #{record.city,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isp != null">
+            #{record.isp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.channelId != null">
+            #{record.channelId,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            #{record.updatetime,jdbcType=INTEGER},
+          </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.openid != null">
+            openid = #{record.openid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.unionid != null">
+            unionid = #{record.unionid,jdbcType=VARCHAR},
+          </if>
+          <if test="record.visitor != null">
+            visitor = #{record.visitor,jdbcType=VARCHAR},
+          </if>
+          <if test="record.nickname != null">
+            nickname = #{record.nickname,jdbcType=VARCHAR},
+          </if>
+          <if test="record.sex != null">
+            sex = #{record.sex,jdbcType=CHAR},
+          </if>
+          <if test="record.mobile != null">
+            mobile = #{record.mobile,jdbcType=CHAR},
+          </if>
+          <if test="record.avatar != null">
+            avatar = #{record.avatar,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isSubscribe != null">
+            is_subscribe = #{record.isSubscribe,jdbcType=CHAR},
+          </if>
+          <if test="record.subscriptionExtend != null">
+            subscription_extend = #{record.subscriptionExtend,jdbcType=CHAR},
+          </if>
+          <if test="record.subscribeTime != null">
+            subscribe_time = #{record.subscribeTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.bookCategoryIds != null">
+            book_category_ids = #{record.bookCategoryIds,jdbcType=VARCHAR},
+          </if>
+          <if test="record.operateTime != null">
+            operate_time = #{record.operateTime,jdbcType=INTEGER},
+          </if>
+          <if test="record.isPay != null">
+            is_pay = #{record.isPay,jdbcType=CHAR},
+          </if>
+          <if test="record.kandian != null">
+            kandian = #{record.kandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.freeKandian != null">
+            free_kandian = #{record.freeKandian,jdbcType=INTEGER},
+          </if>
+          <if test="record.vipEndtime != null">
+            vip_endtime = #{record.vipEndtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.registerIp != null">
+            register_ip = #{record.registerIp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.country != null">
+            country = #{record.country,jdbcType=VARCHAR},
+          </if>
+          <if test="record.area != null">
+            area = #{record.area,jdbcType=VARCHAR},
+          </if>
+          <if test="record.province != null">
+            province = #{record.province,jdbcType=VARCHAR},
+          </if>
+          <if test="record.city != null">
+            city = #{record.city,jdbcType=VARCHAR},
+          </if>
+          <if test="record.isp != null">
+            isp = #{record.isp,jdbcType=VARCHAR},
+          </if>
+          <if test="record.channelId != null">
+            channel_id = #{record.channelId,jdbcType=INTEGER},
+          </if>
+          <if test="record.state != null">
+            state = #{record.state,jdbcType=CHAR},
+          </if>
+          <if test="record.createtime != null">
+            createtime = #{record.createtime,jdbcType=INTEGER},
+          </if>
+          <if test="record.updatetime != null">
+            updatetime = #{record.updatetime,jdbcType=INTEGER},
+          </if>
+        </trim>
+      </otherwise>
+    </choose>
+  </insert>
+  <insert id="upsert" parameterType="com.book.server.dao.entity.User">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Tue Aug 17 22:19:18 CST 2021.
+    -->
+    insert into user
+    (id, openid, unionid, visitor, nickname, sex, mobile, avatar, is_subscribe, subscription_extend, 
+      subscribe_time, book_category_ids, operate_time, is_pay, kandian, free_kandian, 
+      vip_endtime, register_ip, country, area, province, city, isp, channel_id, state, 
+      createtime, updatetime)
+    values
+    (#{id,jdbcType=BIGINT}, #{openid,jdbcType=VARCHAR}, #{unionid,jdbcType=VARCHAR}, 
+      #{visitor,jdbcType=VARCHAR}, #{nickname,jdbcType=VARCHAR}, #{sex,jdbcType=CHAR}, 
+      #{mobile,jdbcType=CHAR}, #{avatar,jdbcType=VARCHAR}, #{isSubscribe,jdbcType=CHAR}, 
+      #{subscriptionExtend,jdbcType=CHAR}, #{subscribeTime,jdbcType=INTEGER}, #{bookCategoryIds,jdbcType=VARCHAR}, 
+      #{operateTime,jdbcType=INTEGER}, #{isPay,jdbcType=CHAR}, #{kandian,jdbcType=INTEGER}, 
+      #{freeKandian,jdbcType=INTEGER}, #{vipEndtime,jdbcType=INTEGER}, #{registerIp,jdbcType=VARCHAR}, 
+      #{country,jdbcType=VARCHAR}, #{area,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR}, 
+      #{city,jdbcType=VARCHAR}, #{isp,jdbcType=VARCHAR}, #{channelId,jdbcType=INTEGER}, 
+      #{state,jdbcType=CHAR}, #{createtime,jdbcType=INTEGER}, #{updatetime,jdbcType=INTEGER}
+      )
+    on duplicate key update 
+    id = #{id,jdbcType=BIGINT}, 
+    openid = #{openid,jdbcType=VARCHAR}, 
+    unionid = #{unionid,jdbcType=VARCHAR}, 
+    visitor = #{visitor,jdbcType=VARCHAR}, 
+    nickname = #{nickname,jdbcType=VARCHAR}, 
+    sex = #{sex,jdbcType=CHAR}, 
+    mobile = #{mobile,jdbcType=CHAR}, 
+    avatar = #{avatar,jdbcType=VARCHAR}, 
+    is_subscribe = #{isSubscribe,jdbcType=CHAR}, 
+    subscription_extend = #{subscriptionExtend,jdbcType=CHAR}, 
+    subscribe_time = #{subscribeTime,jdbcType=INTEGER}, 
+    book_category_ids = #{bookCategoryIds,jdbcType=VARCHAR}, 
+    operate_time = #{operateTime,jdbcType=INTEGER}, 
+    is_pay = #{isPay,jdbcType=CHAR}, 
+    kandian = #{kandian,jdbcType=INTEGER}, 
+    free_kandian = #{freeKandian,jdbcType=INTEGER}, 
+    vip_endtime = #{vipEndtime,jdbcType=INTEGER}, 
+    register_ip = #{registerIp,jdbcType=VARCHAR}, 
+    country = #{country,jdbcType=VARCHAR}, 
+    area = #{area,jdbcType=VARCHAR}, 
+    province = #{province,jdbcType=VARCHAR}, 
+    city = #{city,jdbcType=VARCHAR}, 
+    isp = #{isp,jdbcType=VARCHAR}, 
+    channel_id = #{channelId,jdbcType=INTEGER}, 
+    state = #{state,jdbcType=CHAR}, 
+    createtime = #{createtime,jdbcType=INTEGER}, 
+    updatetime = #{updatetime,jdbcType=INTEGER}
+  </insert>
+</mapper>

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

@@ -122,7 +122,8 @@
 <!--        <table tableName="book"></table>-->
 <!--        <table tableName="book"></table>-->
 <!--        <table tableName="manage_block"></table>-->
 <!--        <table tableName="manage_block"></table>-->
 <!--        <table tableName="manage_block_resource"></table>-->
 <!--        <table tableName="manage_block_resource"></table>-->
-        <table tableName="book_category"></table>
+<!--        <table tableName="book_category"></table>-->
+        <table tableName="user"></table>
 
 
     </context>
     </context>