This commit is contained in:
2018-01-07 16:08:59 +08:00
parent 173839b257
commit 9db8e5b2e8
30 changed files with 1443 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
package com.lxyer.config;
import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.lxyer.model.*;
import java.io.File;
/**
* Generated by JFinal, do not modify this file.
* <pre>
* Example:
* public void configPlugin(Plugins me) {
* ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
* DbMap.mapping(arp);
* me.add(arp);
* }
* </pre>
*/
public class DbMap {
public static void mapping(ActiveRecordPlugin arp) {
arp.addMapping("act_log", "logid", ActLog.class);
arp.addMapping("comment", "commentId", Comment.class);
arp.addMapping("content", "contentId", Content.class);
arp.addMapping("content_item", "itemId", ContentItem.class);
// Composite Primary Key order: tid,cate,attr
arp.addMapping("dyna_attr", "tid,cate,attr", DynaAttr.class);
arp.addMapping("user", "userId", User.class);
}
public static void addSqlTemplate(ActiveRecordPlugin arp) {
String baseSqlTemplatePath = PathKit.getWebRootPath() + "/WEB-INF/classes/sql/";
arp.setBaseSqlTemplatePath(baseSqlTemplatePath);
File sqlFiles = new File(baseSqlTemplatePath);
File[] files = sqlFiles.listFiles();
for (File f : files){
if (f.isFile() || f.getName().endsWith(".sql")){
arp.addSqlTemplate(f.getName());
}
}
}
}

View File

@@ -0,0 +1,37 @@
package com.lxyer.config;
/**
* Created by Lxyer at 2017/9/10 15:35.
*/
public class E {
public enum DynamicAttr {
//table,id_k,gk, cate
NEWS("dyna_attr", "contentId", "tid", 1),
PRODUCTION("dyna_attr", "contentId", "tid", 2),
USER("dyna_attr", "userId", "tid", 3)
;
private String table;
private String id_k;
private String gk;
private int cate;
DynamicAttr(String table, String id_k, String gk, int cate) {
this.table = table;
this.id_k = id_k;
this.gk = gk;
this.cate = cate;
}
public String table(){
return this.table;
}
public String id_k(){
return this.id_k;
}
public String gk(){
return this.gk;
}
public int getCate() {
return cate;
}
}
}

View File

@@ -0,0 +1,35 @@
package com.lxyer.config;
/**
* Created by JUECHENG at 2018/1/7 14:35.
*/
public class F {
public enum DynamicAttr {
//table,id_k,gk, cate
NEWS("dyna_attr", "contentId", "tid", 1),
USER("dyna_attr", "userId", "tid", 2)
;
private String table;
private String id_k;
private String gk;
private int cate;
DynamicAttr(String table, String id_k, String gk, int cate) {
this.table = table;
this.id_k = id_k;
this.gk = gk;
this.cate = cate;
}
public String table(){
return this.table;
}
public String id_k(){
return this.id_k;
}
public String gk(){
return this.gk;
}
public int getCate() {
return cate;
}
}
}

View File

@@ -0,0 +1,66 @@
package com.lxyer.config;
import com.jfinal.config.*;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.ehcache.EhCachePlugin;
import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import com.jfinal.plugin.redis.RedisPlugin;
import com.jfinal.template.Engine;
import com.lxyer.config.handler.UrlHandler;
import com.lxyer.config.interceptor.LoginInterceptor;
import com.lxyer.config.route.AdminRoute;
import com.lxyer.config.route.SiteRoute;
/**
* Created by Lxyer at 2018/01/07
*/
public class FlyConfig extends JFinalConfig {
@Override
public void configConstant(Constants me) {
me.setDevMode(true);
PropKit.use("config.properties");
}
@Override
public void configRoute(Routes me) {
me.add(new AdminRoute());
me.add(new SiteRoute());
}
@Override
public void configEngine(Engine me) {
Engine.setMainEngine(me);
me.setBaseTemplatePath(PathKit.getWebRootPath());
me.addSharedFunction("/WEB-INF/_t/layout.html");
}
@Override
public void configPlugin(Plugins me) {
loadPropertyFile("config.properties");
HikariCpPlugin hikariPlguin = new HikariCpPlugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"), "com.mysql.cj.jdbc.Driver");
ActiveRecordPlugin arp = new ActiveRecordPlugin(hikariPlguin);
me.add(hikariPlguin);
me.add(arp);
DbMap.mapping(arp);
DbMap.addSqlTemplate(arp);
me.add(new RedisPlugin(getProperty("redis.cache_name"), getProperty("redis.host"), getPropertyToInt("redis.port"), getPropertyToInt("redis.timeout")));
me.add(new EhCachePlugin());
}
@Override
public void configInterceptor(Interceptors me) {
me.add(new LoginInterceptor());
}
@Override
public void configHandler(Handlers me) {
me.add(new UrlHandler());
}
}

