packagecom.test.core;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.io.PrintWriter;importjava.io.RandomAccessFile;importjava.sql.Connection;importjava.sql.DatabaseMetaData;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importorg.dom4j.io.XMLWriter;/*** 自动生成表的实体类 需要修改 packagePath 实体类包名 authorName 作成者姓名 tablename 表名 category
* 实体类名(自动首字母大写) 改好后在控制台运行即可,看到success后,右键刷新实体类目录,即可看到,增加serialVersionUID后即可使用*/
public classMysqlUtil {//数据库连接
private static final String URL = "jdbc:mysql://127.0.0.1:3306/db_test";private static final String NAME = "root";private static final String PASS = "root";private static final String DRIVER = "com.mysql.jdbc.Driver";//基本参数设置
private String authorName = "zhangjy";//作者名字
private String dbname = "configure";//表名
private String tablename = "tb_app_version";//表名
private String basePath = "com.test";//指定实体生成所在包的路径
private boolean is_modify = false;//是否修改操作(当为true时开启修改模式,如果为false,则is_add,prevFieldName,modifyFieldArr三个值被忽略)
private boolean is_add = false;//添加字段还是删除字段(为true时添加modifyFieldArr中指定的字段对应的相关SQL,为true时删除modifyFieldArr中指定的字段对应的相关SQL)
private String prevFieldName = "app_version";//需要添加在哪个字段之后(如果is_add为false,该值被忽略)
private String[] modifyFieldArr = { "app_version", "app_type" };//需要修改的字段数组(当is_add为true时为添加,当is_add为false时为删除)//一些通用设置(这些字段的默认值一般不用改变,除非表的设计比较特殊)//是否去除通用字段(如果包含通用字段则为true,否则为false),通用字段是指create_by,create_date,update_by,update_date,remarks,del_flag
private boolean is_creater = true;//表中是否包含id
private boolean is_clude_id = true;//是否使用简短包名(简短包名往往体现出数据表的功能)
private boolean is_use_short_package_path = true;//是否使用简短类名(简短类型不包含简短包名,但是如果某些类为单个词,或者容易和系统类重名,则可以设置为false,即包含简短包名)
private boolean is_use_short_entity_name = true;private String shortPackagePath = null;//简短包名,用于分类,默认表的第二字段小写
private String packagePath = null;//指定实体生成所在包的路径
private String entityname = null;//实体类名
private String shortEntityname = null;//简短类型,排除表明第一第二段后剩余名称
private String[] colnamesOld; //列名数组
private String[] colnames; //列名数组
private String[] colTypes; //列名类型数组
private String[] colRemarks; //列注释数组
private boolean f_util = false; //是否需要导入包java.util.*
private boolean f_sql = false; //是否需要导入包java.sql.*
private boolean f_bigdecimal = false; //是否需要导入包java.sql.*
private static Pattern linePattern = Pattern.compile("_(\\w)");/** 构造函数*/
publicMysqlUtil() {
String tempStr= null;if (tablename.startsWith("tb_")) {
tempStr= tablename.substring(3);
}else{
tempStr=tablename;
}
packagePath= tempStr.replace("_", "").toLowerCase();
entityname=lineToHump(tempStr);if(is_use_short_package_path) {
String tempShorPackagePathtStr= tempStr.substring(0, tempStr.indexOf("_"));
shortPackagePath=tempShorPackagePathtStr.toLowerCase();
}else{
shortPackagePath=packagePath;
}if(is_use_short_entity_name) {
String tempShortEntityStr= tempStr.substring(tempStr.indexOf("_") + 1);
shortEntityname=lineToHump(tempShortEntityStr);
}else{
shortEntityname=entityname;
}//创建连接
Connection con;//查要生成实体类的表
String sql = "select * from " +tablename;
PreparedStatement pStemt= null;try{try{
Class.forName(DRIVER);
}catch(ClassNotFoundException e1) {//TODO Auto-generated catch block
e1.printStackTrace();
}
con=DriverManager.getConnection(URL, NAME, PASS);
pStemt=con.prepareStatement(sql);
DatabaseMetaData dbmd=con.getMetaData();
ResultSetMetaData rsmd=pStemt.getMetaData();int size = rsmd.getColumnCount(); //统计列
if (size > 7 &&is_creater) {if(is_clude_id) {
colnamesOld= new String[size - 7];
colnames= new String[size - 7];
colTypes= new String[size - 7];
colRemarks= new String[size - 7];
}else{
colnamesOld= new String[size - 6];
colnames= new String[size - 6];
colTypes= new String[size - 6];
colRemarks= new String[size - 6];
}
}else{if(is_clude_id) {
colnamesOld= new String[size - 1];
colnames= new String[size - 1];
colTypes= new String[size - 1];
colRemarks= new String[size - 1];
}else{
colnamesOld= newString[size];
colnames= newString[size];
colTypes= newString[size];
colRemarks= newString[size];
}
}int j = 0;
ResultSet resultSet= dbmd.getTables(null, "%", tablename, new String[] { "TABLE"});while(resultSet.next()) {
String table= resultSet.getString("TABLE_NAME");if(tablename.equals(table)) {
ResultSet rs= con.getMetaData().getColumns(null, "%", tablename.toUpperCase(), "%");while(rs.next()) {//System.out.println("字段名:"+rs.getString("COLUMN_NAME")+"--字段注释:"+rs.getString("REMARKS")+"--字段数据类型:"+rs.getString("TYPE_NAME"));
String name = rs.getString("COLUMN_NAME");if ("id".equals(name.toLowerCase()) || "create_date".equals(name.toLowerCase())|| "create_by".equals(name.toLowerCase()) || "update_date".equals(name.toLowerCase())|| "update_by".equals(name.toLowerCase()) || "remarks".equals(name.toLowerCase())|| "del_flag".equals(name.toLowerCase())) {continue;
}
colnamesOld[j]=name;
colnames[j]=lineToHump(name);
colTypes[j]= rs.getString("TYPE_NAME");if (colTypes[j].equalsIgnoreCase("datetime")) {
f_util= true;
}
String remarks= rs.getString("REMARKS");
colRemarks[j]=remarks;
j++;
}
}
}
String content=parse(colnames, colTypes, colRemarks);try{
File directory= new File("");
String path= this.getClass().getResource("").getPath();
String dir1= directory.getAbsolutePath() + "/src/main/java/" + this.basePath.replace(".", "/") + "/"
+ "business" + "/" + dbname + "/" + this.shortPackagePath;
File directory1= newFile(dir1);if (!directory1.exists()) {
directory1.mkdirs();
}
System.out.println(path);
System.out.println("src/?/" + path.substring(path.lastIndexOf("/com/", path.length())));
String outputPath= dir1 + "/" + initcap(shortEntityname) + ".java";if (!is_modify) {
FileWriter fw= newFileWriter(outputPath);
PrintWriter pw= newPrintWriter(fw);
pw.println(content);
pw.flush();
pw.close();
createDao();
createIService();
createService();
createMapper();
}else{try{
modifyMapper();
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("success!");
}catch(IOException e) {
e.printStackTrace();
}
}catch(SQLException e) {
e.printStackTrace();
}finally{
}
}/*** 功能:生成实体类主体代码
*
*@paramcolnames
*@paramcolTypes
*@paramcolSizes
*@return
*/
privateString parse(String[] colnames, String[] colTypes, String[] colRemarks) {
StringBuffer sb1= newStringBuffer();
StringBuffer sb2= newStringBuffer();
StringBuffer sb= newStringBuffer();
sb1.append("package " + this.basePath + ".business." + dbname + "." + this.shortPackagePath + ";\r\n");
sb1.append("\r\n");
sb.append("import " + this.basePath + ".base.entity.BaseEntity;\r\n");
sb.append("\r\n");//注释部分
sb.append("/**\r\n");
sb.append(" * " + tablename + " 实体类\r\n");
sb.append(" * " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + this.authorName + "\r\n");
sb.append(" */ \r\n");//实体部分
sb.append("public class " + initcap(shortEntityname) + " extends BaseEntity {\r\n");
sb.append("\r\n");
processAllAttrs(sb);//属性
processAllMethod(sb);//get set方法
sb.append("}");//判断是否导入工具包
if(f_util) {
sb2.append("import java.util.Date;\r\n");
sb2.append("\r\n");
}if(f_bigdecimal) {
sb2.append("import java.math.BigDecimal;\r\n");
sb2.append("\r\n");
}if(f_sql) {
sb2.append("import java.sql.*;\r\n");
sb2.append("\r\n");
}//System.out.println(sb.toString());
returnsb1.append(sb2.toString()).append(sb.toString()).toString();
}/*** 功能:生成所有属性
*
*@paramsb*/
private voidprocessAllAttrs(StringBuffer sb) {
sb.append("\t/**\r\n\t*\r\n\t*\r\n\t*\r\n\t*/\r\n");
sb.append("\tprivate static final long serialVersionUID = 1L;\r\n");
sb.append("\r\n");for (int i = 0; i < colnames.length; i++) {
sb.append("\t/* " + colRemarks[i] + " */\r\n");
sb.append("\tprivate " + sqlType2JavaType(colTypes[i]) + " " + colnames[i] + ";\r\n");
sb.append("\r\n");
}
}/*** 功能:生成所有方法
*
*@paramsb*/
private voidprocessAllMethod(StringBuffer sb) {for (int i = 0; i < colnames.length; i++) {
sb.append("\tpublic void set" + initcap(colnames[i]) + "(" + sqlType2JavaType(colTypes[i]) + " "
+ colnames[i] + "){\r\n");
sb.append("\t\tthis." + colnames[i] + "=" + colnames[i] + ";\r\n");
sb.append("\t}\r\n");
sb.append("\r\n");
sb.append("\tpublic " + sqlType2JavaType(colTypes[i]) + " get" + initcap(colnames[i]) + "(){\r\n");
sb.append("\t\treturn " + colnames[i] + ";\r\n");
sb.append("\t}\r\n");
sb.append("\r\n");
}
}/*** 功能:将输入字符串的首字母改成大写
*
*@paramstr
*@return
*/
privateString initcap(String str) {char[] ch =str.toCharArray();if (ch[0] >= 'a' && ch[0] <= 'z') {
ch[0] = (char) (ch[0] - 32);
}return newString(ch);
}/*** 功能:下划线转驼峰
*
*@paramstr
*@return
*/
privateString lineToHump(String str) {
str=str.toLowerCase();
Matcher matcher=linePattern.matcher(str);
StringBuffer sb= newStringBuffer();while(matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
}
matcher.appendTail(sb);returnsb.toString();
}/*** 功能:获得列的数据类型
*
*@paramsqlType
*@return
*/
privateString sqlType2JavaType(String sqlType) {
sqlType=sqlType.toUpperCase();if (sqlType.contains("UNSIGNED")) {
sqlType= sqlType.replace("UNSIGNED", "").trim();
}if (sqlType.equalsIgnoreCase("bit")) {return "Boolean";
}else if (sqlType.equalsIgnoreCase("tinyint")) {return "Integer";
}else if (sqlType.equalsIgnoreCase("smallint")) {return "Integer";
}else if (sqlType.equalsIgnoreCase("int")) {return "Integer";
}else if (sqlType.equalsIgnoreCase("bigint")) {
f_bigdecimal= true;return "BigDecimal";
}else if (sqlType.equalsIgnoreCase("float")) {
f_bigdecimal= true;return "BigDecimal";
}else if (sqlType.equalsIgnoreCase("numeric") || sqlType.equalsIgnoreCase("real")|| sqlType.equalsIgnoreCase("money") || sqlType.equalsIgnoreCase("smallmoney")|| sqlType.equalsIgnoreCase("double")) {
f_bigdecimal= true;return "BigDecimal";
}else if (sqlType.equalsIgnoreCase("decimal")) {
f_bigdecimal= true;return "BigDecimal";
}else if (sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char")|| sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar")|| sqlType.equalsIgnoreCase("text") || sqlType.equalsIgnoreCase("longtext")) {return "String";
}else if (sqlType.equalsIgnoreCase("datetime")) {
f_util= true;return "Date";
}else if (sqlType.equalsIgnoreCase("image")) {return "Blod";
}return null;
}/*** 功能:生成实体类DAO
*
*@paramcolnames
*@paramcolTypes
*@paramcolSizes
*@return*@throwsIOException*/
private void createDao() throwsIOException {
String daoName= shortEntityname + "Dao";
File directory= new File("");
String dir1= directory.getAbsolutePath() + "/src/main/java/" + this.basePath.replace(".", "/") + "/" + "dao"
+ "/" + this.shortPackagePath;
File directory1= newFile(dir1);if (!directory1.exists()) {
directory1.mkdirs();
}
String outputPath= dir1 + "/" + initcap(daoName) + ".java";
FileWriter fw= newFileWriter(outputPath);
PrintWriter pw= newPrintWriter(fw);
StringBuffer sb= newStringBuffer();
sb.append("package " + this.basePath + ".dao." + this.shortPackagePath + ";\r\n");
sb.append("\r\n");
sb.append("import org.springframework.stereotype.Repository;\r\n");
sb.append("\r\n");
sb.append("import " + this.basePath + ".base.dao.BaseDao;\r\n");
sb.append("import " + this.basePath + ".business." + dbname + "." + this.shortPackagePath + "."
+ initcap(shortEntityname) + ";\r\n");
sb.append("\r\n");//注释部分
sb.append("/**\r\n");
sb.append(" * 请不要在这里写什么方法,因为根本不需要,这里只是起着一个桥梁过渡作用\r\n");
sb.append(" * " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + this.authorName + "\r\n");
sb.append(" */ \r\n");
sb.append("@Repository\r\n");//实体部分
sb.append("public class " + initcap(daoName) + " extends BaseDao
+ initcap(shortEntityname) + "> {\r\n");
sb.append("\r\n");
sb.append("}");
pw.println(sb.toString());
pw.flush();
pw.close();
System.out.println("success!");
}/*** 功能:生成实体类Service
*
*@paramcolnames
*@paramcolTypes
*@paramcolSizes
*@return*@throwsIOException*/
private void createIService() throwsIOException {
String serviceName= shortEntityname + "Service";
File directory= new File("");
String dir1= directory.getAbsolutePath() + "/src/main/java/" + this.basePath.replace(".", "/") + "/" + "inters"
+ "/" + dbname + "/" + this.shortPackagePath;
File directory1= newFile(dir1);if (!directory1.exists()) {
directory1.mkdirs();
}
String outputPath= dir1 + "/I" + initcap(serviceName) + ".java";
FileWriter fw= newFileWriter(outputPath);
PrintWriter pw= newPrintWriter(fw);
StringBuffer sb= newStringBuffer();
sb.append("package " + this.basePath + ".inters." + dbname + "." + this.shortPackagePath + ";\r\n");
sb.append("\r\n");
sb.append("import " + this.basePath + ".business." + dbname + "." + shortPackagePath + "."
+ initcap(shortEntityname) + ";\r\n");
sb.append("import " + this.basePath + ".inters.base.IBaseService;\r\n");
sb.append("\r\n");//注释部分
sb.append("/**\r\n");
sb.append(" * 对外提供的接口,原则上这里只写自定义语句\r\n");
sb.append(" * " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + this.authorName + "\r\n");
sb.append(" */ \r\n");//实体部分
sb.append("public interface I" + initcap(serviceName) + " extends IBaseService {\r\n");
sb.append("\r\n");
sb.append("}");
pw.println(sb.toString());
pw.flush();
pw.close();
System.out.println("success!");
}/*** 功能:生成实体类Service
*
*@paramcolnames
*@paramcolTypes
*@paramcolSizes
*@return*@throwsIOException*/
private void createService() throwsIOException {
String serviceName= shortEntityname + "Service";
String daoName= shortEntityname + "Dao";
File directory= new File("");
String dir1= directory.getAbsolutePath() + "/src/main/java/" + this.basePath.replace(".", "/") + "/"
+ "service" + "/" + this.shortPackagePath;
File directory1= newFile(dir1);if (!directory1.exists()) {
directory1.mkdirs();
}
String outputPath= dir1 + "/" + initcap(serviceName) + ".java";
FileWriter fw= newFileWriter(outputPath);
PrintWriter pw= newPrintWriter(fw);
StringBuffer sb= newStringBuffer();
sb.append("package " + this.basePath + ".service." + this.shortPackagePath + ";\r\n");
sb.append("\r\n");
sb.append("import org.springframework.beans.factory.annotation.Autowired;\r\n");
sb.append("import org.springframework.stereotype.Service;\r\n");
sb.append("\r\n");
sb.append("import " + this.basePath + ".base.service.BaseService;\r\n");
sb.append("import " + this.basePath + ".dao." + shortPackagePath + "." + initcap(daoName) + ";\r\n");
sb.append("import " + this.basePath + ".business." + dbname + "." + shortPackagePath + "."
+ initcap(shortEntityname) + ";\r\n");
sb.append("import " + this.basePath + ".inters." + dbname + "." + shortPackagePath + ".I" +initcap(serviceName)+ ";\r\n");
sb.append("\r\n");//注释部分
sb.append("/**\r\n");
sb.append(" * 对外提供接口的实现,原则上这里只写自定义语句\r\n");
sb.append(" * " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + this.authorName + "\r\n");
sb.append(" */ \r\n");//实体部分
sb.append("@Service(value = \"" + serviceName + "\")\r\n");
sb.append("public class " + initcap(serviceName) + " extends BaseService implements I" +initcap(serviceName)+ " {\r\n");
sb.append("\r\n");
sb.append("\t@Autowired\r\n");
sb.append("\tprivate " + initcap(daoName) + " " + daoName + ";\r\n");
sb.append("\r\n");
sb.append("\t@Override\r\n");
sb.append("\tpublic " + initcap(daoName) + " getDao() {\r\n");
sb.append("\t\treturn this." + daoName + ";\r\n");
sb.append("\t}\r\n\r\n");
sb.append("}");
pw.println(sb.toString());
pw.flush();
pw.close();
System.out.println("success!");
}private void createMapper() throwsIOException {
String mapperName= shortEntityname + "Mapper";
String[] totalColNames= new String[colnames.length + 7];
totalColNames[0] = "id";for (int i = 0; i < colnamesOld.length; i++) {
totalColNames[i+ 1] =colnamesOld[i];
}if(is_creater) {
totalColNames[colnamesOld.length+ 1] = "create_date";
totalColNames[colnamesOld.length+ 2] = "create_by";
totalColNames[colnamesOld.length+ 3] = "update_date";
totalColNames[colnamesOld.length+ 4] = "update_by";
totalColNames[colnamesOld.length+ 5] = "remarks";
totalColNames[colnamesOld.length+ 6] = "del_flag";
}
File directory= new File("");
String dir1= directory.getAbsolutePath() + "/src/main/resources/" + "maps" + "/" + "read/" +shortPackagePath;
File directory1= newFile(dir1);if (!directory1.exists()) {
directory1.mkdirs();
}
String outputPath= dir1 + "/" + initcap(mapperName) + ".xml";
FileWriter fw= newFileWriter(outputPath);
XMLWriter xmlWriter= newXMLWriter(fw);
xmlWriter.setEscapeText(false);
StringBuffer sb= newStringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
sb.append("r\n");
sb.append("\tPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n");
sb.append("\t\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n");
sb.append("\r\n");
sb.append("\r\n");
sb.append("\t
+ this.shortPackagePath + "." + initcap(shortEntityname) + "\" >\r\n");for (int i = 0; i < totalColNames.length; i++) {if (i == 0) {
sb.append("\t\t\r\n");
}else{
sb.append("\t\t\r\n");
}
}
sb.append("\t
\r\n");sb.append("\r\n");
sb.append("\t\r\n");
sb.append("\t\r\n");for (int i = 0; i < totalColNames.length; i++) {
sb.append("\t\tt." +totalColNames[i]);if (i == totalColNames.length - 1) {
sb.append("\r\n");
}else{
sb.append(",\r\n");
}
}
sb.append("\t\r\n");
sb.append("\r\n");
sb.append("\t\r\n");
sb.append("\t\r\n");for (int i = 0; i < totalColNames.length; i++) {
sb.append("\t\tt." +totalColNames[i]);if (!totalColNames[i].equals(lineToHump(totalColNames[i]))) {
sb.append(" AS " +lineToHump(totalColNames[i]));
}if (i == totalColNames.length - 1) {
sb.append("\r\n");
}else{
sb.append(",\r\n");
}
}
sb.append("\t\r\n");
sb.append("\r\n");
sb.append("\t\r\n");
sb.append("\t\r\n");
sb.append("\t\twhere 1=1\r\n");
sb.append("\t\t\r\n");for (int i = 0; i < totalColNames.length; i++) {
sb.append("\t\t \r\n");
sb.append("\t\t\t and t." +totalColNames[i]);
sb.append("=#{");
sb.append(lineToHump(totalColNames[i]));
sb.append("}");
sb.append("\r\n");
sb.append("\t\t\r\n");
}
sb.append("\t\t\r\n");
sb.append("\t\r\n");
sb.append("\r\n");
sb.append("\t\r\n");
sb.append("\t
+ this.shortPackagePath + "." + initcap(shortEntityname) + "\" parameterType=\"Object\">\r\n");
sb.append("\t\tselect\r\n");
sb.append("\t\t\r\n");
sb.append("\t\tfrom " + tablename + " t\r\n");
sb.append("\t\twhere t.id = #{id}\r\n");
sb.append("\t
\r\n");sb.append("\r\n");
sb.append("\t\r\n");
sb.append("\t
+ this.shortPackagePath + "." + initcap(shortEntityname) + "\" parameterType=\"Object\">\r\n");
sb.append("\t\tselect\r\n");
sb.append("\t\t\r\n");
sb.append("\t\tfrom " + tablename + " t\r\n");
sb.append("\t\t\r\n");
sb.append("\t
\r\n");sb.append("\r\n");
sb.append("\t\r\n");
sb.append("\t
+ this.shortPackagePath + "." + initcap(shortEntityname) + "\" parameterType=\"Object\">\r\n");
sb.append("\t\tselect\r\n");
sb.append("\t\t\r\n");
sb.append("\t\tfrom " + tablename + " t\r\n");
sb.append("\t\t\r\n");
sb.append("\t
\r\n");sb.append("\r\n");
sb.append("\t\r\n");
sb.append("\t\r\n");
sb.append("\t\tselect count(1) from " + tablename + " t\r\n");
sb.append("\t\t\r\n");
sb.append("\t\r\n");
sb.append("\r\n");
sb.append("\t\r\n");
sb.append("\t
+ this.shortPackagePath + "." + initcap(shortEntityname) + "\" parameterType=\"Object\">\r\n");
sb.append("\t\tselect\r\n");
sb.append("\t\t\r\n");
sb.append("\t\tfrom " + tablename + " t\r\n");
sb.append("\t\t\r\n");
sb.append("\t\r\n");
sb.append("\t\t${pager.orderCondition}\r\n");
sb.append("\t\r\n");
sb.append("\t\r\n");
sb.append("\t\t${pager.mysqlQueryCondition}\r\n");
sb.append("\t\r\n");
sb.append("\t
\r\n");sb.append("\r\n");
sb.append("");
xmlWriter.write(sb.toString());
xmlWriter.flush();
xmlWriter.close();
String dir2= directory.getAbsolutePath() + "/src/main/resources/" + "maps" + "/" + "write/" +shortPackagePath;
File directory2= newFile(dir2);if (!directory2.exists()) {
directory2.mkdirs();
}
String outputPath2= dir2 + "/" + initcap(mapperName) + ".xml";
FileWriter fw2= newFileWriter(outputPath2);
XMLWriter xmlWriter2= newXMLWriter(fw2);
xmlWriter2.setEscapeText(false);
StringBuffer sb2= newStringBuffer();
sb2.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
sb2.append("r\n");
sb2.append("\tPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n");
sb2.append("\t\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n");
sb2.append("\r\n");
sb2.append("\r\n");
sb2.append("\t\r\n");
sb2.append("\t\r\n");
sb2.append("\t\twhere 1=1\r\n");
sb2.append("\t\t\r\n");for (int i = 0; i < totalColNames.length; i++) {
sb2.append("\t\t \r\n");
sb2.append("\t\t\t and t." +totalColNames[i]);
sb2.append("=#{");
sb2.append(lineToHump(totalColNames[i]));
sb2.append("}");
sb2.append("\r\n");
sb2.append("\t\t\r\n");
}
sb2.append("\t\t\r\n");
sb2.append("\t\r\n");
sb2.append("\r\n");
sb2.append("\t\r\n");
sb2.append("\t\r\n");
sb2.append("\t\tinsert into " + tablename + " (\r\n");for (int i = 0; i < totalColNames.length; i++) {
sb2.append("\t\t\t" +totalColNames[i]);if (i != totalColNames.length - 1) {
sb2.append(",\r\n");
}
}
sb2.append(")\r\n");
sb2.append("\t\tvalues (\r\n");for (int i = 0; i < totalColNames.length; i++) {
sb2.append("\t\t\t#{");
sb2.append(lineToHump(totalColNames[i]));
sb2.append("}");if (i != totalColNames.length - 1) {
sb2.append(",\r\n");
}
}
sb2.append(")\r\n");
sb2.append("\t\r\n");
sb2.append("\r\n");
sb2.append("\t\r\n");
sb2.append("\t\r\n");
sb2.append("\t\tupdate " + tablename + " set\r\n");
sb2.append("\t\t\r\n");for (int i = 1; i < totalColNames.length; i++) {
sb2.append("\t\t \r\n");
sb2.append("\t\t\t" +totalColNames[i]);
sb2.append("=#{");
sb2.append(lineToHump(totalColNames[i]));
sb2.append("}");if (i != totalColNames.length - 1) {
sb2.append(",");
}
sb2.append("\r\n");
sb2.append("\t\t\r\n");
}
sb2.append("\t\t\r\n");
sb2.append("\t\twhere id = #{id}\r\n");
sb2.append("\t\r\n");
sb2.append("\r\n");
sb2.append("\t\r\n");
sb2.append("\t\r\n");
sb2.append("\t\tupdate " + tablename + " set\r\n");
sb2.append("\t\t\r\n");for (int i = 1; i < totalColNames.length; i++) {
sb2.append("\t\t \r\n");
sb2.append("\t\t\t" +totalColNames[i]);
sb2.append("=#{");
sb2.append(lineToHump(totalColNames[i]));
sb2.append("}");if (i != totalColNames.length - 1) {
sb2.append(",");
}
sb2.append("\r\n");
sb2.append("\t\t\r\n");
}
sb2.append("\t\t\r\n");
sb2.append("\t\twhere id = #{id}\r\n");
sb2.append("\t\r\n");
sb2.append("\r\n");
sb2.append("\t\r\n");
sb2.append("\t\r\n");
sb2.append("\t\tdelete t from " + tablename + " t \r\n");
sb2.append("\t\t\r\n");
sb2.append("\t\r\n");
sb2.append("\r\n");
sb2.append("\t\r\n");
sb2.append("\t\r\n");
sb2.append("\t\tdelete from " + tablename + " \r\n");
sb2.append("\t\twhere id = #{id}\r\n");
sb2.append("\t\r\n");
sb2.append("\r\n");
sb2.append("\t\r\n");
sb2.append("\t\r\n");
sb2.append("\t\tupdate " + tablename + " t set t.del_flag=1\r\n");
sb2.append("\t\t\r\n");
sb2.append("\t\r\n");
sb2.append("\r\n");
sb2.append("\t\r\n");
sb2.append("\t\r\n");
sb2.append("\t\tupdate " + tablename + " set del_flag=1\r\n");
sb2.append("\t\twhere id = #{id}\r\n");
sb2.append("\t\r\n");
sb2.append("\r\n");
sb2.append("");
xmlWriter2.write(sb2.toString());
xmlWriter2.flush();
xmlWriter2.close();
}private void modifyMapper() throwsException {int readCnt = 0;int writeCnt = 0;
String mapperName= shortEntityname + "Mapper";
File directory= new File("");
String dir1= directory.getAbsolutePath() + "/src/main/resources/" + "maps" + "/" + "read/" +shortPackagePath;
File directory1= newFile(dir1);if (!directory1.exists()) {
directory1.mkdirs();
}
StringBuffer tempSb1= newStringBuffer();
String outputPath1= dir1 + "/" + initcap(mapperName) + ".xml";
RandomAccessFile raf1= new RandomAccessFile(outputPath1, "r");
String currReadLineString= null;while (raf1.getFilePointer()
currReadLineString= new String(raf1.readLine().getBytes("ISO-8859-1"), "utf-8");if(is_add) {if (readCnt <= 3) {
tempSb1.append(currReadLineString+ "\r\n");if (currReadLineString.equals("\t\t
+ lineToHump(prevFieldName) + "\"/>")) {
readCnt++;for(String tempStr : modifyFieldArr) {
tempSb1.append("\t\t\r\n");
}
}else if (currReadLineString.equals("\t\tt." + prevFieldName + ",")) {
readCnt++;for(String tempStr : modifyFieldArr) {
tempSb1.append("\t\tt." + tempStr + ",\r\n");
}
}else if(currReadLineString
.equals("\t\tt." + prevFieldName + " AS " + lineToHump(prevFieldName) + ",")) {
readCnt++;for(String tempStr : modifyFieldArr) {
tempSb1.append("\t\tt." + tempStr + " AS " + lineToHump(tempStr) + ",\r\n");
}
}else if (currReadLineString.equals("\t\t
+ lineToHump(prevFieldName) + " != ''\" > ")) {
readCnt++;
currReadLineString= new String(raf1.readLine().getBytes("ISO-8859-1"), "utf-8");
tempSb1.append(currReadLineString+ "\r\n");
currReadLineString= new String(raf1.readLine().getBytes("ISO-8859-1"), "utf-8");
tempSb1.append(currReadLineString+ "\r\n");for(String tempStr : modifyFieldArr) {
tempSb1.append("\t\t
+ lineToHump(tempStr) + " != ''\" > \r\n")
.append("\t\t\tand t." + tempStr + "=#{" + lineToHump(tempStr) + "}\r\n")
.append("\t\t
\r\n");}
}
}else{
tempSb1.append(currReadLineString+ "\r\n");
}
}else{if (readCnt <= modifyFieldArr.length * 4 - 1) {boolean is_del = false;for(String tempStr : modifyFieldArr) {if(currReadLineString
.equals("\t\t")|| currReadLineString.equals("\t\tt." + tempStr + ",")|| currReadLineString.equals("\t\tt." + tempStr + " AS " + lineToHump(tempStr) + ",")) {
readCnt++;
is_del= true;
}if (currReadLineString.equals("\t\t
+ lineToHump(tempStr) + " != ''\" > ")) {
readCnt++;
raf1.readLine();
raf1.readLine();
is_del= true;
}
}if (!is_del) {
tempSb1.append(currReadLineString+ "\r\n");
}
}else{
tempSb1.append(currReadLineString+ "\r\n");
}
}
}
raf1.close();
FileWriter fw1= newFileWriter(outputPath1);
XMLWriter xmlWriter1= newXMLWriter(fw1);
xmlWriter1.setEscapeText(false);
xmlWriter1.write(tempSb1.toString());
xmlWriter1.flush();
xmlWriter1.close();
String dir2= directory.getAbsolutePath() + "/src/main/resources/" + "maps" + "/" + "write/" +shortPackagePath;
File directory2= newFile(dir2);if (!directory2.exists()) {
directory2.mkdirs();
}
StringBuffer tempSb2= newStringBuffer();
String outputPath2= dir2 + "/" + initcap(mapperName) + ".xml";
RandomAccessFile raf2= new RandomAccessFile(outputPath2, "r");while (raf2.getFilePointer()
currReadLineString= new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");if(is_add) {if (writeCnt <= 4) {
tempSb2.append(currReadLineString+ "\r\n");if (currReadLineString.equals("\t\t
+ lineToHump(prevFieldName) + " != ''\" > ")) {
writeCnt++;if (writeCnt % 5 == 1) {
currReadLineString= new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
tempSb2.append(currReadLineString+ "\r\n");
currReadLineString= new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
tempSb2.append(currReadLineString+ "\r\n");for(String tempStr : modifyFieldArr) {
tempSb2.append("\t\t
+ lineToHump(tempStr) + " != ''\" > \r\n")
.append("\t\t\t and t." + tempStr + "=#{" + lineToHump(tempStr) + "}\r\n")
.append("\t\t
\r\n");}
}if (writeCnt % 5 == 4) {
currReadLineString= new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
tempSb2.append(currReadLineString+ "\r\n");
currReadLineString= new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
tempSb2.append(currReadLineString+ "\r\n");for(String tempStr : modifyFieldArr) {
tempSb2.append("\t\t
+ lineToHump(tempStr) + " != ''\" > \r\n")
.append("\t\t\t" + tempStr + "=#{" + lineToHump(tempStr) + "},\r\n")
.append("\t\t
\r\n");}
}
}else if (currReadLineString.equals("\t\t\t" + prevFieldName + ",")) {
writeCnt++;for(String tempStr : modifyFieldArr) {
tempSb2.append("\t\t\t" + tempStr + ",\r\n");
}
}else if (currReadLineString.equals("\t\t\t#{" + lineToHump(prevFieldName) + "},")) {
writeCnt++;for(String tempStr : modifyFieldArr) {
tempSb2.append("\t\t\t#{" + lineToHump(tempStr) + "},\r\n");
}
}else if(currReadLineString
.equals("\t\t ")) {
writeCnt++;
currReadLineString= new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
tempSb2.append(currReadLineString+ "\r\n");
currReadLineString= new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
tempSb2.append(currReadLineString+ "\r\n");for(String tempStr : modifyFieldArr) {
tempSb2.append("\t\t \r\n")
.append("\t\t\t" + tempStr + "=#{" + lineToHump(tempStr) + "},\r\n")
.append("\t\t
\r\n");}
}
}else{
tempSb2.append(currReadLineString+ "\r\n");
}
}else{if (writeCnt <= modifyFieldArr.length * 5 - 1) {boolean is_del = false;for(String tempStr : modifyFieldArr) {if (currReadLineString.equals("\t\t\t" + tempStr + ",")|| currReadLineString.equals("\t\t\t#{" + lineToHump(tempStr) + "},")) {
writeCnt++;
is_del= true;
}if(currReadLineString
.equals("\t\t ")||currReadLineString
.equals("\t\t ")) {
writeCnt++;
raf2.readLine();
raf2.readLine();
is_del= true;
}
}if (!is_del) {
tempSb2.append(currReadLineString+ "\r\n");
}
}else{
tempSb2.append(currReadLineString+ "\r\n");
}
}
}
raf2.close();
FileWriter fw2= newFileWriter(outputPath2);
XMLWriter xmlWriter2= newXMLWriter(fw2);
xmlWriter2.setEscapeText(false);
xmlWriter2.write(tempSb2.toString());
xmlWriter2.flush();
xmlWriter2.close();
}/*** 出口 TODO
*
*@paramargs*/
public static voidmain(String[] args) {newMysqlUtil();
}
}