特色:多线程,Base层,映射层,集中映射类
项目地址:
https://github.com/zzjxfj/jfinal_model_generating/tree/master
由于使用了多线程,本工具生成效率很高,上千张表除去建立连接的时候,不超过5秒,当然也因你的数据库性能有所变化!可以设定线程数量(默认10);生成完成后会关闭数据库连接,避免了数据库服务连接使用完却未释放问题!
本工具的特色是 生成的Model 分两层:
1) Base层会对应表字段生成相应的 get set 方法,常量表名 _TABLENAME和常量列表及数据库对列的注释;对应包名在设定的包名后面加".base"内;(注:本包内文件每次生成会覆盖,不要把自定义方法写在这里面!),本包内类名字为"表名首字母大写"+"_Base.java",默义继承自"com.jfinal.plugin.activerecord.Model",如果想加入一个所有表都能用的方法,可以自己写一个继承自"com.jfinal.plugin.activerecord.Model"的类,把方法写里面,然后重新生成,把基础继承类继承自你写的这个类,这样,每个model里面都可以执行你写的这些方法了,例如:countAll()//查询表里所有条目的总数!
2) model映射业务层:对应包名可以设定,默认为"com.jfinal.core.entitys"(Base层是com.jfinal.core.entitys.base),文件名是"表名首字母大写.java";本包内类文件做为映射表的类,继承自base层对应的类,这里面可以写一些业务方法(不是很建议,但是很效率),重新生成不会被覆盖!另外,这个包里还有一个类文件_TablePlugins.java,它的做用是简化你在Jfinal配置类里配置表映射,你本需要在JfinalConfig.configPlugin(Plugins me)里面,配置ActiveRecordPlugin.addMapping("表名",表MODEL.class),有多少个就要配多少个,现在,这些代码都给你生成了,你可以直接 new _TablePlugins().addMapping(me)就OK了;
如何使用:
/**
* 该工具需要javaSE-1.7以上版本支持
* 该工具需要外部jar包支持
* 开发时引入的jar包有:
* 1.jfinal-3.3
* 2.druid-1.1.10
* 3.mysql-connector-java-8.0.11
*/
public static void main(String[] args) throws Exception{
//数据库连接地址
String jdbcURL="jdbc:mysql://127.0.0.1/test";
//数据库用户名
String username="root";
//数据库密码
String password="root";
TableToModel start=new TableToModel(jdbcURL, username, password);
/**
设定生成的包名 默认为:"com.jfinal.core.entitys"
start.setPackageName("cn.reaee.core.entitys");
只生成表名包含shop的表 默认不过滤
start.setOnlyCreateStatus(true);//打开过滤
start.setOnlyCreateRegex(".*shop.*");//设定规则(正则表达式)
不生成表名中有member的表 默认不过滤
start.setNotCreateStatus(true);//打开过滤
start.setNotCreateRegex(".*member.*");//设定规则(正则表达式)
设定基础类的继承 ,默认继承自:com.jfinal.plugin.activerecord.Model
start.setBaseExtends("aa.bb.cc.Aaa");
这里不一一演示,里有有详细的备注,stat.set就会自动提示出设定的做用了!
*/
start.start();
}
Base层类
package com.wcsmia.core.entitys.base;
/**
* shop_adv 实体类
*/
public class Shop_adv_Base extends com.wcsmia.core.defined.MyModel{
/**
* 表名称 shop_adv
*/
public static final String _TABLENAME="shop_adv";
/**
* 主键 id,uniacid,displayorder,enabled
*/
public static final String _PRIMARY_KEYS="id,uniacid,displayorder,enabled";
/**
* 类型: int(11) unsigned
* 为空: NO
* 自增: auto_increment
* 主键: PRI
*/
public static final String ID = "id" ;
/**
* 类型: int(11)
* 默认: 0
* 为空: YES
* 主键: MUL
*/
public static final String UNIACID = "uniacid" ;
/**
* 备注: 轮播图名称
* 类型: varchar(50)
* 为空: YES
*/
public static final String ADVNAME = "advname" ;
/**
* 备注: 轮播图链接
* 类型: varchar(255)
* 默认: #
* 为空: NO
*/
public static final String LINK = "link" ;
/**
* 备注: 轮播图图片链接
* 类型: varchar(255)
* 为空: NO
*/
public static final String THUMB = "thumb" ;
/**
* 备注: 排序
* 类型: int(11)
* 默认: 0
* 为空: NO
* 主键: MUL
*/
public static final String DISPLAYORDER = "displayorder" ;
/**
* 备注: 是否显示
* 类型: int(11)
* 默认: 0
* 为空: NO
* 主键: MUL
*/
public static final String ENABLED = "enabled" ;
/**
* 类型: int(11) unsigned
* 为空: NO
* 自增: auto_increment
* 主键: PRI
*/
public java.lang.Long getId(){
return getLong("id");
}
/**
* 类型: int(11) unsigned
* 为空: NO
* 自增: auto_increment
* 主键: PRI
*/
public java.lang.Long getId(java.lang.Long defaultVal){
java.lang.Long _v=getLong("id");
return _v==null? defaultVal:_v;
}
/**
* 类型: int(11) unsigned
* 为空: NO
* 自增: auto_increment
* 主键: PRI
*/
public M setId(java.lang.Long val){
set("id", val);
return (M)this;
}
/**
* 类型: int(11)
* 默认: 0
* 为空: YES
* 主键: MUL
*/
public java.lang.Integer getUniacid(){
return getInt("uniacid");
}
/**
* 类型: int(11)
* 默认: 0
* 为空: YES
* 主键: MUL
*/
public java.lang.Integer getUniacid(java.lang.Integer defaultVal){
java.lang.Integer _v=getInt("uniacid");
return _v==null? defaultVal:_v;
}
/**
* 类型: int(11)
* 默认: 0
* 为空: YES
* 主键: MUL
*/
public M setUniacid(java.lang.Integer val){
set("uniacid", val);
return (M)this;
}
/**
* 备注: 轮播图名称
* 类型: varchar(50)
* 为空: YES
*/
public java.lang.String getAdvname(){
return getStr("advname");
}
/**
* 备注: 轮播图名称
* 类型: varchar(50)
* 为空: YES
*/
public java.lang.String getAdvname(java.lang.String defaultVal){
java.lang.String _v=getStr("advname");
return _v==null? defaultVal:_v;
}
/**
* 备注: 轮播图名称
* 类型: varchar(50)
* 为空: YES
*/
public M setAdvname(java.lang.String val){
set("advname", val);
return (M)this;
}
/**
* 备注: 轮播图链接
* 类型: varchar(255)
* 默认: #
* 为空: NO
*/
public java.lang.String getLink(){
return getStr("link");
}
/**
* 备注: 轮播图链接
* 类型: varchar(255)
* 默认: #
* 为空: NO
*/
public java.lang.String getLink(java.lang.String defaultVal){
java.lang.String _v=getStr("link");
return _v==null? defaultVal:_v;
}
/**
* 备注: 轮播图链接
* 类型: varchar(255)
* 默认: #
* 为空: NO
*/
public M setLink(java.lang.String val){
set("link", val);
return (M)this;
}
/**
* 备注: 轮播图图片链接
* 类型: varchar(255)
* 为空: NO
*/
public java.lang.String getThumb(){
return getStr("thumb");
}
/**
* 备注: 轮播图图片链接
* 类型: varchar(255)
* 为空: NO
*/
public java.lang.String getThumb(java.lang.String defaultVal){
java.lang.String _v=getStr("thumb");
return _v==null? defaultVal:_v;
}
/**
* 备注: 轮播图图片链接
* 类型: varchar(255)
* 为空: NO
*/
public M setThumb(java.lang.String val){
set("thumb", val);
return (M)this;
}
/**
* 备注: 排序
* 类型: int(11)
* 默认: 0
* 为空: NO
* 主键: MUL
*/
public java.lang.Integer getDisplayorder(){
return getInt("displayorder");
}
/**
* 备注: 排序
* 类型: int(11)
* 默认: 0
* 为空: NO
* 主键: MUL
*/
public java.lang.Integer getDisplayorder(java.lang.Integer defaultVal){
java.lang.Integer _v=getInt("displayorder");
return _v==null? defaultVal:_v;
}
/**
* 备注: 排序
* 类型: int(11)
* 默认: 0
* 为空: NO
* 主键: MUL
*/
public M setDisplayorder(java.lang.Integer val){
set("displayorder", val);
return (M)this;
}
/**
* 备注: 是否显示
* 类型: int(11)
* 默认: 0
* 为空: NO
* 主键: MUL
*/
public java.lang.Integer getEnabled(){
return getInt("enabled");
}
/**
* 备注: 是否显示
* 类型: int(11)
* 默认: 0
* 为空: NO
* 主键: MUL
*/
public java.lang.Integer getEnabled(java.lang.Integer defaultVal){
java.lang.Integer _v=getInt("enabled");
return _v==null? defaultVal:_v;
}
/**
* 备注: 是否显示
* 类型: int(11)
* 默认: 0
* 为空: NO
* 主键: MUL
*/
public M setEnabled(java.lang.Integer val){
set("enabled", val);
return (M)this;
}
}
映射层类:
package com.wcsmia.core.entitys;
import com.wcsmia.core.entitys.base.Shop_adv_Base;
/**
* shop_adv 实体类
*/
public class Shop_adv extends Shop_adv_Base{
/**
* 获取操作表的dao
*/
public static final Shop_adv dao = new Shop_adv();
}