jfinal根据表创建get set 方法
来源:互联网 发布:linux 查看日志文件 编辑:程序博客网 时间:2024/06/06 03:17
1.引入包 pom.xml
<!--数据库链接的包--> <dependency> <groupId>com.mchange</groupId> <artifactId>mchange-commons-java</artifactId> <version>0.2.12</version> </dependency> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!--freemarker 生成模版工具--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.16</version> </dependency>
2.freemarker 模版
Model.ftl
package ${package};import java.util.Date;import com.se.BasicModel;import com.se.ext.plugin.tablebind.TableBind;@SuppressWarnings("serial")@TableBind(pkName = "${pkName}")public class ${modelName} extends BasicModel <${modelName}> { public static final ${modelName} dao = new ${modelName}(); <#list tableColumns as columns> <#if columns[2]!=""> //${columns[2]} </#if> public ${columns[1]} get${columns[5]} (){ return this.${columns[3]}("${columns[0]}"); } </#list> <#list tableColumns as columns> public ${modelName} set${columns[5]} (${columns[1]} ${columns[4]}) { this.set("${columns[0]}", ${columns[4]}); return this; } </#list>}
3.编码转换
DataBaseTypeToJavaType.java
package com.se.utils.gencode;/** * Created by cwq on 2017/9/12. * jdk 1.8 */public class DataBaseTypeToJavaType { public enum MysqlType { CHAR("char", "String"), VARCHAR("varchar", "String"), BLOB("blob", "Byte[]"), TEXT("text", "String"), INT("int", "Integer"), TINYINT("tinyint", "Integer"), SMALLINT("smallint", "Integer"), MEDIUMINT("mediumint", "Integer"), BIT("bit", "Boolean"), BIGINT("bigint", "BigInteger"), DECIMAL("decimal", "BigDecimal"), DATE("date", "Date")// ,DATETIME("datetime","Timestamp") , DATETIME("datetime", "Date")// ,TIMESTAMP("timestamp","timestamp") , TIMESTAMP("timestamp", "Date"), TIME("time", "Time"), YEAR("year", "Date"), FLOAT("float", "Float"), DOUBLE("double", "Double"), INTEGER("integer", "Long"); private String key; private String value; public String getKey() { return key; } public String getValue() { return value; } private MysqlType(String key, String value) { this.key = key; this.value = value; } public static MysqlType getByKey(String key) { for (MysqlType a : MysqlType.values()) if (a.getKey().equals(key)) return a; return null; } } public enum JFinalType { String("String", "getStr"), Integer("Integer", "getInt"), Long("Long", "getLong"), BigInteger("BigInteger", "getBigInteger"), Date("Date", "getDate"), Time("Time", "getTime"), Timestamp("Timestamp", "getTimestamp"), Double("Double", "getDouble"), Float("Float", "getFloat"), Boolean("Boolean", "getBoolean"), BigDecimal("BigDecimal", "getBigDecimal"), BYTE("byte[]", "getBytes"), Number("Number", "getNumber"); private String key; private String value; public String getKey() { return key; } public String getValue() { return value; } private JFinalType(String key, String value) { this.key = key; this.value = value; } public static JFinalType getByKey(String key) { for (JFinalType a : JFinalType.values()) if (a.getKey().equals(key)) return a; return null; } } public String get(String type) { MysqlType mysqlType = MysqlType.getByKey(type); if (mysqlType != null) return mysqlType.getValue(); return null; } public String getJFinal(String type) { JFinalType jFinalType = JFinalType.getByKey(type); if (jFinalType != null) return jFinalType.getValue(); return null; }}
4.程序
GenCode.java
package com.se.utils.gencode;import com.jfinal.kit.PathKit;import com.jfinal.plugin.c3p0.C3p0Plugin;import com.mchange.v2.io.FileUtils;import com.se.utils.PropertyUtil;import freemarker.template.Configuration;import freemarker.template.Template;import javax.sql.DataSource;import java.io.*;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;/** * Created by cwq on 2017/9/12. * jdk 1.8 */public class GenCode { public static void main(String[] args) {// ArrayList<String[]> list = getTableColumns("b_activity_teacher");//// for (String[] s : list) {// System.out.println("key:" + s[0] + ",value:" + s[1] + ",Comment:" + s[2]);// System.out.println("jFinalType:" + s[3] + ",camelCase:" + s[4] + ",camelCaseUp:" + s[5]);// } createModel("b_activity_teacher"); } public static void createModel(String tableName) { createModel(null, null, tableName, null); } public static void createModel(String tableName, String pkName) { createModel(null, null, tableName, pkName); } /** * @param Package 包名 * @param dir 生成路径 * @param tableName 表名 * @param pkName 主键名称 * @author cwq * @date 2017/9/12 下午3:48 */ public static void createModel(String Package, String dir, String tableName, String pkName) { String className = "model"; className = upFirstName(camelCase(tableName), 1); char sp = File.separatorChar; if (Package == null) Package = "com.se.model"; if (pkName == null) pkName = "id"; String baseDir = PathKit.getWebRootPath() + sp + "src" + sp + "main" + sp + "java" + sp + "com" + sp + "se"; if (dir == null) dir = baseDir + sp + "model"; dir = dir + sp; String modelFile = dir + className + ".java"; try { if (new File(modelFile).exists()) { System.err.println("文件【" + modelFile + "】已存在!"); } else { StringWriter writer = new StringWriter(); Map<String, Object> context = new HashMap<String, Object>(); ArrayList<String[]> tableColumns = getTableColumns(tableName); context.put("modelName", className); context.put("package", Package); context.put("pkName", pkName); context.put("tableColumns", tableColumns); Configuration configuration = new Configuration(); //加载渲染目录 configuration.setDirectoryForTemplateLoading(new File(baseDir + sp + "utils" + sp + "gencode")); //加载模版 Template template = configuration.getTemplate("Model.ftl"); //替换模版 template.process(context, writer);// 渲染模版 FileUtils.touch(new File(modelFile)); writeFileContent(modelFile, writer.toString()); System.out.println("创建文件【" + modelFile + "】成功!"); } } catch (Exception e) { System.err.println(e.getMessage()); } } /** * 获得表字段 * * @param tableName * @return * @author cwq * @date 2017/9/12 下午5:25 */ public static ArrayList<String[]> getTableColumns(String tableName) { DataBaseTypeToJavaType dtj = new DataBaseTypeToJavaType(); Connection conn = null; PreparedStatement columnsPs = null; try { conn = getDataSource().getConnection();// 获取表的信息 columnsPs = conn.prepareStatement("show full columns from " + tableName); //字段列表 ArrayList<String[]> list = new ArrayList<String[]>(); ResultSet resultSet = columnsPs.executeQuery(); // 获取对应表中的字段 while (resultSet.next()) { String key = resultSet.getString(1); String type = dtj.get(resultSet.getString(2).split("\\(")[0]); String note = resultSet.getString(9); String jFinalType = dtj.getJFinal(type);//jfinal get 使用方法 String camelCase = camelCase(key);//字段驼峰式 String camelCaseUp = upFirstName(camelCase, 1);//字段驼峰式首字母大写 list.add(new String[]{ key , type , note , jFinalType , camelCase , camelCaseUp }); } return list; } catch (Exception e) { e.printStackTrace(); } finally { try { conn.close(); columnsPs.close(); } catch (Exception e) { e.printStackTrace(); } } return null; } /** * @param file * @param conent * @author cwq * @date 2017/9/12 下午3:42 * 写入流 */ public static void writeFileContent(String file, String conent) { BufferedWriter out = null; try { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true))); out.write(conent); } catch (Exception e) { e.printStackTrace(); } finally { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * @param name * @param toUpperCase 0是首字母小写 1是首字母大写 * @return * @author cwq * @date 2017/9/12 下午3:42 */ public static String upFirstName(String name, Integer toUpperCase) { String s = null; if (name != null) {// s = name.toLowerCase(); s = name; String first = "" + s.charAt(0); if (toUpperCase == 1) { first = first.toUpperCase(); } if (toUpperCase == 0) { first = first.toLowerCase(); } s = first + s.substring(1, s.length()); } return s; } /** * @param name * @return * @author cwq * @date 2017/9/12 下午3:43 * 驼峰式 */ public static String camelCase(String name) { StringBuffer stringBuffer = new StringBuffer(); for (String t : name.split("_")) { stringBuffer.append(upFirstName(t, 1)); } return upFirstName(stringBuffer.toString(), 0); } public static DataSource getDataSource() { //加载配置文件 String url = PropertyUtil.getGrosseValue("db", "url");//获取数据库url String username = PropertyUtil.getGrosseValue("db", "username");//获取用户名字 String password = PropertyUtil.getGrosseValue("db", "password");//密码 //创建c3p0连接 C3p0Plugin c3p0Plugin = new C3p0Plugin(url, username, password);//连接池 c3p0Plugin.start(); return c3p0Plugin.getDataSource(); }}
阅读全文
1 0
- jfinal根据表创建get set 方法
- 根据属性名调用set/get方法
- 在IOS中创建get,set方法
- 根据属性名字调用相应的get和set方法
- 根据库表结构自动生成java实体类(生成规范的变量及get/set方法).
- eclipse自动创建model中的get和set方法
- PHP动态创建属性的get和set方法
- android创建类的set与get方法、搜索
- Flex get set方法
- SSH get set 方法
- set、get方法解析
- set 和 get 方法
- get/set-定义方法
- set get方法
- get和set方法
- property Get Set方法
- C#Set/Get方法
- set和get方法
- LeetCode Identical Binary Tree 相同二叉树
- js动态添加带参数的点击事件
- 多设备跨平台,H5天然的便携性
- table表格 td设置固定宽度
- Excel导入数据库回滚
- jfinal根据表创建get set 方法
- 面试知识点总结——网络篇
- Django教程之十一-----模型
- Lucene学习总结之七:Lucene搜索过程解析(7)
- c++11 chrono全面解析(最高可达纳秒级别的精度)
- Android-线程同步
- DA 面板添加域名 提示域名己存在
- 正规方程 Normal Equation
- abap中VIEW_MAINTENANCE_CALL的用法