JFinal ActiveRecord在非servlet环境中如何使用,例如在命令行程序中使用?

一千年前的人 发布于 2012/07/04 18:06
阅读 7K+
收藏 38
命令行程序中如何使用 JFinal ActiveRecord ....  @JFinal
加载中
0
JFinal
JFinal
可以在非servlet环境下使用,事实上俺经常单拿出ActiveRecord用到一些小型的程序中,具体是这么干的:


C3p0Plugin c3p0Plugin = new C3p0Plugin("jdbc:mysql://127.0.0.1/wangxiaowang?characterEncoding=GBK&zeroDateTimeBehavior=convertToNull", "james", "mypass");
c3p0Plugin.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
arp.addMapping("article", Article.class);
arp.start();
List<Article> articleList = Article.dao.find("select * from article");


与在JFinal系统中使用的唯一区别是,你需要手动调用插件的 start()方法来启动插件,如:c3p0Plugin.start();        arp.start();

Rothleer
Rothleer
@Rothleer 回复@Rothleer : 不好意思,没认真看文档,没看到文档中已经有了
Rothleer
Rothleer
建议将这段写入到,jfinal-#(version)-manual中去,方便大家看到。
星星爷
星星爷
回复 @星迷 : 使用了 发现entity不写属性,可用, 通过Model的get... :)
星星爷
星星爷
非servlet环境下, 要使用从数据库中拽出的entity时,是不是就得把这些entity的属性补上了,否则没法用啊 :)
0
一千年前的人
一千年前的人

谢谢!

再请教一个问题:

_layout.html 中的如下代码:

 <li><a href="/blog"><b>Blog管理</b></a></li>

被tomcat 解释后丢了 context-root  jfinal_demo , 请问 如何fix呢。  再谢!

0
一千年前的人
一千年前的人

引用来自“JFinal”的答案

可以在非servlet环境下使用,事实上俺经常单拿出ActiveRecord用到一些小型的程序中,具体是这么干的:

C3p0Plugin c3p0Plugin = new C3p0Plugin("jdbc:mysql://127.0.0.1/wangxiaowang?characterEncoding=GBK&zeroDateTimeBehavior=convertToNull", "james", "mypass");
c3p0Plugin.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
arp.addMapping("article", Article.class);
arp.start();
List<Article> articleList = Article.dao.find("select * from article");

与在JFinal系统中使用的唯一区别是,你需要手动调用插件的 start()方法来启动插件,如:c3p0Plugin.start();arp.start();

这么谦虚, ActiveRecord  只用于 小程序啊。 

用在大程序中有什么问题? 意思是ActiveRecord  不适合做多表关联查询, 理解对吗? 

ActiveRecord 主要用途是单表的insert, delete, update, 理解对吗?

0
JFinal
JFinal

引用来自“一千年前的人”的答案

谢谢!

再请教一个问题:

_layout.html 中的如下代码:

 <li><a href="/blog"><b>Blog管理</b></a></li>

被tomcat 解释后丢了 context-root  jfinal_demo , 请问 如何fix呢。  再谢!

使用JFinal提供的com.jfinal.ext.interceptor.ContextPathInterceptor 类来解决,在YourJFinalConfig中设置一下:me.add(new ContextPathInterceptor()),然后在页面使用这CONTEXT_PATH变量就可以了,ContextPathInterceptor可以传一个参数,指定context path变量的key值,如: handlers.add(new ContextPathInterceptor("cxt_path"))。但最建议的办法是使用 "/" 做为content path,开发时使用JFinal手册中建议的方式启动项目,就不会有此问题。另外,如果需要解决这个问题的项目源码可以单发我QQ :)
0
JFinal
JFinal

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

可以在非servlet环境下使用,事实上俺经常单拿出ActiveRecord用到一些小型的程序中,具体是这么干的:

C3p0Plugin c3p0Plugin = new C3p0Plugin("jdbc:mysql://127.0.0.1/wangxiaowang?characterEncoding=GBK&zeroDateTimeBehavior=convertToNull", "james", "mypass");
c3p0Plugin.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
arp.addMapping("article", Article.class);
arp.start();
List<Article> articleList = Article.dao.find("select * from article");

与在JFinal系统中使用的唯一区别是,你需要手动调用插件的 start()方法来启动插件,如:c3p0Plugin.start();arp.start();

