JFinal数据映射生成工具

//第一次学习Jfinal框架,挺方便的,就是这个ActiveRecordPlugin有点头疼, 
//是不是失去了将数据库对象化的操作了,怪自己懒,写一个算是数据库映射吧..(大虾莫笑)

1. [代码][Java]代码     

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

packagecom.npc.core.jfinal.create;

importjava.io.File;

importjava.io.FileWriter;

importjava.io.IOException;

importjava.sql.SQLException;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

importcom.npc.model.MyModel;

importfreemarker.template.Configuration;

importfreemarker.template.Template;

importfreemarker.template.TemplateException;

/**

* 根据数据库的表跟列生成jfinal需要的entity格式

*

* @ClassName: Create

* @Description: TODO

*
@author : 陈文希

* @date:2013-3-3 下午8:28:02

*/

publicclassCreate {

publicstaticvoidmain(String[] args)throwsSQLException, IOException,

TemplateException {

Configuration config =newConfiguration();

config.setClassForTemplateLoading(Create.class,"/ftl");

Template temp = config.getTemplate("entity.ftl");

Map<String,MyModel> map =newHashMap<String,MyModel>();

MyModel myModel =newMyModel();

myModel.setPackageName(DBConn.p.getProperty("package"));

List<String> tables = DBConn.getTableNamesByDBName();// 获取该数据库的所有表名称

for(String table : tables) {

myModel.setTableName(table);// 生成当前的Entity类

myModel.setColumnsNames(DBConn.getColumnsNamesByTableName(table));// 根据表名称获取所有的列名称

map.put("myModel", myModel);

File createFolder =newFile(System.getProperty("user.dir")+"/src/"+DBConn.p.getProperty("package").replace(".","/"));

createFolder.mkdirs(); //预先创建文件夹,预防没有文件夹而找不到路径

temp.process(map,newFileWriter(createFolder+"/"+newCreate().toLowerCaseTheFristChar(table)+".java"));

}

System.out.println("生成Entity成功!.请查看");

}

privateString toLowerCaseTheFristChar(String str){

byte[] items = str.getBytes();

items[0] = (byte)((char)items[0]-‘a‘+‘A‘);

returnnewString(items);

}

}

2. [代码][Java]代码     

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

packagecom.npc.core.jfinal.create;

importjava.io.IOException;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Properties;

importcom.mysql.jdbc.Statement;

