zoukankan      html  css  js  c++  java
  • JAVA-自动生成代码-MySQL

    myBatis+Spring+SpringMVC这种框架格式即可使用。当然SpringBoot也是可以的,亲测有效,主要根据MySQL数据库还有表字段,自动生成常用CRUD代码,用了之后才知道有多赞:)
    使用之前先定好基础BaseDao<T extends BaseEntity>和接口IBaseService<T extends BaseEntity>,代码即可按照既定好的方法生成。
    代码片段以SpringBoot框架为基础;
    BaseDao<T extends BaseEntity>:

    package com.test.base.dao;
    
    
    
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.mybatis.spring.SqlSessionTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    
    import com.test.base.entity.BaseEntity;
    import com.test.base.page.PageInfo;
    import com.test.base.page.Pager;
    
    public abstract class BaseDao<T extends BaseEntity> {
    
        @Autowired
        @Qualifier("readSqlSession")
        protected SqlSessionTemplate readSqlSession;
    
        @Autowired
        @Qualifier("writeSqlSession")
        protected SqlSessionTemplate writeSqlSession;
        
        private String className;
        
        private String directPackageName;
        
        private Class<T> cls;
        
        /**
         * 实例化过程中根据泛型获取必要参数,从而对应命名空间
         */
        @SuppressWarnings("unchecked")
        public BaseDao() {
            Type entity = getClass().getGenericSuperclass();
            if (ParameterizedType.class.isAssignableFrom(entity.getClass())) {
                this.cls = ((Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
                this.className = this.cls.getSimpleName();
                String fullPackageName = this.cls.getPackage().getName();
                if(fullPackageName.lastIndexOf(".")==-1){
                    this.directPackageName = fullPackageName;
                }else{
                    this.directPackageName = fullPackageName.substring(fullPackageName.lastIndexOf(".")+1);
                }
            }
        }
        
        /**
         * 指向读取数据
         * @return
         */
        public String getReadSql(){
            return "read."+this.directPackageName+"."+this.className.toLowerCase()+".";
        };
    
        /**
         * 指向修改数据
         * @return
         */
        public String getWriteSql(){
            return "write."+this.directPackageName+"."+this.className.toLowerCase()+".";
        };
        
        /**
         * 不得不说,这也是一个设计失误,实际上根本不需要整出一个对面传递进去,好多代码已经沿用就不再修改了
         * @param entity
         * @return
         */
        public T queryById(String id){
            Map<String,String> paramMap = new HashMap<String,String>();
            paramMap.put("id", id);
            return readSqlSession.selectOne(getReadSql()+"queryById",paramMap);
        }
    
        /**
         * 只是一个简单的查询而已,所以无需限制参数类型,这是和分页查询比较明显的区别的地方
         * @param entity
         * @return
         */
        public T selectOne(Object entity){
            return readSqlSession.selectOne(getReadSql()+"selectOne",entity);
        }
        
        /**
         * 只是一个简单的查询而已,所以无需限制参数类型,这是和分页查询比较明显的区别的地方
         * @param entity
         * @param mapId,自定义修改,如果只是简单的修改查询语句,可以使用该方法,原则上不建议修改通用语句
         * @return
         */
        public T selectOne(Object entity,String mapId){
            return readSqlSession.selectOne(getReadSql()+"selectOne"+mapId,entity);
        }
    
    
        /**
         * 这里的参数类型只所以设置为BaseEntity,实际上是因为分页参数的需要,如果只是查询使用,则不必要限制类型
         * @param entity
         * @return
         */
        public int queryByCount(BaseEntity entity){
            return readSqlSession.selectOne(getReadSql()+"queryByCount",entity);
        }
        
        /**
         * 这里的参数类型只所以设置为BaseEntity,实际上是因为分页参数的需要,如果只是查询使用,则不必要限制类型
         * @param entity
         * @param mapId,自定义修改,如果只是简单的修改查询语句,可以使用该方法,原则上不建议修改通用语句
         * @return
         */
        public int queryByCount(BaseEntity entity,String mapId){
            return readSqlSession.selectOne(getReadSql()+"queryByCount"+mapId,entity);
        }
        
        /**
         * 只是一个简单的查询而已,所以无需限制参数类型,这是和分页查询比较明显的区别的地方
         * @param entity
         * @return
         */
        public List<T> selectList(Object entity) {
            return   readSqlSession.selectList(getReadSql()+"selectList",entity);
        }
        
        /**
         * 只是一个简单的查询而已,所以无需限制参数类型,这是和分页查询比较明显的区别的地方
         * @param entity
         * @param mapId,自定义修改,如果只是简单的修改查询语句,可以使用该方法,原则上不建议修改通用语句
         * @return
         */
        public List<T> selectList(Object entity,String mapId) {
            return   readSqlSession.selectList(getReadSql()+"selectList"+mapId,entity);
        }
        
        /**
         * 这里的参数类型只所以设置为BaseEntity,实际上是因为分页参数的需要,如果只是查询使用,则不必要限制类型
         * @param entity
         * @return
         */
        public PageInfo<T> queryByList(BaseEntity entity) {
            Integer rowCount = queryByCount(entity);
            Pager pager = entity.getPager();
            pager.setRowCount(rowCount);
            List<T> dataList = readSqlSession.selectList(getReadSql()+"queryByList",entity);
            return new PageInfo<T>(dataList,pager);
        }
        
        /**
         * 这里的参数类型只所以设置为BaseEntity,实际上是因为分页参数的需要,如果只是查询使用,则不必要限制类型
         * @param entity
         * @param mapId,自定义修改,如果只是简单的修改查询语句,可以使用该方法,原则上不建议修改通用语句
         * @return
         */
        public PageInfo<T> queryByList(BaseEntity entity,String mapId) {
            Integer rowCount = queryByCount(entity,mapId);
            Pager pager = entity.getPager();
            pager.setRowCount(rowCount);
            List<T> dataList = readSqlSession.selectList(getReadSql()+"queryByList"+mapId,entity);
            return new PageInfo<T>(dataList,pager);
        }
        
        /**
         * 自定义查询集合
         * @param entity
         * @param customMethod
         * @return
         */
        public <E,F> List<E> selectListCustom(F entity,String customMethod){
            return readSqlSession.selectList(getReadSql()+customMethod.trim(), entity);
        }
        
        /**
         * 自定义查询单体
         * @param entity
         * @param customMethod
         * @return
         */
        @SuppressWarnings("unchecked")
        public <E,F> E selectOneCustom(F entity,String customMethod){
            return (E) readSqlSession.selectOne(getReadSql()+customMethod.trim(),entity);
        }
        
        
        /**
         * 插入对象
         * @param object
         */
        public void add(T object) {
            writeSqlSession.insert(getWriteSql()+"add",object);
        }
        
        /**
         * 修改数据,修改实体类中不为null的字段数据,用于避免0倍识别为空字符串
         * @param object
         */
        public void update(T object) {
            writeSqlSession.update(getWriteSql()+"update",object);
        }
        
        /**
         * 修改数据,只修改实体类中不为空的字段数据
         * @param object
         */
        public void updateBySelective(T object) {
            writeSqlSession.update(getWriteSql()+"updateBySelective",object);
        }
    
        /**
         * 根据ID彻底删除数据,不得不说,这也是一个设计失误,实际上根本不需要整出一个对面传递进去,好多代码已经沿用就不再修改了
         * @param id
         */
        public void deleteById(String id){
            Map<String,String> paramMap = new HashMap<String,String>();
            paramMap.put("id", id);
            writeSqlSession.delete(getWriteSql()+"deleteById",paramMap);
        }
        
        /**
         * 根据条件彻底删除数据
         * @param entity
         */
        public void deleteBySelective(Object entity){
            writeSqlSession.delete(getWriteSql()+"deleteBySelective",entity);
        }
        
        /**
         * 根据ID逻辑删除数据,不得不说,这也是一个设计失误,实际上根本不需要整出一个对面传递进去,好多代码已经沿用就不再修改了
         * @param id
         */
        public void deleteLogicById(String id){
            Map<String,String> paramMap = new HashMap<String,String>();
            paramMap.put("id", id);
            writeSqlSession.delete(getWriteSql()+"deleteLogicById",paramMap);
        }
        
        /**
         * 根据条件逻辑删除数据
         * @param entity
         */
        public void deleteLogicBySelective(Object entity){
            writeSqlSession.delete(getWriteSql()+"deleteLogicBySelective",entity);
        }
        
        /**
         * 自定义插入操作
         * @param entity
         * @param customMethod
         */
        public <E> void addEntityCustom(E entity,String customMethod){
            writeSqlSession.insert(getWriteSql()+customMethod.trim(),entity);
        }
        
        /**
         * 自定义更新操作
         * @param entity
         * @param customMethod
         */
        public <E> void updateEntityCustom(E entity,String customMethod){
            writeSqlSession.update(getWriteSql()+customMethod.trim(),entity);
        }
        
        /**
         * 自定义删除操作
         * @param entity
         * @param customMethod
         */
        public <E> void deleteEntityCustom(E entity,String customMethod){
            writeSqlSession.delete(getWriteSql()+customMethod.trim(),entity);
        }
    }

    IBaseService<T extends BaseEntity>:

    package com.test.inters.base;
    
    import java.util.List;
    
    import com.test.base.entity.BaseEntity;
    import com.test.base.page.PageInfo;
    
    /**
     * Created by Administrator on 2017/3/20.
     */
    public interface IBaseService<T extends BaseEntity> {
    
        public T queryById(String id);
    
        public T selectOne(Object entity);
    
        public int queryByCount(BaseEntity entity);
    
        public List<T> selectList(Object entity);
    
        public PageInfo<T> queryByList(BaseEntity entity);
    
        public void add(T t) throws Exception;
    
        public void update(T t) throws Exception;
    
        public void updateBySelective(T t) throws Exception;
    
        public void deleteById(String... ids) throws Exception;
    
        public void deleteBySelective(Object entity) throws Exception;
    
        public void deleteLogicById(String... ids) throws Exception;
    
        public void deleteLogicBySelective(Object entity) throws Exception;
    }

    生成代码的工具类,主要原理为读取数据库表字段,按照表生成相关Entity,Service,Dao,Mapper

    package com.test.core;
    
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.RandomAccessFile;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import org.dom4j.io.XMLWriter;
    
    /**
     * 自动生成表的实体类 需要修改 packagePath 实体类包名 authorName 作成者姓名 tablename 表名 category
     * 实体类名(自动首字母大写) 改好后在控制台运行即可,看到success后,右键刷新实体类目录,即可看到,增加serialVersionUID后即可使用
     */
    public class MysqlUtil {
    
        // 数据库连接
        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)");
    
        /*
         * 构造函数
         */
        public MysqlUtil() {
            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 = new String[size];
                        colnames = new String[size];
                        colTypes = new String[size];
                        colRemarks = new String[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 = new File(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 = new FileWriter(outputPath);
                        PrintWriter pw = new PrintWriter(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 {
            }
        }
    
        /**
         * 功能:生成实体类主体代码
         * 
         * @param colnames
         * @param colTypes
         * @param colSizes
         * @return
         */
        private String parse(String[] colnames, String[] colTypes, String[] colRemarks) {
            StringBuffer sb1 = new StringBuffer();
            StringBuffer sb2 = new StringBuffer();
            StringBuffer sb = new StringBuffer();
    
            sb1.append("package " + this.basePath + ".business." + dbname + "." + this.shortPackagePath + ";
    ");
            sb1.append("
    ");
    
            sb.append("import " + this.basePath + ".base.entity.BaseEntity;
    ");
            sb.append("
    ");
            // 注释部分
            sb.append("/**
    ");
            sb.append(" * " + tablename + " 实体类
    ");
            sb.append(" * " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + this.authorName + "
    ");
            sb.append(" */ 
    ");
            // 实体部分
            sb.append("public class " + initcap(shortEntityname) + " extends BaseEntity {
    ");
            sb.append("
    ");
            processAllAttrs(sb);// 属性
            processAllMethod(sb);// get set方法
            sb.append("}");
    
            // 判断是否导入工具包
            if (f_util) {
                sb2.append("import java.util.Date;
    ");
                sb2.append("
    ");
            }
    
            if (f_bigdecimal) {
                sb2.append("import java.math.BigDecimal;
    ");
                sb2.append("
    ");
            }
    
            if (f_sql) {
                sb2.append("import java.sql.*;
    ");
                sb2.append("
    ");
            }
    
            // System.out.println(sb.toString());
            return sb1.append(sb2.toString()).append(sb.toString()).toString();
        }
    
        /**
         * 功能:生成所有属性
         * 
         * @param sb
         */
        private void processAllAttrs(StringBuffer sb) {
            sb.append("	/**
    	*
    	*
    	*
    	*/
    ");
            sb.append("	private static final long serialVersionUID = 1L;
    ");
            sb.append("
    ");
            for (int i = 0; i < colnames.length; i++) {
                sb.append("	/* " + colRemarks[i] + " */
    ");
                sb.append("	private " + sqlType2JavaType(colTypes[i]) + " " + colnames[i] + ";
    ");
                sb.append("
    ");
            }
    
        }
    
        /**
         * 功能:生成所有方法
         * 
         * @param sb
         */
        private void processAllMethod(StringBuffer sb) {
    
            for (int i = 0; i < colnames.length; i++) {
                sb.append("	public void set" + initcap(colnames[i]) + "(" + sqlType2JavaType(colTypes[i]) + " "
                        + colnames[i] + "){
    ");
                sb.append("		this." + colnames[i] + "=" + colnames[i] + ";
    ");
                sb.append("	}
    ");
                sb.append("
    ");
                sb.append("	public " + sqlType2JavaType(colTypes[i]) + " get" + initcap(colnames[i]) + "(){
    ");
                sb.append("		return " + colnames[i] + ";
    ");
                sb.append("	}
    ");
                sb.append("
    ");
            }
    
        }
    
        /**
         * 功能:将输入字符串的首字母改成大写
         * 
         * @param str
         * @return
         */
        private String initcap(String str) {
    
            char[] ch = str.toCharArray();
            if (ch[0] >= 'a' && ch[0] <= 'z') {
                ch[0] = (char) (ch[0] - 32);
            }
    
            return new String(ch);
        }
    
        /**
         * 功能:下划线转驼峰
         * 
         * @param str
         * @return
         */
        private String lineToHump(String str) {
            str = str.toLowerCase();
            Matcher matcher = linePattern.matcher(str);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
            }
            matcher.appendTail(sb);
            return sb.toString();
        }
    
        /**
         * 功能:获得列的数据类型
         * 
         * @param sqlType
         * @return
         */
        private String 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
         * 
         * @param colnames
         * @param colTypes
         * @param colSizes
         * @return
         * @throws IOException
         */
        private void createDao() throws IOException {
            String daoName = shortEntityname + "Dao";
    
            File directory = new File("");
            String dir1 = directory.getAbsolutePath() + "/src/main/java/" + this.basePath.replace(".", "/") + "/" + "dao"
                    + "/" + this.shortPackagePath;
            File directory1 = new File(dir1);
            if (!directory1.exists()) {
                directory1.mkdirs();
            }
            String outputPath = dir1 + "/" + initcap(daoName) + ".java";
            FileWriter fw = new FileWriter(outputPath);
            PrintWriter pw = new PrintWriter(fw);
    
            StringBuffer sb = new StringBuffer();
    
            sb.append("package " + this.basePath + ".dao." + this.shortPackagePath + ";
    ");
            sb.append("
    ");
            sb.append("import org.springframework.stereotype.Repository;
    ");
            sb.append("
    ");
    
            sb.append("import " + this.basePath + ".base.dao.BaseDao;
    ");
            sb.append("import " + this.basePath + ".business." + dbname + "." + this.shortPackagePath + "."
                    + initcap(shortEntityname) + ";
    ");
            sb.append("
    ");
            // 注释部分
            sb.append("/**
    ");
            sb.append(" * 请不要在这里写什么方法,因为根本不需要,这里只是起着一个桥梁过渡作用
    ");
            sb.append(" * " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + this.authorName + "
    ");
            sb.append(" */ 
    ");
            sb.append("@Repository
    ");
            // 实体部分
            sb.append("public class " + initcap(daoName) + "<T extends " + initcap(shortEntityname) + "> extends BaseDao<"
                    + initcap(shortEntityname) + "> {
    ");
            sb.append("
    ");
            sb.append("}");
    
            pw.println(sb.toString());
            pw.flush();
            pw.close();
            System.out.println("success!");
        }
    
        /**
         * 功能:生成实体类Service
         * 
         * @param colnames
         * @param colTypes
         * @param colSizes
         * @return
         * @throws IOException
         */
        private void createIService() throws IOException {
            String serviceName = shortEntityname + "Service";
    
            File directory = new File("");
            String dir1 = directory.getAbsolutePath() + "/src/main/java/" + this.basePath.replace(".", "/") + "/" + "inters"
                    + "/" + dbname + "/" + this.shortPackagePath;
            File directory1 = new File(dir1);
            if (!directory1.exists()) {
                directory1.mkdirs();
            }
    
            String outputPath = dir1 + "/I" + initcap(serviceName) + ".java";
            FileWriter fw = new FileWriter(outputPath);
            PrintWriter pw = new PrintWriter(fw);
    
            StringBuffer sb = new StringBuffer();
    
            sb.append("package " + this.basePath + ".inters." + dbname + "." + this.shortPackagePath + ";
    ");
            sb.append("
    ");
            sb.append("import " + this.basePath + ".business." + dbname + "." + shortPackagePath + "."
                    + initcap(shortEntityname) + ";
    ");
            sb.append("import " + this.basePath + ".inters.base.IBaseService;
    ");
            sb.append("
    ");
            // 注释部分
            sb.append("/**
    ");
            sb.append(" * 对外提供的接口,原则上这里只写自定义语句
    ");
            sb.append(" * " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + this.authorName + "
    ");
            sb.append(" */ 
    ");
            // 实体部分
            sb.append("public interface I" + initcap(serviceName) + "<T extends " + initcap(shortEntityname)
                    + "> extends IBaseService<" + initcap(shortEntityname) + "> {
    ");
            sb.append("
    ");
            sb.append("}");
    
            pw.println(sb.toString());
            pw.flush();
            pw.close();
            System.out.println("success!");
        }
    
        /**
         * 功能:生成实体类Service
         * 
         * @param colnames
         * @param colTypes
         * @param colSizes
         * @return
         * @throws IOException
         */
        private void createService() throws IOException {
            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 = new File(dir1);
            if (!directory1.exists()) {
                directory1.mkdirs();
            }
    
            String outputPath = dir1 + "/" + initcap(serviceName) + ".java";
            FileWriter fw = new FileWriter(outputPath);
            PrintWriter pw = new PrintWriter(fw);
    
            StringBuffer sb = new StringBuffer();
    
            sb.append("package " + this.basePath + ".service." + this.shortPackagePath + ";
    ");
            sb.append("
    ");
            sb.append("import org.springframework.beans.factory.annotation.Autowired;
    ");
            sb.append("import org.springframework.stereotype.Service;
    ");
            sb.append("
    ");
    
            sb.append("import " + this.basePath + ".base.service.BaseService;
    ");
            sb.append("import " + this.basePath + ".dao." + shortPackagePath + "." + initcap(daoName) + ";
    ");
            sb.append("import " + this.basePath + ".business." + dbname + "." + shortPackagePath + "."
                    + initcap(shortEntityname) + ";
    ");
            sb.append("import " + this.basePath + ".inters." + dbname + "." + shortPackagePath + ".I" + initcap(serviceName)
                    + ";
    ");
            sb.append("
    ");
            // 注释部分
            sb.append("/**
    ");
            sb.append(" * 对外提供接口的实现,原则上这里只写自定义语句
    ");
            sb.append(" * " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + this.authorName + "
    ");
            sb.append(" */ 
    ");
            // 实体部分
            sb.append("@Service(value = "" + serviceName + "")
    ");
            sb.append("public class " + initcap(serviceName) + "<T extends " + initcap(shortEntityname)
                    + "> extends BaseService<" + initcap(shortEntityname) + "> implements I" + initcap(serviceName)
                    + "<T> {
    ");
            sb.append("
    ");
    
            sb.append("	@Autowired
    ");
            sb.append("	private " + initcap(daoName) + "<T> " + daoName + ";
    ");
            sb.append("
    ");
    
            sb.append("	@Override
    ");
            sb.append("	public " + initcap(daoName) + "<T> getDao() {
    ");
            sb.append("		return this." + daoName + ";
    ");
            sb.append("	}
    
    ");
            sb.append("}");
    
            pw.println(sb.toString());
            pw.flush();
            pw.close();
            System.out.println("success!");
        }
    
        private void createMapper() throws IOException {
            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 = new File(dir1);
            if (!directory1.exists()) {
                directory1.mkdirs();
            }
            String outputPath = dir1 + "/" + initcap(mapperName) + ".xml";
            FileWriter fw = new FileWriter(outputPath);
            XMLWriter xmlWriter = new XMLWriter(fw);
            xmlWriter.setEscapeText(false);
    
            StringBuffer sb = new StringBuffer();
            sb.append("<?xml version="1.0" encoding="UTF-8"?>
    ");
            sb.append("<!DOCTYPE mapper
    ");
            sb.append("	PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    ");
            sb.append("	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    ");
            sb.append(
                    "<mapper namespace="read." + this.shortPackagePath + "." + shortEntityname.toLowerCase() + "">
    ");
    
            sb.append("
    ");
    
            sb.append("	<resultMap id="BaseResultMap" type="" + this.basePath + ".business." + dbname + "."
                    + this.shortPackagePath + "." + initcap(shortEntityname) + "" >
    ");
            for (int i = 0; i < totalColNames.length; i++) {
                if (i == 0) {
                    sb.append("		<id column="" + totalColNames[i] + "" property="" + lineToHump(totalColNames[i])
                            + ""/>
    ");
                } else {
                    sb.append("		<result column="" + totalColNames[i] + "" property="" + lineToHump(totalColNames[i])
                            + ""/>
    ");
                }
            }
            sb.append("	</resultMap>
    ");
            sb.append("
    ");
    
            sb.append("	<!-- 配合resultMap使用查询数据列 -->
    ");
            sb.append("	<sql id="Base_Result_Map_Column_List">
    ");
            for (int i = 0; i < totalColNames.length; i++) {
                sb.append("		t." + totalColNames[i]);
                if (i == totalColNames.length - 1) {
                    sb.append("
    ");
                } else {
                    sb.append(",
    ");
                }
            }
            sb.append("	</sql>
    ");
            sb.append("
    ");
    
            sb.append("	<!-- 查询数据列 -->
    ");
            sb.append("	<sql id="Base_Column_List">
    ");
            for (int i = 0; i < totalColNames.length; i++) {
                sb.append("		t." + totalColNames[i]);
                if (!totalColNames[i].equals(lineToHump(totalColNames[i]))) {
                    sb.append(" AS " + lineToHump(totalColNames[i]));
                }
                if (i == totalColNames.length - 1) {
                    sb.append("
    ");
                } else {
                    sb.append(",
    ");
                }
            }
            sb.append("	</sql>
    ");
            sb.append("
    ");
    
            sb.append("	<!-- 查询条件 -->
    ");
            sb.append("	<sql id="Where_Clause">
    ");
            sb.append("		where 1=1
    ");
            sb.append("		<trim suffixOverrides=",">
    ");
            for (int i = 0; i < totalColNames.length; i++) {
                sb.append("		<if test="" + lineToHump(totalColNames[i]) + " != null and " + lineToHump(totalColNames[i])
                        + " != ''" > 
    ");
                sb.append("			 and t." + totalColNames[i]);
                sb.append("=#{");
                sb.append(lineToHump(totalColNames[i]));
                sb.append("}");
                sb.append("
    ");
                sb.append("		</if>
    ");
            }
            sb.append("		</trim>
    ");
            sb.append("	</sql>
    ");
            sb.append("
    ");
    
            sb.append("	<!-- 根据id查询 -->
    ");
            sb.append("	<select id="queryById" resultType="" + this.basePath + ".business." + dbname + "."
                    + this.shortPackagePath + "." + initcap(shortEntityname) + "" parameterType="Object">
    ");
            sb.append("		select
    ");
            sb.append("		<include refid="Base_Column_List" />
    ");
            sb.append("		from " + tablename + " t
    ");
            sb.append("		where t.id = #{id}
    ");
            sb.append("	</select>
    ");
            sb.append("
    ");
    
            sb.append("	<!-- 查询 -->
    ");
            sb.append("	<select id="selectOne" resultType="" + this.basePath + ".business." + dbname + "."
                    + this.shortPackagePath + "." + initcap(shortEntityname) + "" parameterType="Object">
    ");
            sb.append("		select
    ");
            sb.append("		<include refid="Base_Column_List" />
    ");
            sb.append("		from " + tablename + " t
    ");
            sb.append("		<include refid="Where_Clause" />
    ");
            sb.append("	</select>
    ");
            sb.append("
    ");
    
            sb.append("	<!-- 查询集合 -->
    ");
            sb.append("	<select id="selectList" resultType="" + this.basePath + ".business." + dbname + "."
                    + this.shortPackagePath + "." + initcap(shortEntityname) + "" parameterType="Object">
    ");
            sb.append("		select
    ");
            sb.append("		<include refid="Base_Column_List" />
    ");
            sb.append("		from " + tablename + " t
    ");
            sb.append("		<include refid="Where_Clause" />
    ");
            sb.append("	</select>
    ");
            sb.append("
    ");
    
            sb.append("	<!-- 查询总数 -->
    ");
            sb.append("	<select id="queryByCount" resultType="java.lang.Integer" parameterType="Object">
    ");
            sb.append("		select count(1) from " + tablename + " t
    ");
            sb.append("		<include refid="Where_Clause" />
    ");
            sb.append("	</select>
    ");
            sb.append("
    ");
    
            sb.append("	<!-- 查询列表-->
    ");
            sb.append("	<select id="queryByList" resultType="" + this.basePath + ".business." + dbname + "."
                    + this.shortPackagePath + "." + initcap(shortEntityname) + "" parameterType="Object">
    ");
            sb.append("		select
    ");
            sb.append("		<include refid="Base_Column_List" />
    ");
            sb.append("		from " + tablename + " t
    ");
            sb.append("		<include refid="Where_Clause" />
    ");
            sb.append("	<if test="pager.orderCondition != null and pager.orderCondition != ''">
    ");
            sb.append("		${pager.orderCondition}
    ");
            sb.append("	</if>
    ");
            sb.append("	<if test="pager.mysqlQueryCondition != null and pager.mysqlQueryCondition != ''">
    ");
            sb.append("		${pager.mysqlQueryCondition}
    ");
            sb.append("	</if>
    ");
            sb.append("	</select>
    ");
            sb.append("
    ");
            sb.append("</mapper>");
    
            xmlWriter.write(sb.toString());
            xmlWriter.flush();
            xmlWriter.close();
    
            String dir2 = directory.getAbsolutePath() + "/src/main/resources/" + "maps" + "/" + "write/" + shortPackagePath;
            File directory2 = new File(dir2);
            if (!directory2.exists()) {
                directory2.mkdirs();
            }
            String outputPath2 = dir2 + "/" + initcap(mapperName) + ".xml";
            FileWriter fw2 = new FileWriter(outputPath2);
            XMLWriter xmlWriter2 = new XMLWriter(fw2);
            xmlWriter2.setEscapeText(false);
    
            StringBuffer sb2 = new StringBuffer();
            sb2.append("<?xml version="1.0" encoding="UTF-8"?>
    ");
            sb2.append("<!DOCTYPE mapper
    ");
            sb2.append("	PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    ");
            sb2.append("	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    ");
            sb2.append(
                    "<mapper namespace="write." + this.shortPackagePath + "." + shortEntityname.toLowerCase() + "">
    ");
            sb2.append("
    ");
    
            sb2.append("	<!-- 查询条件 -->
    ");
            sb2.append("	<sql id="Where_Clause">
    ");
            sb2.append("		where 1=1
    ");
            sb2.append("		<trim suffixOverrides=",">
    ");
            for (int i = 0; i < totalColNames.length; i++) {
                sb2.append("		<if test="" + lineToHump(totalColNames[i]) + " != null and " + lineToHump(totalColNames[i])
                        + " != ''" > 
    ");
                sb2.append("			 and t." + totalColNames[i]);
                sb2.append("=#{");
                sb2.append(lineToHump(totalColNames[i]));
                sb2.append("}");
                sb2.append("
    ");
                sb2.append("		</if>
    ");
            }
            sb2.append("		</trim>
    ");
            sb2.append("	</sql>
    ");
            sb2.append("
    ");
    
            sb2.append("	<!-- 插入记录 -->
    ");
            sb2.append("	<insert id="add" parameterType="Object">
    ");
            sb2.append("		insert into " + tablename + " (
    ");
            for (int i = 0; i < totalColNames.length; i++) {
                sb2.append("			" + totalColNames[i]);
                if (i != totalColNames.length - 1) {
                    sb2.append(",
    ");
                }
            }
            sb2.append(")
    ");
            sb2.append("		values (
    ");
            for (int i = 0; i < totalColNames.length; i++) {
                sb2.append("			#{");
                sb2.append(lineToHump(totalColNames[i]));
                sb2.append("}");
                if (i != totalColNames.length - 1) {
                    sb2.append(",
    ");
                }
            }
            sb2.append(")
    ");
            sb2.append("	</insert>
    ");
            sb2.append("
    ");
    
            sb2.append("	<!-- 修改记录,只修改只不为空的字段 -->
    ");
            sb2.append("	<update id="updateBySelective" parameterType="Object" >
    ");
            sb2.append("		update " + tablename + " set
    ");
            sb2.append("		<trim  suffixOverrides="," >
    ");
            for (int i = 1; i < totalColNames.length; i++) {
                sb2.append("		<if test="" + lineToHump(totalColNames[i]) + " != null and " + lineToHump(totalColNames[i])
                        + " != ''" > 
    ");
                sb2.append("			" + totalColNames[i]);
                sb2.append("=#{");
                sb2.append(lineToHump(totalColNames[i]));
                sb2.append("}");
                if (i != totalColNames.length - 1) {
                    sb2.append(",");
                }
                sb2.append("
    ");
                sb2.append("		</if>
    ");
            }
            sb2.append("		</trim>
    ");
            sb2.append("		where id = #{id}
    ");
            sb2.append("	</update>
    ");
            sb2.append("
    ");
    
            sb2.append("	<!-- 修改记录,只要不为null都进行修改,避免0位识别为空字符串 -->
    ");
            sb2.append("	<update id="update" parameterType="Object" >
    ");
            sb2.append("		update " + tablename + " set
    ");
            sb2.append("		<trim  suffixOverrides="," >
    ");
            for (int i = 1; i < totalColNames.length; i++) {
                sb2.append("		<if test="" + lineToHump(totalColNames[i]) + " != null" > 
    ");
                sb2.append("			" + totalColNames[i]);
                sb2.append("=#{");
                sb2.append(lineToHump(totalColNames[i]));
                sb2.append("}");
                if (i != totalColNames.length - 1) {
                    sb2.append(",");
                }
                sb2.append("
    ");
                sb2.append("		</if>
    ");
            }
            sb2.append("		</trim>
    ");
            sb2.append("		where id = #{id}
    ");
            sb2.append("	</update>
    ");
            sb2.append("
    ");
    
            sb2.append("	<!-- 按照条件删除记录,彻底删除 -->
    ");
            sb2.append("	<delete id="deleteBySelective" parameterType="Object" >
    ");
            sb2.append("		delete t from " + tablename + " t 
    ");
            sb2.append("		<include refid="Where_Clause" />
    ");
            sb2.append("	</delete>
    ");
            sb2.append("
    ");
    
            sb2.append("	<!-- 按照ID删除记录,彻底删除 -->
    ");
            sb2.append("	<delete id="deleteById" parameterType="Object" >
    ");
            sb2.append("		delete from " + tablename + " 
    ");
            sb2.append("		where id = #{id}
    ");
            sb2.append("	</delete>
    ");
            sb2.append("
    ");
    
            sb2.append("	<!-- 按照条件删除记录,逻辑删除 -->
    ");
            sb2.append("	<update id="deleteLogicBySelective" parameterType="Object">
    ");
            sb2.append("		update " + tablename + " t set t.del_flag=1
    ");
            sb2.append("		<include refid="Where_Clause" />
    ");
            sb2.append("	</update>
    ");
            sb2.append("
    ");
    
            sb2.append("	<!-- 按照ID删除记录,逻辑删除 -->
    ");
            sb2.append("	<update id="deleteLogicById" parameterType="Object">
    ");
            sb2.append("		update " + tablename + " set del_flag=1
    ");
            sb2.append("		where id = #{id}
    ");
            sb2.append("	</update>
    ");
            sb2.append("
    ");
    
            sb2.append("</mapper>");
    
            xmlWriter2.write(sb2.toString());
            xmlWriter2.flush();
            xmlWriter2.close();
    
        }
    
        private void modifyMapper() throws Exception {
            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 = new File(dir1);
            if (!directory1.exists()) {
                directory1.mkdirs();
            }
            StringBuffer tempSb1 = new StringBuffer();
            String outputPath1 = dir1 + "/" + initcap(mapperName) + ".xml";
            RandomAccessFile raf1 = new RandomAccessFile(outputPath1, "r");
            String currReadLineString = null;
            while (raf1.getFilePointer() < raf1.length()) {
                currReadLineString = new String(raf1.readLine().getBytes("ISO-8859-1"), "utf-8");
                if (is_add) {
                    if (readCnt <= 3) {
                        tempSb1.append(currReadLineString + "
    ");
                        if (currReadLineString.equals("		<result column="" + prevFieldName + "" property=""
                                + lineToHump(prevFieldName) + ""/>")) {
                            readCnt++;
                            for (String tempStr : modifyFieldArr) {
                                tempSb1.append("		<result column="" + tempStr + "" property="" + lineToHump(tempStr)
                                        + ""/>
    ");
                            }
    
                        } else if (currReadLineString.equals("		t." + prevFieldName + ",")) {
                            readCnt++;
                            for (String tempStr : modifyFieldArr) {
                                tempSb1.append("		t." + tempStr + ",
    ");
                            }
    
                        } else if (currReadLineString
                                .equals("		t." + prevFieldName + " AS " + lineToHump(prevFieldName) + ",")) {
                            readCnt++;
                            for (String tempStr : modifyFieldArr) {
                                tempSb1.append("		t." + tempStr + " AS " + lineToHump(tempStr) + ",
    ");
                            }
    
                        } else if (currReadLineString.equals("		<if test="" + lineToHump(prevFieldName) + " != null and "
                                + lineToHump(prevFieldName) + " != ''" > ")) {
                            readCnt++;
                            currReadLineString = new String(raf1.readLine().getBytes("ISO-8859-1"), "utf-8");
                            tempSb1.append(currReadLineString + "
    ");
                            currReadLineString = new String(raf1.readLine().getBytes("ISO-8859-1"), "utf-8");
                            tempSb1.append(currReadLineString + "
    ");
                            for (String tempStr : modifyFieldArr) {
                                tempSb1.append("		<if test="" + lineToHump(tempStr) + " != null and "
                                        + lineToHump(tempStr) + " != ''" > 
    ")
                                        .append("			and t." + tempStr + "=#{" + lineToHump(tempStr) + "}
    ")
                                        .append("		</if>
    ");
                            }
    
                        }
                    } else {
                        tempSb1.append(currReadLineString + "
    ");
                    }
                } else {
                    if (readCnt <= modifyFieldArr.length * 4 - 1) {
                        boolean is_del = false;
                        for (String tempStr : modifyFieldArr) {
                            if (currReadLineString
                                    .equals("		<result column="" + tempStr + "" property="" + lineToHump(tempStr)
                                            + ""/>")
                                    || currReadLineString.equals("		t." + tempStr + ",")
                                    || currReadLineString.equals("		t." + tempStr + " AS " + lineToHump(tempStr) + ",")) {
                                readCnt++;
                                is_del = true;
                            }
                            if (currReadLineString.equals("		<if test="" + lineToHump(tempStr) + " != null and "
                                    + lineToHump(tempStr) + " != ''" > ")) {
                                readCnt++;
                                raf1.readLine();
                                raf1.readLine();
                                is_del = true;
                            }
                        }
                        if (!is_del) {
                            tempSb1.append(currReadLineString + "
    ");
                        }
                    } else {
                        tempSb1.append(currReadLineString + "
    ");
                    }
                }
            }
            raf1.close();
            FileWriter fw1 = new FileWriter(outputPath1);
            XMLWriter xmlWriter1 = new XMLWriter(fw1);
            xmlWriter1.setEscapeText(false);
            xmlWriter1.write(tempSb1.toString());
            xmlWriter1.flush();
            xmlWriter1.close();
    
            String dir2 = directory.getAbsolutePath() + "/src/main/resources/" + "maps" + "/" + "write/" + shortPackagePath;
            File directory2 = new File(dir2);
            if (!directory2.exists()) {
                directory2.mkdirs();
            }
            StringBuffer tempSb2 = new StringBuffer();
            String outputPath2 = dir2 + "/" + initcap(mapperName) + ".xml";
            RandomAccessFile raf2 = new RandomAccessFile(outputPath2, "r");
            while (raf2.getFilePointer() < raf2.length()) {
                currReadLineString = new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
                if (is_add) {
                    if (writeCnt <= 4) {
                        tempSb2.append(currReadLineString + "
    ");
                        if (currReadLineString.equals("		<if test="" + lineToHump(prevFieldName) + " != null and "
                                + lineToHump(prevFieldName) + " != ''" > ")) {
                            writeCnt++;
                            if (writeCnt % 5 == 1) {
                                currReadLineString = new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
                                tempSb2.append(currReadLineString + "
    ");
                                currReadLineString = new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
                                tempSb2.append(currReadLineString + "
    ");
                                for (String tempStr : modifyFieldArr) {
                                    tempSb2.append("		<if test="" + lineToHump(tempStr) + " != null and "
                                            + lineToHump(tempStr) + " != ''" > 
    ")
                                            .append("			 and t." + tempStr + "=#{" + lineToHump(tempStr) + "}
    ")
                                            .append("		</if>
    ");
                                }
                            }
                            if (writeCnt % 5 == 4) {
                                currReadLineString = new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
                                tempSb2.append(currReadLineString + "
    ");
                                currReadLineString = new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
                                tempSb2.append(currReadLineString + "
    ");
                                for (String tempStr : modifyFieldArr) {
                                    tempSb2.append("		<if test="" + lineToHump(tempStr) + " != null and "
                                            + lineToHump(tempStr) + " != ''" > 
    ")
                                            .append("			" + tempStr + "=#{" + lineToHump(tempStr) + "},
    ")
                                            .append("		</if>
    ");
                                }
                            }
                        } else if (currReadLineString.equals("			" + prevFieldName + ",")) {
                            writeCnt++;
                            for (String tempStr : modifyFieldArr) {
                                tempSb2.append("			" + tempStr + ",
    ");
                            }
    
                        } else if (currReadLineString.equals("			#{" + lineToHump(prevFieldName) + "},")) {
                            writeCnt++;
                            for (String tempStr : modifyFieldArr) {
                                tempSb2.append("			#{" + lineToHump(tempStr) + "},
    ");
                            }
    
                        } else if (currReadLineString
                                .equals("		<if test="" + lineToHump(prevFieldName) + " != null" > ")) {
                            writeCnt++;
                            currReadLineString = new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
                            tempSb2.append(currReadLineString + "
    ");
                            currReadLineString = new String(raf2.readLine().getBytes("ISO-8859-1"), "utf-8");
                            tempSb2.append(currReadLineString + "
    ");
                            for (String tempStr : modifyFieldArr) {
                                tempSb2.append("		<if test="" + lineToHump(tempStr) + " != null" > 
    ")
                                        .append("			" + tempStr + "=#{" + lineToHump(tempStr) + "},
    ")
                                        .append("		</if>
    ");
                            }
    
                        }
                    } else {
                        tempSb2.append(currReadLineString + "
    ");
                    }
                } else {
                    if (writeCnt <= modifyFieldArr.length * 5 - 1) {
                        boolean is_del = false;
                        for (String tempStr : modifyFieldArr) {
                            if (currReadLineString.equals("			" + tempStr + ",")
                                    || currReadLineString.equals("			#{" + lineToHump(tempStr) + "},")) {
                                writeCnt++;
                                is_del = true;
                            }
                            if (currReadLineString
                                    .equals("		<if test="" + lineToHump(tempStr) + " != null and " + lineToHump(tempStr)
                                            + " != ''" > ")
                                    || currReadLineString
                                            .equals("		<if test="" + lineToHump(tempStr) + " != null" > ")) {
                                writeCnt++;
                                raf2.readLine();
                                raf2.readLine();
                                is_del = true;
                            }
                        }
                        if (!is_del) {
                            tempSb2.append(currReadLineString + "
    ");
                        }
                    } else {
                        tempSb2.append(currReadLineString + "
    ");
                    }
                }
            }
            raf2.close();
            FileWriter fw2 = new FileWriter(outputPath2);
            XMLWriter xmlWriter2 = new XMLWriter(fw2);
            xmlWriter2.setEscapeText(false);
            xmlWriter2.write(tempSb2.toString());
            xmlWriter2.flush();
            xmlWriter2.close();
        }
    
        /**
         * 出口 TODO
         * 
         * @param args
         */
        public static void main(String[] args) {
            new MysqlUtil();
        }
    }
  • 相关阅读:
    MVC 中的Areas支持
    webAPI 自动生成帮助文档
    ASP.NET Web API系列教程目录
    ASP.NET MVC学习系列 WebAPI初探
    win7下配置apache和php
    VS2010打不开VS2012 .NET MVC 工程,及打开后部分模块加载不正确的解决办法
    Sqlserver通过链接服务器访问Oracle的解决办法
    [C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托
    [C# 基础知识系列]专题四:事件揭秘
    [C# 基础知识系列]专题十六:Linq介绍
  • 原文地址:https://www.cnblogs.com/mark8080/p/7305376.html
Copyright © 2011-2022 走看看