View File

@@ -0,0 +1,17 @@
package com.lxyer.config.handler;
import com.jfinal.handler.Handler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by JUECHENG at 2018/1/7 11:20.
*/
public class UrlHandler extends Handler {
@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
next.handle(target, request, response, isHandled);
}
}

View File

@@ -0,0 +1,14 @@
package com.lxyer.config.interceptor;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
/**
* Created by JUECHENG at 2018/1/7 11:22.
*/
public class LoginInterceptor implements Interceptor {
@Override
public void intercept(Invocation inv) {
inv.invoke();
}
}

View File

@@ -0,0 +1,13 @@
package com.lxyer.config.route;
import com.jfinal.config.Routes;
/**
* Created by JUECHENG at 2018/1/7 11:19.
*/
public class AdminRoute extends Routes {
@Override
public void config() {
}
}

View File

@@ -0,0 +1,16 @@
package com.lxyer.config.route;
import com.jfinal.config.Routes;
import com.lxyer.controller.HomeController;
/**
* Created by JUECHENG at 2018/1/7 11:16.
*/
public class SiteRoute extends Routes {
@Override
public void config() {
setBaseViewPath("/WEB-INF/fly");
add("/", HomeController.class);
}
}

View File

@@ -0,0 +1,49 @@
package com.lxyer.controller;
import com.jfinal.aop.Before;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.SqlPara;
import com.jfinal.plugin.ehcache.CacheInterceptor;
import com.jfinal.plugin.redis.Cache;
import com.jfinal.plugin.redis.Redis;
import com.lxyer.model.User;
import java.util.List;
/**
* Created by JUECHENG at 2018/1/7 14:40.
*/
public class HomeController extends IController {
public void index(){
String para = getPara();
Cache cache = Redis.use();
String cacheKey = "user-" + para;
User user = cache.get(cacheKey);
if (user == null)
cache.setex(cacheKey, 10, user = User.dao.findById(para+""));
if (user != null)
System.out.println(user.toJson());
renderText("hello fly");
}
/**
* 查询用户
*/
@Before(CacheInterceptor.class)
public void query_user(){
//User.dao.find("select * from user")
SqlPara sqlPara = Db.getSqlPara("user.list");
List<User> users = User.dao.find(sqlPara);
renderJson(users);
}
}

View File

