想着自己几次修改数据库表,每次修改数据库表,跟着需要修改一堆东西,现在项目近40张表,如果一个个写实体,写映射文件,写查询SQL等等,那还了得。
索性写了一个超级工具!可以一步生成:
1. 数据库表到实体Bean,注意这里包括了comment,当做字段注释,包含序列化及annotation
2. 对应Mapper接口生成,包括泛型
3. 对应字段与数据库字段对应xml配置
4. 分页映射
5. 通用CRUD 查询,删除,修改,增加等SQL,包括分页
这个类我没写注释,相信大家很快就能够明白,大家随便修改修改就可以拿去自己用了!会至少为你省下一天时间,而且不会然你心烦,表越多越好。。。
package com.bling.saysays.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class EntityUtil {
private String type_char = "char";
private String type_date = "date";
private String type_int = "int";
private String type_text = "text";
private String bean_path = "d:/entity_bean";
private String mapper_path = "d:/entity_mapper";
private String bean_package = "com.bling.saysays.bean";
private String mapper_package = "com.bling.saysays.mapper";
private String mapper_extends = "SqlMapper";
private String driverName = "com.mysql.jdbc.Driver";
private String user = "root";
private String password = "84004880";
private String url = "jdbc:mysql://localhost:3306/saysays";
private String tableName;
private String beanName;
private String mapperName;
private Connection conn;
private void init() throws ClassNotFoundException, SQLException{
Class.forName(driverName);
conn = DriverManager.getConnection(url, user, password);
}
private List<String> getTables() throws SQLException{
List<String> tables = new ArrayList<String>();
PreparedStatement pstate = conn.prepareStatement("show tables");
ResultSet results = pstate.executeQuery();
while(results.next()){
tables.add(results.getString(1));
}
return tables;
}
private void processTable(String table){
StringBuffer sb = new StringBuffer(table.length());
table = table.toLowerCase();
String[] tables = table.split("_");
String temp = null;
for(int i=1;i<tables.length;i++){
temp = tables[i].trim();
sb.append(temp.substring(0,1)
.toUpperCase())
.append(temp.substring(1));
}
beanName = sb.toString();
mapperName = beanName+"Mapper";
}
private String processType(String type){
if(type.indexOf(type_char)>-1){
return "String";
}else if(type.indexOf(type_int)>-1){
return "Integer";
}else if(type.indexOf(type_date)>-1){
return "Date";
}else if(type.indexOf(type_text)>-1){
return "String";
}
return null;
}
private String processField(String field){
StringBuffer sb = new StringBuffer(field.length());
field = field.toLowerCase();
String[] fields = field.split("_");
String temp = null;
sb.append(fields[0]);
for(int i=1;i<fields.length;i++){
temp = fields[i].trim();
sb.append(temp.substring(0,1).toUpperCase())
.append(temp.substring(1));
}
return sb.toString();
}
private String processResultMapId(String beanName){
return beanName.substring(0,1).toLowerCase() + beanName.substring(1);
}
private void outputAuthor(BufferedWriter bw,String text) throws IOException{
bw.newLine();
bw.newLine();
bw.write("/**");bw.newLine();
bw.write(" *<pre>");bw.newLine();
bw.write(" * " + text);bw.newLine();
bw.write(" * 通过BLingSoft编写工具生成,版权所有,禁止转载");bw.newLine();
bw.write(" * 时间:2013-03-21");bw.newLine();
bw.write(" *</pre>");bw.newLine();
bw.write(" * @author BLingSoft");bw.newLine();
bw.write(" * @version 1.0");bw.newLine();
bw.write("**/");
bw.newLine();
bw.newLine();
}
private void outputBaseBean() throws IOException{
File folder = new File(bean_path);
if(!folder.exists()){
folder.mkdir();
}
File beanFile = new File(bean_path,"BaseBean.java");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(beanFile)));
bw.write("package " + bean_package + ";");
bw.newLine();
bw.write("import java.io.Serializable;");
this.outputAuthor(bw,"排序基类");
bw.newLine();
bw.write("@SuppressWarnings(\"serial\")");
bw.newLine();
bw.write("public class BaseBean implements Serializable{");
bw.newLine();
bw.write("\t/*