自己编写的极简JFinal Model生成器
2016-01-29 00:00
453 查看
摘要: @JFinal
使用JFinal2.2新版本的Model生成器,觉得太复杂,自己写了一个极简生成器,这就是我想要的,
package com.eic.common.generator;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.eic.config.EicConfig;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.c3p0.C3p0Plugin;
/**
* 《锦瑟》
年代: 唐 作者: 李商隐
锦瑟无端五十弦,一弦一柱思华年。
庄生晓梦迷蝴蝶,望帝春心托杜鹃。
沧海月明珠有泪,蓝田日暖玉生烟。
此情可待成追忆,只是当时已惘然。
*
*/
enum Data_Type{
/**
* 数据库类型,可自行扩充,
*/
sqlserver,
mysql,
oracle
}
/**
* 自己定义的生成器,在控制台打出
*/
public class MyGenerator
{
private static Data_Type data_type = Data_Type.sqlserver;//数据库类型
private static String db_name = "Java_FLDB_Formal";//数据库名称
private static String table_name = "Activity_Subject";//目标表名称
private static String getColumns() throws SQLException {
PropKit.use("a_little_config.txt");
C3p0Plugin c3p0Plugin = EicConfig.createC3p0Plugin();
c3p0Plugin.start();
String cols = "";
if(data_type == Data_Type.sqlserver){
Statement statement = c3p0Plugin.getDataSource().getConnection().createStatement();
String sql = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS where table_catalog = '"+db_name+"' "
+ "and table_name = '"+table_name+"'" ;
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
Object column = resultSet.getObject("COLUMN_NAME");
Object data_type = resultSet.getObject("DATA_TYPE");
String javaDataType = getJavaDataType(data_type.toString());
cols += column.toString() + "|" + javaDataType;
cols += ",";
}
cols = cols.substring(0, cols.lastIndexOf(","));
}
return cols;
}
public static void main(String[] args) throws SQLException {
String cols = getColumns();
String[] columns = cols.split(",");
for (String column : columns) {
String[] strs = column.split("\\|");
String col = strs[0];
String javaType = strs[1];
String columnNew = getColumnNew(col);
String sb_set = get_Column_Set(col, columnNew,javaType);
String sb_get = get_Column_Get(col, columnNew,javaType);
System.out.println(sb_set.toString());
System.out.println(sb_get.toString());
}
}
private static String getColumnNew(String column){
String column_new = column.substring(0, 1).toUpperCase() +
column.substring(1, 2).toLowerCase() +
column.substring(2);
return column_new;
}
private static String get_Column_Set(String column,String columnNew,String javaType){
StringBuilder sb_set = new StringBuilder().append("public void set")
.append(columnNew)
.append("(")
.append(javaType)
.append(" ")
.append(column)
.append(")")
.append("{\r\n")
.append(" ")
.append("set(\"")
.append(column)
.append("\",")
.append(column)
.append(");\r\n")
.append("}");
return sb_set.toString();
}
private static String get_Column_Get(String column,String columnNew,String javaType){
StringBuilder sb_get = new StringBuilder();
sb_get.append("public ")
.append(javaType)
.append(" get")
.append(columnNew)
.append("()")
.append("{\r\n")
.append(" ")
.append("return get(\"")
.append(column)
.append("\");")
.append("\r\n")
.append("}");
return sb_get.toString();
}
private static String getJavaDataType(String data_type){
if(MyGenerator.data_type == Data_Type.sqlserver){
if (data_type.equals("int"))
return "int";
if (data_type.equals("varchar"))
return "String";
if (data_type.equals("numeric"))
return "BigDecimal";
}
return "String";
}
}
输出结果如下:
public void setId(String ID){
set("ID",ID);
}
public void setId(String ID){
set("ID",ID);
}
public void setItype(String iType){
set("iType",iType);
}
public void setItype(String iType){
set("iType",iType);
}
public void setSname(String sName){
set("sName",sName);
}
public void setSname(String sName){
set("sName",sName);
}
Ps:非常简单,但这就是我想要的
使用JFinal2.2新版本的Model生成器,觉得太复杂,自己写了一个极简生成器,这就是我想要的,
package com.eic.common.generator;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.eic.config.EicConfig;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.c3p0.C3p0Plugin;
/**
* 《锦瑟》
年代: 唐 作者: 李商隐
锦瑟无端五十弦,一弦一柱思华年。
庄生晓梦迷蝴蝶,望帝春心托杜鹃。
沧海月明珠有泪,蓝田日暖玉生烟。
此情可待成追忆,只是当时已惘然。
*
*/
enum Data_Type{
/**
* 数据库类型,可自行扩充,
*/
sqlserver,
mysql,
oracle
}
/**
* 自己定义的生成器,在控制台打出
*/
public class MyGenerator
{
private static Data_Type data_type = Data_Type.sqlserver;//数据库类型
private static String db_name = "Java_FLDB_Formal";//数据库名称
private static String table_name = "Activity_Subject";//目标表名称
private static String getColumns() throws SQLException {
PropKit.use("a_little_config.txt");
C3p0Plugin c3p0Plugin = EicConfig.createC3p0Plugin();
c3p0Plugin.start();
String cols = "";
if(data_type == Data_Type.sqlserver){
Statement statement = c3p0Plugin.getDataSource().getConnection().createStatement();
String sql = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS where table_catalog = '"+db_name+"' "
+ "and table_name = '"+table_name+"'" ;
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
Object column = resultSet.getObject("COLUMN_NAME");
Object data_type = resultSet.getObject("DATA_TYPE");
String javaDataType = getJavaDataType(data_type.toString());
cols += column.toString() + "|" + javaDataType;
cols += ",";
}
cols = cols.substring(0, cols.lastIndexOf(","));
}
return cols;
}
public static void main(String[] args) throws SQLException {
String cols = getColumns();
String[] columns = cols.split(",");
for (String column : columns) {
String[] strs = column.split("\\|");
String col = strs[0];
String javaType = strs[1];
String columnNew = getColumnNew(col);
String sb_set = get_Column_Set(col, columnNew,javaType);
String sb_get = get_Column_Get(col, columnNew,javaType);
System.out.println(sb_set.toString());
System.out.println(sb_get.toString());
}
}
private static String getColumnNew(String column){
String column_new = column.substring(0, 1).toUpperCase() +
column.substring(1, 2).toLowerCase() +
column.substring(2);
return column_new;
}
private static String get_Column_Set(String column,String columnNew,String javaType){
StringBuilder sb_set = new StringBuilder().append("public void set")
.append(columnNew)
.append("(")
.append(javaType)
.append(" ")
.append(column)
.append(")")
.append("{\r\n")
.append(" ")
.append("set(\"")
.append(column)
.append("\",")
.append(column)
.append(");\r\n")
.append("}");
return sb_set.toString();
}
private static String get_Column_Get(String column,String columnNew,String javaType){
StringBuilder sb_get = new StringBuilder();
sb_get.append("public ")
.append(javaType)
.append(" get")
.append(columnNew)
.append("()")
.append("{\r\n")
.append(" ")
.append("return get(\"")
.append(column)
.append("\");")
.append("\r\n")
.append("}");
return sb_get.toString();
}
private static String getJavaDataType(String data_type){
if(MyGenerator.data_type == Data_Type.sqlserver){
if (data_type.equals("int"))
return "int";
if (data_type.equals("varchar"))
return "String";
if (data_type.equals("numeric"))
return "BigDecimal";
}
return "String";
}
}
输出结果如下:
public void setId(String ID){
set("ID",ID);
}
public void setId(String ID){
set("ID",ID);
}
public void setItype(String iType){
set("iType",iType);
}
public void setItype(String iType){
set("iType",iType);
}
public void setSname(String sName){
set("sName",sName);
}
public void setSname(String sName){
set("sName",sName);
}
Ps:非常简单,但这就是我想要的
相关文章推荐
- jfinal与bootstrap的登录跳转实战演习
- JFinal Dao 集成到 Spring
- JFinal常见问题汇总
- 使用Freesql简单地实现多条件查询
- JFinal使用Freemarker作为展示层中的国际化配置使用
- 生成jFinal的动态条件查询语句的工具类 3ff8
- JFinal项目之自动删除日志文件功能
- JFinal学习-Excel导出
- jfinal 调用 存储过程,并将结果返回
- JFinal 3ff0 +CKEditor文件上传后缀验证,大小验证。
- jweb——修改自jfinaluib的java管理系统开发基础框架
- SpringMVC 集成 JFinal Dao
- 有关Jfinal在jetty环境下开发,tomcat环境下发布造成的问题解决心得。
- jfinal 小例子 (一)
- JFinal教程JfinalUIB 代码笔记 (1)--- jfinal 乐观锁
- JFinal教程JfinalUIB 代码笔记 (2)--- jfinal中视图耗时计算
- JFina教程JfinalUIB 代码笔记 (3)--- jfinal Controller参数封装
- JFinal教程JfinalUIB 代码笔记 (4)--- 高仿mybatis的sql的集中管理
- JFinal教程JfinalUIB 代码笔记 (5)--- 增加sql打印格式化和参数值输出