JFInal model 自动生成

本文介绍如何使用 JFinal 的 Generator 工具自动生成 Activiti 数据库模型。通过配置连接 MySQL 数据源,设置 Model 包名及输出路径,生成 base model 和 Model,并定制生成选项如是否生成 Dao 对象、链式 setter 方法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.activiti.generator;

import javax.sql.DataSource;

import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.druid.DruidPlugin;

public class _JFinalDemoGenerator{
	
	public static DataSource getDataSource() {
		//PropKit.use("a_little_config.txt");
		DruidPlugin druidPlugin = new DruidPlugin("jdbc:mysql://localhost/activiti", "root", "root");
		druidPlugin.start();
		return druidPlugin.getDataSource();
	}
	
	public static void main(String[] args) {
		// base model 所使用的包名
		String baseModelPackageName = "com.activiti.model.base";
		// base model 文件保存路径
		String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/activiti/model/base";
		
		// model 所使用的包名 (MappingKit 默认使用的包名)
		String modelPackageName = "com.activiti.model";
		// model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
		String modelOutputDir = baseModelOutputDir + "/..";
		
		// 创建生成器
		Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
		//generator.setMetaBuilder(new _MetaBuilder(getDataSource()));
		// 设置是否生成链式 setter 方法
		generator.setGenerateChainSetter(false);
		// 添加不需要生成的表名
		generator.addExcludedTable("");;
		// 设置是否在 Model 中生成 dao 对象
		generator.setGenerateDaoInModel(true);
		// 设置是否生成链式 setter 方法
		generator.setGenerateChainSetter(true);
		// 设置是否生成字典文件
		generator.setGenerateDataDictionary(false);
		// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
		generator.setRemovedTableNamePrefixes("t_");
		// 生成
		generator.generate();
}
}

### 使用SAM模型自动生成掩码 为了利用SAM(Segment Anything Model)实现自动mask生成,需先加载预训练好的SAM模型,并将其传递给`SamAutomaticMaskGenerator`类实例化对象。此过程推荐在支持CUDA加速的环境中执行以提高效率[^1]。 ```python import sys sys.path.append("..") from segment_anything import sam_model_registry, SamAutomaticMaskGenerator # 设置SAM检查点路径及设备类型 sam_checkpoint = "sam_vit_h_4b8939.pth" model_type = "vit_h" device = "cuda" # 加载指定类型的SAM模型并移动到相应计算设备上 sam = sam_model_registry[model_type](checkpoint=sam_checkpoint) sam.to(device=device) # 创建用于自动生成mask的对象 mask_generator = SamAutomaticMaskGenerator(sam) ``` 完成上述初始化工作之后,即可通过调用`generate()`方法传入图像数据来获取对应的分割掩膜列表。每张图片对应的结果会是一个字典集合,其中包含了多个字段描述不同区域的信息,如边界框、置信度分数以及实际的二值化掩模矩阵等属性。 对于输入图像的操作如下所示: ```python import cv2 import numpy as np def show_anns(anns): if len(anns) == 0: return sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True) h, w = anns[0]['segmentation'].shape[-2:] final_image = np.zeros((h, w, 3), dtype=np.uint8) for ann in sorted_anns: m = ann['segmentation'] color_mask = np.random.random((1, 3)).tolist()[0] img = np.ones((m.shape[0], m.shape[1], 3)) for i in range(3): img[:,:,i] = color_mask[i] final_image[m != 0] = (final_image[m != 0] * .5 + img[m != 0] * .5).astype(np.uint8) return final_image image_path = 'example.jpg' image_bgr = cv2.imread(image_path) image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB) # 调用generate函数获得该图中的所有目标mask信息 masks = mask_generator.generate(image_rgb) # 显示结果 cv2.imshow('Masks', show_anns(masks)) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码展示了如何读取一张测试图片,并应用之前创建好的`mask_generator`来自动生成其内部各个物体的mask。最后还定义了一个辅助显示函数`show_anns()`用来可视化这些mask叠加后的效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值