@@ -0,0 +1,103 @@
package com.lxyer.controller;
import com.jfinal.core.Controller;
import com.jfinal.kit.Kv;
import com.jfinal.plugin.activerecord.*;
import com.lxyer.config.E;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by Lxyer at 2017/9/10 13:55.
*/
public class IController extends Controller {
public Kv getParams(String... key) {
Kv kv = Kv.create();
for (String k : key) {
if (k.contains("=")) { //如果没有值使用默认值
kv.put(k.split("=")[0], getPara(k.split("=")[0], k.split("=")[1]));
continue;
} else if (k.contains("<")) { //强制使用"<"右侧的值
kv.put(k.split("<")[0], k.split("<")[1]);
continue;
}
kv.put(k, getPara(k));
}
return kv;
}
public int getPn(){
return getParaToInt("pn", 1);
}
public int getPs(){
return getParaToInt("ps", 15);
}
public int getPn(int pn){
return getParaToInt("pn", pn);
}
public int getPs(int ps){
return getParaToInt("ps", ps);
}
/**
* 设置动态属性
* @param page
* @param dynAttr
*/
public void setDynAttr(Page<Model> page, E.DynamicAttr dynAttr, String ... s){
if (page == null || page.getList().size() == 0 || dynAttr == null) return;
List ids = new ArrayList<>();
page.getList().forEach(x->ids.add(x.getInt(dynAttr.id_k())));
if (!ids.isEmpty()) {
String ids_ = ids.toString();
ids_ = ids_.substring(1, ids_.length() - 1);
//查询动态属性
Kv kv = Kv.by("table", dynAttr.table()).set("id_k", dynAttr.gk()).set("id_v", ids_).set("cate", dynAttr.getCate());
if (s.length > 0)
kv.set("attr", arrToStr(s));
SqlPara sqlPara = Db.getSqlPara("m.dyn_attr", kv);
List<Record> attrs = Db.find(sqlPara);
Map<Integer, Kv> attrMap = new HashMap();
attrs.forEach(x->{
Kv nAttr = attrMap.getOrDefault(x.getInt(dynAttr.gk()), Kv.create());
nAttr.set(x.get("attr"), x.get("value"));
attrMap.put(x.getInt(dynAttr.gk()), nAttr);
});
page.getList().forEach(x->{
attrMap.getOrDefault(x.getInt(dynAttr.id_k()), Kv.create()).forEach((k, v)->x.put(k+"", v));
});
}
}
/**
* 设置动态属性
* @param model
* @param dynAttr
*/
public void setDynAttr(Model model, E.DynamicAttr dynAttr, String ... ss){
Kv kv = Kv.by("table", dynAttr.table()).set("id_k", dynAttr.gk()).set("id_v", model.getInt(dynAttr.id_k())).set("cate", dynAttr.getCate());
if (ss.length > 0) kv.set("attr", arrToStr(ss));
SqlPara sqlPara = Db.getSqlPara("m.dyn_attr", kv);
List<Record> attrs = Db.find(sqlPara);
attrs.forEach(x-> model.put(x.get("attr"), x.get("value")));
}
private String arrToStr(String ... ss){
String str = "";
for (String x : ss){
str += "'"+x+"',";
}
if (str.length() > 0)
str = str.substring(0, str.length()-1);
return str;
}
}

View File

@@ -0,0 +1,11 @@
package com.lxyer.model;
import com.lxyer.model.base.BaseActLog;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class ActLog extends BaseActLog<ActLog> {
}

View File

@@ -0,0 +1,11 @@
package com.lxyer.model;
import com.lxyer.model.base.BaseComment;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class Comment extends BaseComment<Comment> {
}

View File

@@ -0,0 +1,11 @@
package com.lxyer.model;
import com.lxyer.model.base.BaseContent;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class Content extends BaseContent<Content> {
}

View File

@@ -0,0 +1,11 @@
package com.lxyer.model;
import com.lxyer.model.base.BaseContentItem;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class ContentItem extends BaseContentItem<ContentItem> {
}

View File

@@ -0,0 +1,11 @@
package com.lxyer.model;
import com.lxyer.model.base.BaseDynaAttr;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class DynaAttr extends BaseDynaAttr<DynaAttr> {
}

View File

@@ -0,0 +1,12 @@
package com.lxyer.model;
import com.lxyer.model.base.BaseUser;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class User extends BaseUser<User> {
public static final User dao = new User().dao();
}

View File