这么谦虚, ActiveRecord  只用于 小程序啊。 

用在大程序中有什么问题? 意思是ActiveRecord  不适合做多表关联查询, 理解对吗? 

ActiveRecord 主要用途是单表的insert, delete, update, 理解对吗?

不是这样理解的,JFinal active record 已经被用于大型项目了,只不过单拿出来时候正好用在了很多小项目中,这些小型项目主要用于处理数据。ActiveRecord做多表关联比Hibernate 要方便得多,关联查询的时候极度方便 :)
0
一千年前的人
一千年前的人

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

谢谢!

再请教一个问题:

_layout.html 中的如下代码:

 <li><a href="/blog"><b>Blog管理</b></a></li>

被tomcat 解释后丢了 context-root  jfinal_demo , 请问 如何fix呢。  再谢!

使用JFinal提供的com.jfinal.lib.handler.ContextPathHandler 类来解决,在YourJFinalConfig中设置一下:handlers.add(new ContextPathHandler()),然后在页面使用这CONTEXT_PATH变量就可以了,ContextPathHandler可以传一个参数,指定context path变量的key值,如: handlers.add(new ContextPathHandler("cxt_path"))。但最建议的办法是使用 "/" 做为content path,开发时使用JFinal手册中建议的方式启动项目,就不会有此问题。另外,如果需要解决这个问题的项目源码可以单发我QQ :)

谢谢!

恩, 生产环境一般都是 /  作为context-path。 

但是在开发时, 经常是一个eclipse 中有多个项目需要debug,每个项目有不同的context-path, 所以这个问题应该用你说的handler来处理。

0
一千年前的人
一千年前的人

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

可以在非servlet环境下使用,事实上俺经常单拿出ActiveRecord用到一些小型的程序中,具体是这么干的:

C3p0Plugin c3p0Plugin = new C3p0Plugin("jdbc:mysql://127.0.0.1/wangxiaowang?characterEncoding=GBK&zeroDateTimeBehavior=convertToNull", "james", "mypass");
c3p0Plugin.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
arp.addMapping("article", Article.class);
arp.start();
List<Article> articleList = Article.dao.find("select * from article");

与在JFinal系统中使用的唯一区别是,你需要手动调用插件的 start()方法来启动插件,如:c3p0Plugin.start();arp.start();

这么谦虚, ActiveRecord  只用于 小程序啊。 

用在大程序中有什么问题? 意思是ActiveRecord  不适合做多表关联查询, 理解对吗? 

ActiveRecord 主要用途是单表的insert, delete, update, 理解对吗?

不是这样理解的,JFinal active record 已经被用于大型项目了,只不过单拿出来时候正好用在了很多小项目中,这些小型项目主要用于处理数据。ActiveRecord做多表关联比Hibernate 要方便得多,关联查询的时候极度方便 :)

谢谢!

我这有一个项目正想用mybatis呢. 

看来我应该尝试 JF active record 先。 

但是  JFinal-1.0.8-手册.pdf  里面没有  比较多表关联复杂 的使用例子,什么地方有吗?

 

说个题外话, JF 这个名字没有JZ好,abc...xyz的z,zero的z。 哈哈。

0
一千年前的人
一千年前的人

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

谢谢!

再请教一个问题:

_layout.html 中的如下代码:

 <li><a href="/blog"><b>Blog管理</b></a></li>

被tomcat 解释后丢了 context-root  jfinal_demo , 请问 如何fix呢。  再谢!

使用JFinal提供的com.jfinal.lib.handler.ContextPathHandler 类来解决,在YourJFinalConfig中设置一下:handlers.add(new ContextPathHandler()),然后在页面使用这CONTEXT_PATH变量就可以了,ContextPathHandler可以传一个参数,指定context path变量的key值,如: handlers.add(new ContextPathHandler("cxt_path"))。但最建议的办法是使用 "/" 做为content path,开发时使用JFinal手册中建议的方式启动项目,就不会有此问题。另外,如果需要解决这个问题的项目源码可以单发我QQ :)

谢谢!

恩, 生产环境一般都是 /  作为context-path。 

但是在开发时, 经常是一个eclipse 中有多个项目需要debug,每个项目有不同的context-path, 所以这个问题应该用你说的handler来处理。

