Skip to content

Commit 859ce70

Browse files
author
gaoyanguo
committed
修改代码成成
1 parent 8001091 commit 859ce70

19 files changed

+427
-39
lines changed

src/main/java/com/monkeyzi/code/config/DynamicDataSource.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
public class DynamicDataSource extends AbstractRoutingDataSource {
99
@Override
1010
protected Object determineCurrentLookupKey() {
11+
System.out.println("当前数据源为=="+DynamicDataSourceContextHolder.getDataSourceType());
1112
return DynamicDataSourceContextHolder.getDataSourceType();
1213
}
1314
}

src/main/java/com/monkeyzi/code/config/DynamicDatasourceInterceptor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.monkeyzi.code.config;
22

3+
import com.monkeyzi.code.holder.DynamicDataSourceContextHolder;
34
import lombok.extern.slf4j.Slf4j;
45
import org.springframework.lang.Nullable;
56
import org.springframework.stereotype.Component;
@@ -12,15 +13,16 @@
1213
@Component
1314
public class DynamicDatasourceInterceptor implements HandlerInterceptor {
1415

16+
1517
@Override
1618
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
17-
log.info("进入拦截器了");
1819
return true;
1920
}
2021

2122
@Override
2223
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
2324
@Nullable Exception ex) {
24-
log.info("执行完毕");
25+
DynamicDataSourceContextHolder.clearDataSourceType();
26+
log.info("执行清除数据源信息完成");
2527
}
2628
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.monkeyzi.code.config;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
6+
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
7+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
8+
9+
@Configuration
10+
public class MvcInterceptorConfig implements WebMvcConfigurer {
11+
@Autowired
12+
private DynamicDatasourceInterceptor interceptor;
13+
14+
@Override
15+
public void addInterceptors(InterceptorRegistry registry) {
16+
registry.addInterceptor(interceptor).addPathPatterns("/**");
17+
}
18+
19+
@Override
20+
public void addResourceHandlers(ResourceHandlerRegistry registry) {
21+
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
22+
}
23+
}

src/main/java/com/monkeyzi/code/controller/CodeGenController.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,48 @@
11
package com.monkeyzi.code.controller;
22

33
import cn.hutool.core.io.IoUtil;
4+
import com.github.pagehelper.PageInfo;
5+
import com.monkeyzi.code.base.BaseController;
6+
import com.monkeyzi.code.base.Result;
7+
import com.monkeyzi.code.dto.GenCodeDto;
48
import com.monkeyzi.code.dto.GenConfigDto;
9+
import com.monkeyzi.code.dto.PageRequest;
510
import com.monkeyzi.code.service.CodeGenService;
611
import lombok.SneakyThrows;
712
import lombok.extern.slf4j.Slf4j;
813
import org.springframework.beans.factory.annotation.Autowired;
914
import org.springframework.http.HttpHeaders;
10-
import org.springframework.web.bind.annotation.PostMapping;
11-
import org.springframework.web.bind.annotation.RequestBody;
15+
import org.springframework.web.bind.annotation.GetMapping;
1216
import org.springframework.web.bind.annotation.RequestMapping;
1317
import org.springframework.web.bind.annotation.RestController;
1418

1519
import javax.servlet.http.HttpServletResponse;
20+
import java.util.Map;
1621