@@ -0,0 +1,85 @@
/**
* 请勿将俱乐部专享资源复制给其他人,保护知识产权即是保护我们所在的行业,进而保护我们自己的利益
* 即便是公司的同事,也请尊重 JFinal 作者的努力与付出,不要复制给同事
*
* 如果你尚未加入俱乐部请立即删除该项目或者现在加入俱乐部http://jfinal.com/club
*
* 俱乐部将提供 jfinal-club 项目文档与设计资源、专用 QQ 群,以及作者在俱乐部定期的分享与答疑,
* 价值远比仅仅拥有 jfinal club 项目源代码要大得多
*
* JFinal 俱乐部是五年以来首次寻求外部资源的尝试,以便于有资源创建更加
* 高品质的产品与服务,为大家带来更大的价值,所以请大家多多支持,不要将
* 首次的尝试扼杀在了摇篮之中
*/
package com.lxyer.model;
import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.hikaricp.HikariCpPlugin;
import javax.sql.DataSource;
/**
* Model、BaseModel、_MappingKit 生成器
*/
@SuppressWarnings("ALL")
public class _Generator {
/**
* 部分功能使用 Db + Record 模式实现,无需生成 model 的 table 在此配置
*/
private static String[] excludedTable = {
/*"comment",
"content",
"content_item",
"dyna_attr",
"tree",
"user"*/
};
/**
* 重用 JFinalClubConfig 中的数据源配置,避免冗余配置
*/
public static DataSource getDataSource() {
//HikariCpPlugin hikariCpPlugin = new HikariCpPlugin("jdbc:mysql://558cfc37a10ef.sh.cdb.myqcloud.com:3817/db_toutiao?nullNamePatternMatchesAll=true", "cdb_outerroot", "l237809796", "com.mysql.cj.jdbc.Driver");
HikariCpPlugin hikariCpPlugin = new HikariCpPlugin("jdbc:mysql://dbserver:3306/jfly?nullNamePatternMatchesAll=true", "guest", "hello", "com.mysql.cj.jdbc.Driver");
hikariCpPlugin.start();
return hikariCpPlugin.getDataSource();
}
public static void main(String[] args) {
// base model 所使用的包名
String baseModelPackageName = "com.lxyer.model.base";
// base model 文件保存路径
String baseModelOutputDir = PathKit.getWebRootPath()
+ "/src/main/java/com/lxyer/model/dev/base";
System.out.println("输出路径:"+ baseModelOutputDir);
// model 所使用的包名 (MappingKit 默认使用的包名)
String modelPackageName = "com.lxyer.dev";
// model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
String modelOutputDir = baseModelOutputDir + "/..";
// 创建生成器
Generator gen = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
// 设置数据库方言
gen.setDialect(new MysqlDialect());
// 添加不需要生成的表名
for (String table : excludedTable) {
gen.addExcludedTable(table);
}
// 设置是否在 Model 中生成 getDao 对象
gen.setGenerateDaoInModel(false);
// 设置是否生成字典文件
gen.setGenerateDataDictionary(false);
gen.setMappingKitClassName("DbMap");
// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
// gernerator.setRemovedTableNamePrefixes("t_");
// 生成
gen.generate();
}
}

View File

@@ -0,0 +1,68 @@
package com.lxyer.model.base;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.IBean;
/**
* Generated by JFinal, do not modify this file.
*/
@SuppressWarnings("serial")
public abstract class BaseActLog<M extends BaseActLog<M>> extends Model<M> implements IBean {
public void setLogid(java.lang.Integer logid) {
set("logid", logid);
}
public java.lang.Integer getLogid() {
return getInt("logid");
}
public void setCate(java.lang.Integer cate) {
set("cate", cate);
}
public java.lang.Integer getCate() {
return getInt("cate");
}
public void setTid(java.lang.Integer tid) {
set("tid", tid);
}
public java.lang.Integer getTid() {
return getInt("tid");
}
public void setUserId(java.lang.Integer userId) {
set("userId", userId);
}
public java.lang.Integer getUserId() {
return getInt("userId");
}
public void setCreateTime(java.lang.Long createTime) {
set("createTime", createTime);
}
public java.lang.Long getCreateTime() {
return getLong("createTime");
}
public void setRemark(java.lang.String remark) {
set("remark", remark);
}
public java.lang.String getRemark() {
return getStr("remark");
}
public void setStatus(java.lang.Integer status) {
set("status", status);
}
public java.lang.Integer getStatus() {
return getInt("status");
}
}