publicclassDBConn {

publicstaticfinalProperties p =newProperties();

static{

try{

p.load(DBConn.class.getResourceAsStream("/createEntity.properties"));

Class.forName(p.getProperty("className"));

}catch(ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

publicstaticConnection getConnection()throwsIOException, SQLException {

returnDriverManager.getConnection(p.getProperty("driverName"),

p.getProperty("userName"), p.getProperty("userPassword"));

}

/**

* 获取数据库的所有表名称

*

* @Title: getTableNamesByDBName

* @Description: TODO

* @param @return

* @param @throws SQLException

* @param @throws IOException

* @author: 陈文希

* @return List<String>

* @throws

*/

publicstaticList<String> getTableNamesByDBName()throwsSQLException,

IOException {

Statement stame = (Statement) DBConn.getConnection().createStatement();

ResultSet rs = stame.executeQuery("show tables;");

List<String> list =newArrayList<String>();

while(rs.next()) {

list.add(rs.getString(1));

}

returnlist;

}

/**

* 根据表名称获取表的所有字段名称

* @Title: getColumnsNamesByTableName

* @Description: TODO

* @param @param tName

* @param @return

* @param @throws SQLException

* @param @throws IOException

* @author: 陈文希

* @return List<String>

* @throws

*/

publicstaticList<String> getColumnsNamesByTableName(String tName)throwsSQLException, IOException{

List<String> list =newArrayList<String>();

Statement stame = (Statement) DBConn.getConnection().createStatement();

ResultSet rs = stame.executeQuery("desc "+tName+";");

while(rs.next()) {

list.add(rs.getString(1));

}

returnlist;

}

}

3. [代码][Java]代码     

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

packagecom.npc.model;

importjava.util.List;

/**

* Model 实体类的数据承载

* @ClassName: MyModel

* @Description: TODO

* @author: 陈文希

* @date:2013-3-3 下午11:54:27

*/

publicclassMyModel {

privateString packageName;

privateString tableName;

privateList<String> columnsNames;

publicString getPackageName() {

returnpackageName;

}

publicvoidsetPackageName(String packageName) {

this.packageName = packageName;

}

publicString getTableName() {

returntableName;

}

publicvoidsetTableName(String tableName) {

this.tableName = tableName;

}

publicList<String> getColumnsNames() {

returncolumnsNames;

}

publicvoidsetColumnsNames(List<String> columnsNames) {

this.columnsNames = columnsNames;

}

}

4. [代码][Java]代码     

?


1

2

3

4

5

6

7

8

9

10

package${myModel.packageName};

importcom.jfinal.plugin.activerecord.Model;

publicclass${myModel.tableName?cap_first}extendsModel<${myModel.tableName?cap_first}>{

publicstaticfinal${myModel.tableName?cap_first} dao =new${myModel.tableName?cap_first}();

<#list myModel.columnsNames as column>

publicstaticfinalString ${column?upper_case} ="${column}";

</#list>

}

时间: 2024-10-10 04:03:32

JFinal数据映射生成工具的相关文章

python+jinja2实现接口数据批量生成工具

在做接口测试的时候,我们经常会遇到一种情况就是要对接口的参数进行各种可能的校验,手动修改很麻烦,尤其是那些接口参数有几十个甚至更多的,有没有一种方法可以批量的对指定参数做生成处理呢. 答案是肯定的! python的jinja2模板库可以很好的满足我们的需求,通过维护一个原始数据模板,将我们想要动态生成的变量模板化,就可以实现需求. 现在我们有这样的一个请求数据 { "abc":"123", "p2p":"123", "

DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语.考驾照.到健身房请私教,远离了一下代码的世界,现在又回归了. 最近上班了,新的公司需要招.NET系.产品经理,有兴趣的可以左侧扣我(我部门要人,地点广州). 另外:阿里最近收购了一家公司,也需要Java系的高手和测试人员,有兴起的也可以扣我(我朋友的部门要人,地点广州). 嗯,闲话少说,看看工具的

DBImport v3.3 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

前言: 好久没写文了, 距离上一篇文章是3个月前的事了,虽然工作很忙,主要还是缺少写作的内容和激情,所以没怎么动手. 之前有一个来月不断面试不同层次来应聘的人员,很有想写文的冲动,后来还是忍住了. 估计写了也是那种说人坏话.恨铁不成钢的情绪文,没啥营养,所以情绪过了就没想写了. 在公司除了管理上的事情之外,另外也研发了一套适用信息系统的快速开发框架,这个有机会再写写文和大伙分享了. 下面言归正文了. 背景: 关于这个DBImport工具,发布的版本不多,仅有:V1.0.V2.0.V3.0.V3.

Charted – 自动化的可视化数据生成工具

Charted 是一个让数据自动生成可视化图表的工具.只需要提供一个数据文件的链接,它就能返回一个美丽的,可共享的图表.Charted 不会存储任何数据.它只是获取和让链接提供的数据可视化. 在线演示      插件下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果[源码下载] 12款经典的白富美型 jQuery 图片轮播插件 本

利用在线工具根据JSon数据自动生成对应的Java实体类

如果你希望根据JSon数据自动生成对应的Java实体类,并且希望能进行变量的重命名,那么“JSON To Java”一定适合你.(下面的地址需要FQ) https://jsontojava.appspot.com/ 简单快速有效,适合追求效率的你.

55个最实用大数据可视化分析工具

该文转自[IT168 技术] 近年来,随着云和大数据时代的来临,数据可视化产品已经不再满足于使用传统的数据可视化工具来对数据仓库中的数据抽取.归纳并简单的展现.传统的数据可视化工具仅仅将数据加以组合,通过不同的展现方式提供给用户,用于发现数据之间的关联信息.新型的数据可视化产品必须满足互联网爆发的大数据需求,必须快速的收集.筛选.分析.归纳.展现决策者所需要的信息,并根据新增的数据进行实时更新.因此,在大数据时代,数据可视化工具必须具有以下特性: (1)实时性:数据可视化工具必须适应大数据时代数

machinekey生成工具 v1.0 官方最新版

http://www.33lc.com/soft/66056.html 电信下载 广东电信下载 厦门电信下载 湖北电信下载 江苏电信下载 网通下载 陕西网通下载 山东网通下载 甘肃网通下载 山西网通下载 machinekey生成工具是一款十分专业的machinekey生成工具.machinekey生成工具能轻松的对Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,软件界面简洁大方,下载即可直接使用,绿色无任何广告. machinekey生成工具功能说明: SSO:英文全称Si

55个最实用的大数据可视化分析工具

俗话说的好:工欲善其事,必先利其器!一款好的工具可以让你事半功倍,尤其是在大数据时代,更需要强有力的工具通过使数据有意义的方式实现数据可视化,还有数据的可交互性:我们还需要跨学科的团队,而不是单个数据科学家.设计师或数据分析员:我们更需要重新思考我们所知道的数据可视化,图表和图形还只能在一个或两个维度上传递信息, 那么他们怎样才能与其他维度融合到一起深入挖掘大数据呢?此时就需要倚仗大数据可视化(BDV)工具,因此,笔者收集了适合各个平台各种行业的多个图表和报表工具,这些工具中不乏有适用于NET.

iBatis 代码自动生成工具 iBator 及 Example 使用

iBator的下载和安装 官方下载地址:http://people.apache.org/builds/ibatis/ibator/ 安装:见<Eclipse 插件安装> 安装完成后,“File” —> "New" —> "Other..." iBatis 代码自动生成工具 iBator - 低调的华丽 - 辉色空间 选择项目名 —> "New" —> "Other..." —> “N