故事背景
把2年前的代码生成工具搬出来,发现漏了生成每个实体权限菜单SQL的功能。
马上加上,效果如下
比如address.sql如下
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES ( 0, '收货地址管理', '/admin/address', b'1', 10, 'fa fa-list');
SELECT @parentId := LAST_INSERT_ID();
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '编辑收货地址页面', '/admin/address/edit', b'0', 1, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '收货地址列表', '/admin/address', b'1', 1, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '添加收货地址', '/admin/address/new', b'1', 2, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '删除收货地址操作', '/admin/address/delete', b'0', 1, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '保存收货地址操作', '/admin/address/save', b'0', 1, 'fa fa-circle-o');
INSERT INTO `sys_api`(`pid`, `api_name`, `request_url`, `res_menu_flag`, `res_order`, `res_icon`) VALUES (@parentId, '批量删除收货地址操作', '/admin/address/batchDelete', b'0', 1, 'fa fa-circle-o');
痛点
需要把上面的sql文件合并成一个新的,这样就比较好复制了。
先写个 demo 测试下
public static void main(String[] args) {
String sourceDirectory = "/Users/liuyanzhao/Desktop/shop/054-SkyBlog/SpringBootCodeGenerator/target/classes/generate/sql"; // 源目录路径
String targetFile = "/Users/liuyanzhao/Desktop/shop/054-SkyBlog/SpringBootCodeGenerator/target/classes/generate/sql/merge.sql"; // 目标文件路径
File directory = new File(sourceDirectory);
File[] files = directory.listFiles();
try (BufferedWriter writer = new BufferedWriter(new FileWriter(targetFile))) {
for (File file : files) {
if (file.isFile()) {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine();
}
writer.newLine(); // 每个文件末尾加个换行符
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
不错,目的达成
后面只需要封装下参数,然后在生成代码里调用一下即可。
当然,我们也可以一开始让他生成到一个文件里去,个人觉得没有必要。多生成一些文件,给我们多一些选择
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