my batis plus 코드 생 성 도구 의 구현 코드
AutoGenerator 를 사용 하려 고 했 는데 MyBatis-Plus 의 공식 코드 생 성기 입 니 다. ,시도 해 보 았 는데 오류 가 발생 했 습 니 다.이 유 는 MyBatis-Plus 와 mybatis-plus-generator 의 버 전이 일치 하지 않 기 때 문 입 니 다.제 가 사용 하 는 MyBatis-Plus 의 버 전 은 3.42 이지 만 mybatis-plus-generator 의 3.4.2 는 왠 지 모 르 겠 습 니 다.다운로드 가 안 되 고 3.4.1 만 다운로드 할 수 있 습 니 다.실행 할 때 항상 오류 가 발생 하고 볼 설정 설명 도 있 습 니 다.그래서 자신 이 직접 코드 를 만 드 는 도구 류 를 쓰 는 것 이 더 간단 하 다 고 생각 합 니 다.여러분 께 나 눠 드 리 겠 습 니 다.잘 부탁드립니다.
pom 파일 자바-mysql 구동 의존 도입
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
단일 코드 구현,편집기 에 복사 하여 붙 여 넣 기,주 방법 으로 실행 하면 됩 니 다.
import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* mybatis plus
* 、mapper 、
*
* @author tarzan Liu
* @date 2021/4/10 19:44
*/
public class MyBatisPlusTools {
private static final String driver = "com.mysql.cj.jdbc.Driver";//
private static final String user = "root"; //
private static final String pwd = "123456"; //
private static final String url = "jdbc:mysql://127.0.0.1:3306/ofcms" + "?user=" + user + "&password=" + pwd+"&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"; //
private static String tableName = "of_cms_ad"; //
private static String aliasName = "cms_ad"; // ,
private static final String packagePath = "com/tarzan/cms"; //mapper.xml
private static final String packageName = "com.tarzan.cms"; //mapper.xml
private static final String author = "tarzan"; //
private static final String rootPathName = "src/main/java/"; //
private static Connection getConnection = null;
static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
*
*/
private static Connection getConnections() {
try {
Class.forName(driver);
getConnection = DriverManager.getConnection(url);
} catch (Exception e) {
e.printStackTrace();
}
return getConnection;
}
/**
*
*/
private static String defaultValue(String value) {
if (StringUtils.isNotBlank(value)) {
return "; :" + value;
}
{
return "";
}
}
private static String getAliasName(String tableName,String prefix){
return tableName.substring(prefix.length());
}
/**
*
*
* long
*/
private static String formatType(String typeValue) {
if ("bit".equalsIgnoreCase(typeValue)) {
return "Boolean";
}
else if (
typeValue.equalsIgnoreCase("int") || typeValue.equalsIgnoreCase("int unsigned")
|| typeValue.equalsIgnoreCase("tinyint") || typeValue.equalsIgnoreCase("tinyint unsigned")
|| typeValue.equalsIgnoreCase("smallint") || typeValue.equalsIgnoreCase("smallint unsigned")
|| typeValue.equalsIgnoreCase("mediumint") || typeValue.equalsIgnoreCase("mediumint unsigned")
) {
return "Integer";
} else if (typeValue.equalsIgnoreCase("bigint") || typeValue.equalsIgnoreCase("bigint unsigned")) {
return "Long";
} else if (typeValue.equalsIgnoreCase("float") || typeValue.equalsIgnoreCase("float unsigned")) {
return "Float";
} else if (typeValue.equalsIgnoreCase("decimal") || typeValue.equalsIgnoreCase("decimal unsigned") || typeValue.equalsIgnoreCase("numeric") || typeValue.equalsIgnoreCase("numeric unsigned")
|| typeValue.equalsIgnoreCase("real") || typeValue.equalsIgnoreCase("real unsigned") || typeValue.equalsIgnoreCase("money") || typeValue.equalsIgnoreCase("money unsigned")
|| typeValue.equalsIgnoreCase("smallmoney") || typeValue.equalsIgnoreCase("smallmoney unsigned")) {
return "Double";
} else if (typeValue.equalsIgnoreCase("varchar") || typeValue.equalsIgnoreCase("char")
|| typeValue.equalsIgnoreCase("nvarchar") || typeValue.equalsIgnoreCase("nchar")
|| typeValue.equalsIgnoreCase("text")) {
return "String";
} else if (typeValue.equalsIgnoreCase("datetime")) {
return "Date";
} else if (typeValue.equalsIgnoreCase("image")) {
return "Blod";
} else {
return "Long";
}
}
/**
*
*/
private static String columnToProperty(String column) {
StringBuilder result = new StringBuilder();
//
if (column == null || column.isEmpty()) {
//
return "";}
else column =column.toLowerCase();
if (!column.contains("_")) {
// ,
return column.substring(0, 1).toLowerCase() + column.substring(1);
} else {
//
String[] columns = column.split("_");
for (String columnSplit : columns) {
// 、
if (columnSplit.isEmpty()) {
continue;
}
//
if (result.length() == 0) {
// ,
result.append(columnSplit.toLowerCase());
} else {
// ,
result.append(columnSplit.substring(0, 1).toUpperCase()).append(columnSplit.substring(1).toLowerCase());
}
}
return result.toString();
}
}
/**
*
*/
private static String formatBeanName(String column) {
StringBuilder result = new StringBuilder();
//
if (column == null || column.isEmpty()) {
//
return "";
} else if (!column.contains("_")) {
// ,
return column.substring(0, 1).toUpperCase() + column.substring(1);
} else {
//
String[] columns = column.split("_");
for (String columnSplit : columns) {
// 、
if (columnSplit.isEmpty()) {
continue;
}
//
result.append(columnSplit.substring(0, 1).toUpperCase()).append(columnSplit.substring(1).toLowerCase());
}
return result.toString();
}
}
/**
*
*/
private static void getBean(String tableName,String aliasName) {
getConnection = getConnections();
StringBuilder sb = new StringBuilder();
try {
DatabaseMetaData dbmd = getConnection.getMetaData();
ResultSet rs = dbmd.getColumns(null, "%", tableName, "%");
String beanName = formatBeanName(aliasName);
sb.append("package "+packageName+".entity;
");
sb.append("import com.baomidou.mybatisplus.annotation.TableName;
");
sb.append("import lombok.Data;
");
int length=sb.length();
boolean dateFlag=false;
sb.append( " /**
" +
" * @author " + author + "
" +
" * @date "+ format.format(new Date())+"
" +
" */
" +
"@Data
" +
"@TableName(\""+tableName+"\")
" +
"public class "+beanName+"Entity {
");
while (rs.next()) {
if(formatType(rs.getString("TYPE_NAME")).equals("Date")){
dateFlag=true;
}
sb.append("\t//").append(rs.getString("REMARKS")).append(defaultValue(rs.getString("COLUMN_DEF"))).append("
");
sb.append("\tprivate ").append(formatType(rs.getString("TYPE_NAME"))).append(" ").append(columnToProperty(rs.getString("COLUMN_NAME"))).append(";
");
}
sb.append("} ");
if(dateFlag){
sb.insert(length, "import java.util.Date;
");
}
} catch (Exception e) {
e.printStackTrace();
}
write(sb.toString(),"Entity.java","entity");
System.err.println("
:JAVA (bean.java)" + "
: " + "
:" + format.format(new Date()) + "
");
}
/**
* DAO
*/
private static void getMapper(String tableName,String aliasName) {
StringBuilder sb = new StringBuilder();
try {
String beanName = formatBeanName(aliasName);
sb.append("package "+packageName+".mapper;
");
sb.append("import com.baomidou.mybatisplus.core.mapper.BaseMapper;
");
sb.append("import "+packageName+".entity."+beanName+"Entity;
");
sb.append( "/**
" +
" * @author " + author + "
" +
" * @date "+ format.format(new Date())+"
" +
" */
" +
"public interface "+beanName+"Mapper extends BaseMapper<"+beanName+"Entity>{
" +
"
" +
"}");
} catch (Exception e) {
e.printStackTrace();
}
write(sb.toString(),"Mapper.java","mapper");
System.err.println("
:JAVA (dao.java)" + "
: " + "
:" + format.format(new Date()) + "
");
}
/**
* SERVICE
*/
private static void getService(String tableName,String aliasName) {
StringBuilder sb = new StringBuilder();
try {
String beanName = formatBeanName(aliasName);
sb.append("package "+packageName+".service;
");
sb.append("import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
");
sb.append("import org.springframework.stereotype.Service;
");
sb.append("import "+packageName+".mapper."+beanName+"Mapper;
");
sb.append("import "+packageName+".entity."+beanName+"Entity;
");
sb.append( "/**
" +
" * @author " + author + "
" +
" * @date "+ format.format(new Date())+"
" +
" */
" +
"@Service
" +
"public class "+beanName+"Service extends ServiceImpl<"+beanName+"Mapper, "+beanName+"Entity>{
" +
"
" +
"}");
} catch (Exception e) {
e.printStackTrace();
}
write(sb.toString(),"Service.java","service");
System.err.println("
:JAVA (service.java)" + "
: " + "
:" + format.format(new Date()) + "
");
}
/**
* , , linux redhad
* @param str
* @param name
* */
private static void write(String str, String name,String type) {
try {
File dir = new File(rootPathName +packagePath+ "/" + type);
dir.mkdirs();
String path = dir.getPath() + "/" + formatBeanName(aliasName)+name;
File file = new File(path);
if (!file.exists())
file.createNewFile();
FileOutputStream out = new FileOutputStream(file, false); // true
StringBuilder sb = new StringBuilder();
sb.append(str + "
");
out.write(sb.toString().getBytes("utf-8"));//
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//
private static void tableNames() {
getConnection = getConnections();
try {
DatabaseMetaData dbmd = getConnection.getMetaData();
ResultSet rs = dbmd.getTables(getConnection.getCatalog(), null, null, new String[] { "TABLE" });
while (rs.next()) {
tableName=rs.getString("TABLE_NAME");
aliasName=getAliasName(tableName,"of_");
//
getBean(tableName,aliasName);
//dao
getMapper(tableName,aliasName);
//
getService(tableName,aliasName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// tableNames();
//
getBean(tableName,aliasName);
//mapper
getMapper(tableName,aliasName);
//
getService(tableName,aliasName);
}
}
파일 캡 처 생 성실체
mapper
service
my batis plus 코드 생 성 도구 의 실현 코드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.my batis plus 코드 생 성 도구 에 관 한 더 많은 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.