View File

@@ -0,0 +1,84 @@
package com.lxyer.model.base;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.IBean;
/**
* Generated by JFinal, do not modify this file.
*/
@SuppressWarnings("serial")
public abstract class BaseComment<M extends BaseComment<M>> extends Model<M> implements IBean {
public void setCommentId(java.lang.Integer commentId) {
set("commentId", commentId);
}
public java.lang.Integer getCommentId() {
return getInt("commentId");
}
public void setUserId(java.lang.Integer userId) {
set("userId", userId);
}
public java.lang.Integer getUserId() {
return getInt("userId");
}
public void setPid(java.lang.Integer pid) {
set("pid", pid);
}
public java.lang.Integer getPid() {
return getInt("pid");
}
public void setCate(java.lang.Integer cate) {
set("cate", cate);
}
public java.lang.Integer getCate() {
return getInt("cate");
}
public void setContentId(java.lang.Integer contentId) {
set("contentId", contentId);
}
public java.lang.Integer getContentId() {
return getInt("contentId");
}
public void setContent(java.lang.String content) {
set("content", content);
}
public java.lang.String getContent() {
return getStr("content");
}
public void setCreateTime(java.lang.Long createTime) {
set("createTime", createTime);
}
public java.lang.Long getCreateTime() {
return getLong("createTime");
}
public void setSupportNum(java.lang.Integer supportNum) {
set("supportNum", supportNum);
}
public java.lang.Integer getSupportNum() {
return getInt("supportNum");
}
public void setStatus(java.lang.Integer status) {
set("status", status);
}
public java.lang.Integer getStatus() {
return getInt("status");
}
}

View File

@@ -0,0 +1,124 @@
package com.lxyer.model.base;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.IBean;
/**
* Generated by JFinal, do not modify this file.
*/
@SuppressWarnings("serial")
public abstract class BaseContent<M extends BaseContent<M>> extends Model<M> implements IBean {
public void setContentId(java.lang.Integer contentId) {
set("contentId", contentId);
}
public java.lang.Integer getContentId() {
return getInt("contentId");
}
public void setUserId(java.lang.Integer userId) {
set("userId", userId);
}
public java.lang.Integer getUserId() {
return getInt("userId");
}
public void setTitle(java.lang.String title) {
set("title", title);
}
public java.lang.String getTitle() {
return getStr("title");
}
public void setDigest(java.lang.String digest) {
set("digest", digest);
}
public java.lang.String getDigest() {
return getStr("digest");
}
public void setContent(java.lang.String content) {
set("content", content);
}
public java.lang.String getContent() {
return getStr("content");
}
public void setCreateTime(java.lang.Long createTime) {
set("createTime", createTime);
}
public java.lang.Long getCreateTime() {
return getLong("createTime");
}
public void setCate(java.lang.Integer cate) {
set("cate", cate);
}
public java.lang.Integer getCate() {
return getInt("cate");
}
public void setType(java.lang.Integer type) {
set("type", type);
}
public java.lang.Integer getType() {
return getInt("type");
}
public void setReplyNum(java.lang.Integer replyNum) {
set("replyNum", replyNum);
}
public java.lang.Integer getReplyNum() {
return getInt("replyNum");
}
public void setViewNum(java.lang.Integer viewNum) {
set("viewNum", viewNum);
}
public java.lang.Integer getViewNum() {
return getInt("viewNum");
}
public void setWonderful(java.lang.Integer wonderful) {
set("wonderful", wonderful);
}
public java.lang.Integer getWonderful() {
return getInt("wonderful");
}
public void setTop(java.lang.Integer top) {
set("top", top);
}
public java.lang.Integer getTop() {
return getInt("top");
}
public void setSolved(java.lang.Integer solved) {
set("solved", solved);
}
public java.lang.Integer getSolved() {
return getInt("solved");
}
public void setStatus(java.lang.Integer status) {
set("status", status);
}
public java.lang.Integer getStatus() {
return getInt("status");
}
}

