1 首先去maven官网 引入jfinal 包
<!-- jfinal --> <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>4.8</version> </dependency>
2创建主键映射类
/** * 主键映射类 */ public class _MappingKit { public static void mapping(ActiveRecordPlugin arp) { } }
2 项目启动初始化final环境
import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.druid.DruidPlugin; import org.springblade.common.model._MappingKit; import org.springblade.common.tool.CommonUtil; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Service; import java.util.Properties; @Service public class InitListener implements ApplicationListener<ContextRefreshedEvent> { private Properties p = CommonUtil.getProperties(); @Override public void onApplicationEvent(ContextRefreshedEvent event) { DruidPlugin druidPlugin = new DruidPlugin(p.getProperty("url"), p.getProperty("username"), p.getProperty("password")); ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin); _MappingKit.mapping(arp); druidPlugin.start(); arp.start(); } }
3 项目中创建 实体启动类 _generator
import com.jfinal.kit.PathKit; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.activerecord.generator.Generator; import com.jfinal.plugin.druid.DruidPlugin; import javax.sql.DataSource; /** * 本 demo 仅表达最为粗浅的 jfinal 用法,更为有价值的实用的企业级用法 * 详见 JFinal 俱乐部: https://jfinal.com/club * * 在数据库表有任何变动时,运行一下 main 方法,极速响应变化进行代码重构 */ public class _generator { public static DruidPlugin createDruidPlugin() { return new DruidPlugin("jdbc:mysql://localhost:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8", "root", "123456"); } public static DataSource getDataSource() { DruidPlugin druidPlugin = createDruidPlugin(); druidPlugin.start(); return druidPlugin.getDataSource(); } public static void main(String[] args) { // model 所使用的包名 (MappingKit 默认使用的包名) String modelPackageName = "org.springblade.common.model"; // base model 所使用的包名 String baseModelPackageName = modelPackageName + ".base"; // base model 文件保存路径 String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/" + baseModelPackageName.replace('.', '/'); System.out.println("输出路径:"+ baseModelOutputDir); // model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径) String modelOutputDir = baseModelOutputDir + "/.."; // 创建生成器 Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir); // 配置是否生成备注 generator.setGenerateRemarks(true); // 设置数据库方言 generator.setDialect(new MysqlDialect()); // 设置是否生成链式 setter 方法,强烈建议配置成 false,否则 fastjson 反序列化会跳过有返回值的 setter 方法 generator.setGenerateChainSetter(false); // 添加不需要生成的表名 generator.addExcludedTable("adv"); // 设置是否在 Model 中生成 dao 对象 generator.setGenerateDaoInModel(true); // 设置是否生成字典文件 generator.setGenerateDataDictionary(false); // 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser //generator.setRemovedTableNamePrefixes("t_"); // 生成 generator.generate(); } }