在springboot中可以用的sql装载器

private static final Logger logger=LoggerFactory.getLogger(SqlResourceResolver.class);
	/**
	 * 添加sql模板
	 * @param arp
	 * @param sqlFilePath
	 */
	public static void addSqlTemplate(ActiveRecordPlugin arp,String sqlFilePath) {
		try {
			ResourcePatternResolver resolver=new PathMatchingResourcePatternResolver();
			Resource[] resources = resolver.getResources(sqlFilePath+File.separator+"*.sql");
			for (Resource resource : resources) {
				StringBuilder contentByStream = getContentByStream(resource.getInputStream());
				arp.addSqlTemplate(new StringSource(contentByStream.toString(), true));
				logger.info("添加[{}]到ActiveRecordPlugin",resource.getFilename());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 读取内容
	 * @param inputStream
	 * @return
	 */
	private static StringBuilder getContentByStream(InputStream inputStream) {
		StringBuilder stringBuilder = new StringBuilder();
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
			String line;
			while ((line = br.readLine()) != null) {
				stringBuilder.append(line);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return stringBuilder;
	}

使用方法

public ActiveRecordPlugin activeRecordPlugin() {
		logger.info("设置ActiveRecord");
		ActiveRecordPlugin arp = new ActiveRecordPlugin(transactionAwareDataSourceProxy());
		arp.setDialect(new MysqlDialect());
		arp.setShowSql(true);
		//多个sql文件自动装载
		SqlResourceResolver.addSqlTemplate(arp, "sql");
		//sql文件映射器
		_MappingKit.mapping(arp);
		arp.start();
		return arp;

	}

项目地址:demo

亲测打包后可用

评论区

JFinal

2020-01-14 17:24

arp.addSqlTemplate(ISource) 这个是专门用于扩展任意来源的 sql 模板的,赞