1722
@Slf4j
1823
@RestController
1924
@RequestMapping(value = "/gen")
20-
public class CodeGenController {
25+
public class CodeGenController extends BaseController {
2126

2227
@Autowired
2328
private CodeGenService codeGenService;
2429

2530

26-
@PostMapping("/code")
31+
@GetMapping("/page")
32+
public Result page(PageRequest page, GenCodeDto genCodeDto){
33+
PageInfo pageInfo=codeGenService.pageQuery(page,genCodeDto);
34+
Map<String,Object> results=super.getDataTable(pageInfo);
35+
return Result.ok(results);
36+
}
37+
38+
39+
@GetMapping("/code")
2740
@SneakyThrows
28-
public void generatorCode(@RequestBody GenConfigDto genConfig, HttpServletResponse response) {
41+
public void generatorCode(GenConfigDto genConfig, HttpServletResponse response) {
2942
byte[] data = codeGenService.generatorCode(genConfig);
3043
response.reset();
31-
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=%s.zip", genConfig.getTableName()));
44+
response.setHeader(HttpHeaders.CONTENT_DISPOSITION,
45+
String.format("attachment; filename=%s.zip", genConfig.getTableName()));
3246
response.addHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(data.length));
3347
response.setContentType("application/octet-stream; charset=UTF-8");
3448
IoUtil.write(response.getOutputStream(), Boolean.TRUE, data);

src/main/java/com/monkeyzi/code/controller/DatasourceConfigController.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.github.pagehelper.PageInfo;
44
import com.monkeyzi.code.base.BaseController;
55
import com.monkeyzi.code.base.Result;
6-
import com.monkeyzi.code.config.DynamicDataSourceConfig;
76
import com.monkeyzi.code.dto.PageRequest;
87
import com.monkeyzi.code.entity.SysDatasourceConf;
98
import com.monkeyzi.code.service.DataSourceConfService;
@@ -26,8 +25,6 @@ public class DatasourceConfigController extends BaseController {
2625

2726
@Autowired
2827
private DataSourceConfService dataSourceConfService;
29-
@Autowired
30-
private DynamicDataSourceConfig dataSourceConfig;
3128

3229
@GetMapping("/page")
3330
public Result getSysDatasourceConfPage(PageRequest page, SysDatasourceConf sysDatasourceConf) {

src/main/java/com/monkeyzi/code/controller/view/CodeGenViewController.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
package com.monkeyzi.code.controller.view;
22

33
import com.monkeyzi.code.constant.CommonConstants;
4+
import com.monkeyzi.code.entity.SysGenConfig;
45
import com.monkeyzi.code.service.CodeGenService;
6+
import com.monkeyzi.code.service.SysGenConfigService;
57
import com.monkeyzi.code.utils.NpmsUtils;
68
import lombok.extern.slf4j.Slf4j;
79
import org.apache.shiro.authz.annotation.RequiresPermissions;
810
import org.springframework.beans.factory.annotation.Autowired;
911
import org.springframework.stereotype.Controller;
12+
import org.springframework.ui.Model;
1013
import org.springframework.web.bind.annotation.GetMapping;
14+
import org.springframework.web.bind.annotation.PathVariable;
1115
import org.springframework.web.bind.annotation.RequestMapping;
1216

17+
import java.util.List;
18+
import java.util.Optional;
19+
1320
@Slf4j
1421
@Controller
1522
@RequestMapping(CommonConstants.VIEW_PREFIX)
1623
public class CodeGenViewController {
1724

1825
@Autowired
1926
private CodeGenService codeGenService;
27+
@Autowired
28+
private SysGenConfigService sysGenConfigService;
2029

2130

2231
@GetMapping("gen/code")
@@ -25,4 +34,19 @@ public String generator() {
2534
return NpmsUtils.view("gen/gen");
2635
}
2736

37+
@GetMapping("gen/genCode")
38+
@RequiresPermissions("gen:view")
39+
public String genCode(Model model,Integer id,String tableName) {
40+
List<SysGenConfig> config = sysGenConfigService.list();
41+
final boolean present = Optional.of(config).isPresent();
42+
SysGenConfig con=new SysGenConfig();
43+
if (present){
44+
con=config.get(0);
45+
}
46+
con.setDsId(id);
47+
con.setTableName(tableName);
48+
model.addAttribute("config", con);
49+
return NpmsUtils.view("gen/genCode");
50+
}
51+
2852
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.monkeyzi.code.dto;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class GenCodeDto {
7+
/**
8+
* 数据源Id
9+
*/
10+
private Integer id;
11+
/**
12+
* 表名
13+
*/
14+
private String tableName;
15+
}

src/main/java/com/monkeyzi/code/entity/SysGenConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.monkeyzi.code.entity;
22

3+
import com.baomidou.mybatisplus.annotation.TableField;
34
import com.baomidou.mybatisplus.annotation.TableId;
45
import com.baomidou.mybatisplus.annotation.TableName;
56
import com.baomidou.mybatisplus.extension.activerecord.Model;
@@ -36,4 +37,9 @@ public class SysGenConfig extends Model<SysGenConfig> {
3637

3738
private LocalDateTime updateTime;
3839

40+
@TableField(exist = false)
41+
private Integer dsId;
42+
43+
@TableField(exist = false)
44+
private String tableName;
3945
}

src/main/java/com/monkeyzi/code/mapper/MysqlCodeGenMapper.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
package com.monkeyzi.code.mapper;
22

3+
import org.apache.ibatis.annotations.Param;
4+
35
import java.util.List;
46
import java.util.Map;
57

68
public interface MysqlCodeGenMapper {
7-
9+
/**
10+
* 查询当前库的表信息
11+
* @param tableName
12+
* @return
13+
*/
14+
List<Map<String, Object>> queryList(@Param("tableName") String tableName);
815
/**
916
* 查询表信息
1017
*
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.monkeyzi.code.mapper;
2+
3+
import org.apache.ibatis.annotations.Param;
4+
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
public interface OracleCodeGenMapper {
9+
/**
10+
* 查询当前库的表信息
11+
* @param tableName
12+
* @return
13+
*/
14+
List<Map<String, Object>> queryList(@Param("tableName") String tableName);
15+
/**
16+
* 查询表信息
17+
*
18+
* @param tableName 表名称
19+
* @return
20+
*/
21+
Map<String, String> queryTable(String tableName);
22+
23+
/**
24+
* 查询表列信息
25+
*
26+
* @param tableName 表名称
27+
* @return
28+
*/
29+
List<Map<String, String>> queryColumns(String tableName);
30+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
11
package com.monkeyzi.code.service;
22

3+
import com.github.pagehelper.PageInfo;
4+
import com.monkeyzi.code.dto.GenCodeDto;
35
import com.monkeyzi.code.dto.GenConfigDto;
6+
import com.monkeyzi.code.dto.PageRequest;
47

58
public interface CodeGenService {
69

710
byte[] generatorCode(GenConfigDto genConfig);
11+
12+
/**
13+
* 分页查询表信息
14+
* @param page
15+
* @param genCodeDto
16+
* @return
17+
*/
18+
PageInfo pageQuery(PageRequest page, GenCodeDto genCodeDto);
819
}
Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
package com.monkeyzi.code.service.impl;
22

33
import cn.hutool.core.io.IoUtil;
4+
import com.github.pagehelper.PageHelper;
5+
import com.github.pagehelper.PageInfo;
6+
import com.monkeyzi.code.dto.GenCodeDto;
47
import com.monkeyzi.code.dto.GenConfigDto;
8+
import com.monkeyzi.code.dto.PageRequest;
9+
import com.monkeyzi.code.entity.SysDatasourceConf;
510
import com.monkeyzi.code.holder.DynamicDataSourceContextHolder;
611
import com.monkeyzi.code.mapper.MysqlCodeGenMapper;
12+
import com.monkeyzi.code.mapper.OracleCodeGenMapper;
713
import com.monkeyzi.code.service.CodeGenService;
14+
import com.monkeyzi.code.service.DataSourceConfService;
815
import com.monkeyzi.code.utils.CodeGenUtils;
916
import lombok.extern.slf4j.Slf4j;
1017
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,28 +20,73 @@
1320
import java.io.ByteArrayOutputStream;
1421
import java.util.List;
1522
import java.util.Map;
23+
import java.util.Optional;
1624
import java.util.zip.ZipOutputStream;
1725

1826
@Slf4j
1927
@Service
2028
public class CodeGenServiceImpl implements CodeGenService {
2129

30+
private static final String DEFAULT_DB_TYPE="mysql";
31+
@Autowired
32+
private DataSourceConfService dataSourceConfService;
2233
@Autowired
2334
private MysqlCodeGenMapper mysqlCodeGenMapper;
35+
@Autowired
36+
private OracleCodeGenMapper oracleCodeGenMapper;
2437

2538

2639
@Override
2740
public byte[] generatorCode(GenConfigDto genConfig) {
41+
String dbType=this.getDbType(genConfig.getId());
2842
DynamicDataSourceContextHolder.setDataSourceType(genConfig.getId());
2943
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
3044
ZipOutputStream zip = new ZipOutputStream(outputStream);
3145
//查询表信息
32-
Map<String, String> table = mysqlCodeGenMapper.queryTable(genConfig.getTableName());
46+
Map<String, String> table;
3347
//查询列信息
34-
List<Map<String, String>> columns = mysqlCodeGenMapper.queryColumns(genConfig.getTableName());
48+
List<Map<String, String>> columns;
49+
if (dbType.equals(DEFAULT_DB_TYPE)){
50+
table = mysqlCodeGenMapper.queryTable(genConfig.getTableName());
51+
columns=mysqlCodeGenMapper.queryColumns(genConfig.getTableName());
52+
}else {
53+
table = oracleCodeGenMapper.queryTable(genConfig.getTableName());
54+
columns=oracleCodeGenMapper.queryColumns(genConfig.getTableName());
55+
}
3556
//生成代码
3657
CodeGenUtils.generatorCode(genConfig, table, columns, zip);
3758
IoUtil.close(zip);
3859
return outputStream.toByteArray();
3960
}
61+
62+
@Override
63+
public PageInfo pageQuery(PageRequest page, GenCodeDto genCodeDto) {
64+
String dbType=this.getDbType(genCodeDto.getId());
65+
DynamicDataSourceContextHolder.setDataSourceType(genCodeDto.getId());
66+
PageHelper.startPage(page.getPageNum(),page.getPageSize());
67+
List<Map<String, Object>> maps;
68+
//分数据库类型查询
69+
if (dbType.equals(DEFAULT_DB_TYPE)){
70+
maps = this.mysqlCodeGenMapper.queryList(genCodeDto.getTableName());
71+
}else {
72+
maps=this.oracleCodeGenMapper.queryList(genCodeDto.getTableName());
73+
}
74+
return new PageInfo(maps);
75+
76+
}
77+
78+
/**
79+
* 查询数据源类型
80+
* @param id
81+
* @return
82+
*/
83+
private String getDbType(Integer id){
84+
String dbType=DEFAULT_DB_TYPE;
85+
if (id!=null){
86+
SysDatasourceConf datasourceConf=this.dataSourceConfService.getById(id);
87+
boolean flag= Optional.of(datasourceConf).isPresent();
88+
dbType=flag?datasourceConf.getDbType():dbType;
89+
}
90+
return dbType;
91+
}
4092
}

0 commit comments

Comments
 (0)