知识大全 Spring3 Mybatis3 freemarker 自动生成对应表

Posted 文件

篇首语:多诈的人藐视学问,愚鲁的人羨慕学问,聪明的人运用学问。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring3 Mybatis3 freemarker 自动生成对应表相关的知识,希望对你有一定的参考价值。

Spring3 Mybatis3 freemarker 自动生成对应表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  自己利用spring mybatis 进行开发时 前期花费了大量的时间去写对应的model mapper service文件 并想到用freemarker来动态生成对应的JAVA文件     开发思路         其实就是将数据库中的表取出来 表名作为类名 并把对应的列名取出来 作为字段名称 然后通过 freemarker定制的模版去生成相关的文件即可         我这里只举例说明如何生成对应的model文件 其它的可以直接COPY改改就成 示例代码如下         首先定义一个对象SqlColumnData包含两个属性columnName(列名称) columnType(列类型) 具体定义如下 :        package study job domain; /**   * SqlColumnData java Create on 上午 : :   *    *    * Copyright (c) by MTA   *    * @author lmeteor   * @Email   * @description   * @version   */ public class SqlColumnData         private String columnName;                 private String columnType;         public String getColumnName()                 return columnName;                 public void setColumnName(String columnName)                 lumnName = columnName;                 public String getColumnType()                 return columnType;                 public void setColumnType(String columnType)                 lumnType = columnType;                            

    下面三个方法作用如下         //用来获取指定表的所有列名及类型 public List getColumnDatas(String tableName)//将列名生成对应的field 和 methodpublic String getBeanField(String tableName) throws SQLException//将数据库类型转换成对应的JAVA类型publicString getType(String type)        /**          * 获取指定表的所有列名          *                * @param tableName          * @return          * @throws SQLException          */          public List getColumnDatas(String tableName)          throws SQLException                 String sqlColumns = SELECT COLUMN_NAME DATA_TYPE FROM inlumns WHERE table_name =          + tableName + order by ordinal_position ;         Connection conn = null;         PreparedStatement pst = null;         ResultSet rs = null;         List columnList = new ArrayList()         try                 conn = sqlDialect getConn()         pst = conn prepareStatement(sqlColumns)         rs = pst executeQuery()         while (rs next())                 String name = rs getString( )         String type = rs getString( )         type = this getType(type)         SqlColumnData cd = new SqlColumnData()         cd setColumnName(name toLowerCase())         cd setColumnType(type)         columnList add(cd)                           catch ( Exception e )                 e printStackTrace()                 finally                 try                 if (conn != null) conn close()         if (pst != null) pst close()         if (rs != null) rs close()                 catch ( SQLException e )                 e printStackTrace()                         return columnList;                   /**         * 将列名生成对应的field 和 method         *          * @param tableName         * @return         * @throws SQLException         */         public String getBeanField(String tableName) throws SQLException                 List dataList = getColumnDatas(tableName)         StringBuffer str = new StringBuffer()         StringBuffer getset = new StringBuffer()         for (SqlColumnData d : dataList)                 String name = d getColumnName() toLowerCase()         String type = d getColumnType()         String maxChar = name substring( ) toUpperCase()         str append( \\r\\t ) append( private ) append(type + ) append(         name) append( ;\\n )         String method = maxChar + name substring( name length())         getset append( \\r\\t ) append( public ) append(type + ) append(         get + method + ()\\n\\t\\n )         getset append( \\t\\t ) append( return this ) append(name) append( ;\\n\\t\\n )         getset append( \\r\\t ) append( public void ) append(         set + method + ( + type + + name + )\\n\\t\\n )         getset append( \\t\\t ) append( this + name + = ) append(name) append(         ;\\n\\t\\n )                 argv = str toString()         method = getset toString()         return argv + method;                   private String argv;         private String method;           /**         * 将数据库类型转换成对应的JAVA类型         *          * @param type         * @return         */         public String getType(String type)                 type = type toLowerCase()         if ( char equals(type) || varchar equals(type)         || nvarchar equals(type))                 return String ;                 else if ( int equals(type))                 return Integer ;                 else if ( bigint equals(type))                 return Long ;                 else if ( timestamp equals(type) || date equals(type)         || datetime equals(type))                 return java sql Timestamp ;                 else if ( decimal equals(type))                 return Double ;                 else if ( image equals(type))                 return byte[] ;                 else if ( smallint equals(type))                 return int ;                 return null;                 /**        * 将表名转成class名称        *        * @param tableName        * @return        */        public String getTableNameToClassName(String tableName)                String[] splits = tableName toLowerCase() split( _ )         if (splits length > )                StringBuffer className = new StringBuffer()         for (String split : splits)                String tempTableName = split substring( ) toUpperCase()        + split substring( )         className append(tempTableName)                 return className toString()                 else                String className = splits[ ] substring( ) toUpperCase()        + splits[ ] substring( )         return className;                      SQL方面就准备的差不多了 现在开始准备对应的模版文件 如下         我这里使用的freemarker        package study job domain;   import java io Serializable; /**   * $className?default( ) java Create on $datetime?default( )   *    *    * Copyright (c) by MTA   *   * @author lmeteor   * @Email   * @description   * @version   */ @SuppressWarnings( serial ) public class $className?default( ) implements Serializable         $feilds?default( )         用freemarker通过模版创建文件         /**         * 创建静态文件         *          * @param templateFileName         *        模板文件名 例如 /WEB INF/view/temp ftl         * @param propMap         *        用于处理模板的属性object映射         * @param FilePath         *        要生成的静态文件的路径 例如 /WEB INF/view/ / / /         * @param FileName         *        要生成的文件名 例如 l         * @param templateFilePath         *        模版路径         */         @SuppressWarnings(         unchecked )         public static void createHtmlFile(String templateFileName Map propMap         String FilePath String FileName String templateFilePath)                 try                 Template t = getFreemarkerCFG(templateFilePath) getTemplate(         templateFileName)         //createDirs(FilePath)         File file = null;         if(StringTools isEmpty(FileName))file = new File(FilePath)         else file = new File(FilePath + / + FileName)         if(!file exists())file createNewFile()         else file delete()         Writer out = new BufferedWriter(new OutputStreamWriter(         new FileOutputStream(file) UTF ))         t process(propMap out)         out flush()         out close()         ( 文件 +FilePath+ 生成成功 )                 catch ( IOException e )                 e printStackTrace()                 catch ( TemplateException e )                 e printStackTrace()                         现在该准备的都准备好了 准备开始实际调用如下        /**         * 生成JAVAMODULE文件         * @param tableName         */         public static void createJavaModuleFile(String tableName)                 String className = sqlutil getTableNameToClassName(tableName)         // 生成到指定的目录下         String modelPath = domain\\\\ + className + java ;         Map context = new HashMap()         context put( className className) //         context put( tableName tableName)         context put( datetime DateTools getDateTools() format(new Date()))         /****************************** 生成bean字段 *********************************/         try                 context put( feilds sqlutil getBeanField(tableName)) // 生成bean         ( 请稍侯 正在生成Bean属性及GET SET方法 )                 catch ( Exception e )                 e printStackTrace()                 // 生成文件代码 /         CreateHtml createHtmlFile( TempBean ftl context PCKPATH+modelPath null TEMPLATE_FILEPATH)                 大致代码就是这么多 我在自己的项目中将这个功能界面化了 如下

  

cha138/Article/program/Java/hx/201311/26400

相关参考

知识大全 Spring3.0中的AOP配置方法

Spring3.0中的AOP配置方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第一种配置方

知识大全 Spring3.0新特征-Restful support MVC[1]

Spring3.0新特征-RestfulsupportMVC[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 Spring3.0新特征-Restful support MVC[2]

Spring3.0新特征-RestfulsupportMVC[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 Spring 3.0近况

Spring专访:Spring3.0近况  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Info

知识大全 Spring 3.0 M2发布 大部分新特性开发完成

Spring3.0M2发布大部分新特性开发完成  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  期