用Handler 来处理,记得在页面要使用 ${CONTEXT_PATH},这个变量名可以改变的,在new ContextPathHandler时传入一个参数即可。另外,建议在页面中使用 base标签,这样就不必在每个url前面加 ${ CONTEXT_PATH }了,具体这么用的:  <base href="${CONTEXT_PATH  }" />

谢谢,这么明细的指导!  我实验一下。

不过还有一个选择,就直接用 jetty 来调试好了。 哈哈!

0
JFinal
JFinal

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

可以在非servlet环境下使用,事实上俺经常单拿出ActiveRecord用到一些小型的程序中,具体是这么干的:

C3p0Plugin c3p0Plugin = new C3p0Plugin("jdbc:mysql://127.0.0.1/wangxiaowang?characterEncoding=GBK&zeroDateTimeBehavior=convertToNull", "james", "mypass");
c3p0Plugin.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
arp.addMapping("article", Article.class);
arp.start();
List<Article> articleList = Article.dao.find("select * from article");

与在JFinal系统中使用的唯一区别是,你需要手动调用插件的 start()方法来启动插件,如:c3p0Plugin.start();arp.start();

这么谦虚, ActiveRecord  只用于 小程序啊。 

用在大程序中有什么问题? 意思是ActiveRecord  不适合做多表关联查询, 理解对吗? 

ActiveRecord 主要用途是单表的insert, delete, update, 理解对吗?

不是这样理解的,JFinal active record 已经被用于大型项目了,只不过单拿出来时候正好用在了很多小项目中,这些小型项目主要用于处理数据。ActiveRecord做多表关联比Hibernate 要方便得多,关联查询的时候极度方便 :)

谢谢!

我这有一个项目正想用mybatis呢. 

看来我应该尝试 JF active record 先。 

但是  JFinal-1.0.8-手册.pdf  里面没有  比较多表关联复杂 的使用例子,什么地方有吗?

 

说个题外话, JF 这个名字没有JZ好,abc...xyz的z,zero的z。 哈哈。

    JFinal手册里面的确没有这方面的例子,一是我没多时间写,二是我担心开发者看到了以后觉得复杂,文档写太多会吓跑开发者的:)   JFinal使用的纯 sql 来与数据库交互,所以关联查询时,只管写sql就好了,注意一下select 子句中的返回字段,重名时使用 as 指定一下别名就可以了。

    JFinal = java + final, 有特别的意义的,同时final也是java 的一个关键字。final有最终的、不变的、恒定的、稳固的..... 这些意思在里面。JFinal希望成为java 开发者的最终选择: final choice,所以才叫 JFinal :)

0
JFinal
JFinal

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

谢谢!

再请教一个问题:

_layout.html 中的如下代码:

 <li><a href="/blog"><b>Blog管理</b></a></li>

被tomcat 解释后丢了 context-root  jfinal_demo , 请问 如何fix呢。  再谢!

使用JFinal提供的com.jfinal.lib.handler.ContextPathHandler 类来解决,在YourJFinalConfig中设置一下:handlers.add(new ContextPathHandler()),然后在页面使用这CONTEXT_PATH变量就可以了,ContextPathHandler可以传一个参数,指定context path变量的key值,如: handlers.add(new ContextPathHandler("cxt_path"))。但最建议的办法是使用 "/" 做为content path,开发时使用JFinal手册中建议的方式启动项目,就不会有此问题。另外,如果需要解决这个问题的项目源码可以单发我QQ :)

谢谢!

恩, 生产环境一般都是 /  作为context-path。 

但是在开发时, 经常是一个eclipse 中有多个项目需要debug,每个项目有不同的context-path, 所以这个问题应该用你说的handler来处理。

用Handler 来处理,记得在页面要使用 ${CONTEXT_PATH},这个变量名可以改变的,在new ContextPathHandler时传入一个参数即可。另外,建议在页面中使用 base标签,这样就不必在每个url前面加 ${ CONTEXT_PATH }了,具体这么用的:  <base href="${CONTEXT_PATH  }" />

谢谢,这么明细的指导!  我实验一下。

不过还有一个选择,就直接用 jetty 来调试好了。 哈哈!

JFinal手册中有说明如何用JFinal整合的Jetty 来启动项目,连部署都省了,并且在开发过程中可不用重启web server ,提升了开发效率,提高了开发体验,强烈建议试用之 :)
一千年前的人
一千年前的人
谢谢!
返回顶部
顶部