修复代码生成器移除JPA后异常

This commit is contained in:
kenhy
2020-05-21 16:03:03 +08:00
parent 1b72bbfe21
commit a2e68089e7
4 changed files with 54 additions and 26 deletions

View File

@ -52,8 +52,7 @@ public class GeneratorController {
public ResponseEntity<Object> getTables(@RequestParam(defaultValue = "") String name,
@RequestParam(defaultValue = "0")Integer page,
@RequestParam(defaultValue = "10")Integer size){
int[] startEnd = PageUtil.transToStartEnd(page, size);
return new ResponseEntity<>(generatorService.getTables(name,startEnd), HttpStatus.OK);
return new ResponseEntity<>(generatorService.getTables(name, page, size), HttpStatus.OK);
}
@ApiOperation("查询字段数据")

View File

@ -5,6 +5,7 @@
*/
package co.yixiang.gen.service;
import co.yixiang.common.web.vo.Paging;
import co.yixiang.gen.domain.ColumnConfig;
import co.yixiang.gen.domain.GenConfig;
import org.springframework.http.ResponseEntity;
@ -22,10 +23,11 @@ public interface GeneratorService {
/**
* 查询数据库元数据
* @param name 表名
* @param startEnd 分页参数
* @param page 分页页码
* @param size 分页大小
* @return /
*/
Object getTables(String name, int[] startEnd);
Object getTables(String name, Integer page, Integer size);
/**
* 得到数据表的元数据
@ -84,4 +86,6 @@ public interface GeneratorService {
* @return /
*/
List<ColumnConfig> query(String table);
}

View File

@ -20,6 +20,8 @@ import co.yixiang.utils.FileUtil;
import co.yixiang.utils.PageUtil;
import co.yixiang.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@ -30,6 +32,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -58,26 +61,12 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public Object getTables(String name, int[] startEnd) {
// 使用预编译防止sql注入
String sql = "select table_name ,create_time , engine, table_collation, table_comment from information_schema.tables " +
"where table_schema = (select database()) " +
"and table_name like ? order by create_time desc";
Query query = em.createNativeQuery(sql);
query.setFirstResult(startEnd[0]);
query.setMaxResults(startEnd[1]-startEnd[0]);
query.setParameter(1, StringUtils.isNotBlank(name) ? ("%" + name + "%") : "%%");
List result = query.getResultList();
List<TableInfo> tableInfos = new ArrayList<>();
for (Object obj : result) {
Object[] arr = (Object[]) obj;
tableInfos.add(new TableInfo(arr[0],arr[1],arr[2],arr[3], ObjectUtil.isNotEmpty(arr[4])? arr[4] : "-"));
}
Query query1 = em.createNativeQuery("SELECT COUNT(*) from information_schema.tables where table_schema = (select database()) " +
"and table_name like ? order by create_time desc");
query1.setParameter(1, StringUtils.isNotBlank(name) ? ("%" + name + "%") : "%%");
Object totalElements = query1.getSingleResult();
return PageUtil.toPage(tableInfos,totalElements);
public Object getTables(String name, Integer page, Integer size) {
IPage<TableInfo> pages = null;
Page<TableInfo> pageModel = new Page<>(page, size);
pages = baseMapper.selectTables(pageModel,name);
Integer totalElements = 0;
return PageUtil.toPage(pages.getRecords(),pages.getTotal());
}
@Override
@ -96,12 +85,27 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
@Override
public List<ColumnConfig> query(String tableName){
// 使用预编译防止sql注入
String sql = "select column_name, is_nullable, data_type, column_comment, column_key, extra from information_schema.columns " +
/* String sql = "select column_name, is_nullable, data_type, column_comment, column_key, extra from information_schema.columns " +
"where table_name = ? and table_schema = (select database()) order by ordinal_position";
Query query = em.createNativeQuery(sql);
query.setParameter(1,tableName);
List result = query.getResultList();
List<ColumnConfig> columnInfos = new ArrayList<>();
for (Object obj : result) {
Object[] arr = (Object[]) obj;
columnInfos.add(
new ColumnConfig(
tableName,
arr[0].toString(),
"NO".equals(arr[1]),
arr[2].toString(),
ObjectUtil.isNotNull(arr[3]) ? arr[3].toString() : null,
ObjectUtil.isNotNull(arr[4]) ? arr[4].toString() : null,
ObjectUtil.isNotNull(arr[5]) ? arr[5].toString() : null)
);
}*/
List<ColumnConfig> columnInfos = new ArrayList<>();
List result = baseMapper.queryByTableName(tableName);
for (Object obj : result) {
Object[] arr = (Object[]) obj;
columnInfos.add(
@ -133,7 +137,7 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
if(StringUtils.isBlank(column.getRemark())){
column.setRemark(columnInfo.getRemark());
}
this.save(column);
this.saveOrUpdate(column);
} else {
// 如果找不到,则保存新字段信息
this.save(columnInfo);

View File

@ -7,10 +7,31 @@ package co.yixiang.gen.service.mapper;
import co.yixiang.gen.domain.ColumnConfig;
import co.yixiang.common.mapper.CoreMapper;
import co.yixiang.gen.domain.vo.TableInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface ColumnInfoMapper extends CoreMapper<ColumnConfig> {
@Select("select table_name ,create_time , engine, table_collation, table_comment from information_schema.tables " +
"where table_schema = (select database()) and table_name like CONCAT('%',#{name},'%') order by create_time desc")
IPage<TableInfo> selectTables(@Param("page") Page page, @Param("name") String name);
@Select("SELECT COUNT(*) from information_schema.tables where table_schema = (select database()) and table_name like CONCAT('%',#{name},'%') order by create_time desc")
Integer selectTablesCount(@Param("name") String name);
@Select("select column_name, is_nullable, data_type, column_comment, column_key, extra from information_schema.columns " +
"where table_name = #{name} and table_schema = (select database()) order by ordinal_position")
List queryByTableName(@Param("name") String name);
}