View File

@@ -0,0 +1,44 @@
package com.lxyer.model.base;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.IBean;
/**
* Generated by JFinal, do not modify this file.
*/
@SuppressWarnings("serial")
public abstract class BaseContentItem<M extends BaseContentItem<M>> extends Model<M> implements IBean {
public void setItemId(java.lang.Integer itemId) {
set("itemId", itemId);
}
public java.lang.Integer getItemId() {
return getInt("itemId");
}
public void setContentId(java.lang.Integer contentId) {
set("contentId", contentId);
}
public java.lang.Integer getContentId() {
return getInt("contentId");
}
public void setCreateTime(java.util.Date createTime) {
set("createTime", createTime);
}
public java.util.Date getCreateTime() {
return get("createTime");
}
public void setStatus(java.lang.Integer status) {
set("status", status);
}
public java.lang.Integer getStatus() {
return getInt("status");
}
}

View File

@@ -0,0 +1,44 @@
package com.lxyer.model.base;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.IBean;
/**
* Generated by JFinal, do not modify this file.
*/
@SuppressWarnings("serial")
public abstract class BaseDynaAttr<M extends BaseDynaAttr<M>> extends Model<M> implements IBean {
public void setTid(java.lang.Integer tid) {
set("tid", tid);
}
public java.lang.Integer getTid() {
return getInt("tid");
}
public void setCate(java.lang.Integer cate) {
set("cate", cate);
}
public java.lang.Integer getCate() {
return getInt("cate");
}
public void setAttr(java.lang.String attr) {
set("attr", attr);
}
public java.lang.String getAttr() {
return getStr("attr");
}
public void setValue(java.lang.String value) {
set("value", value);
}
public java.lang.String getValue() {
return getStr("value");
}
}

View File

@@ -0,0 +1,116 @@
package com.lxyer.model.base;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.IBean;
/**
* Generated by JFinal, do not modify this file.
*/
@SuppressWarnings("serial")
public abstract class BaseUser<M extends BaseUser<M>> extends Model<M> implements IBean {
public void setUserId(java.lang.Integer userId) {
set("userId", userId);
}
public java.lang.Integer getUserId() {
return getInt("userId");
}
public void setUsername(java.lang.String username) {
set("username", username);
}
public java.lang.String getUsername() {
return getStr("username");
}
public void setPassword(java.lang.String password) {
set("password", password);
}
public java.lang.String getPassword() {
return getStr("password");
}
public void setSex(java.lang.Integer sex) {
set("sex", sex);
}
public java.lang.Integer getSex() {
return getInt("sex");
}
public void setPhone(java.lang.String phone) {
set("phone", phone);
}
public java.lang.String getPhone() {
return getStr("phone");
}
public void setNickname(java.lang.String nickname) {
set("nickname", nickname);
}
public java.lang.String getNickname() {
return getStr("nickname");
}
public void setAvatar(java.lang.String avatar) {
set("avatar", avatar);
}
public java.lang.String getAvatar() {
return getStr("avatar");
}
public void setRealname(java.lang.String realname) {
set("realname", realname);
}
public java.lang.String getRealname() {
return getStr("realname");
}
public void setEmail(java.lang.String email) {
set("email", email);
}
public java.lang.String getEmail() {
return getStr("email");
}
public void setCreateTime(java.lang.Long createTime) {
set("createTime", createTime);
}
public java.lang.Long getCreateTime() {
return getLong("createTime");
}
public void setSign(java.lang.String sign) {
set("sign", sign);
}
public java.lang.String getSign() {
return getStr("sign");
}
public void setCity(java.lang.String city) {
set("city", city);
}
public java.lang.String getCity() {
return getStr("city");
}
public void setStatus(java.lang.Integer status) {
set("status", status);
}
public java.lang.Integer getStatus() {
return getInt("status");
}
}