10月20日,北京【人工智能】源创会火热报名中,点击报名收获 AI 训练指南
Watch Star Fork

redraiment / jactiverecord-elJavaMIT

加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
增强JSP的EL表达式,能像访问普通JavaBean一样访问Record和Table http://github.com/redraiment/jactiverecord-el
redraiment 最后提交于 1.2版发布
Loading...
README.md 3.68 KB

jActiveRecord-EL

jActiveRecord-ELjActiveRecord的辅助项目,简化在EL表达式中访问数据的方法,做到像操作普通JavaBean一样操作RecordTable类型的对象。适合采用了jActiveRecordWeb项目。

jActiveRecord-EL同样使用Maven管理,在pom.xml中添加如下依赖即可:

<dependency>
  <groupId>me.zzp</groupId>
  <artifactId>jactiverecord-el</artifactId>
  <version>1.2</version>
</dependency>

访问Record属性

假设Record实例user有一个字符串类型的属性name,如果不使用jActiveRecord-EL,要在EL表达式中获得该属性的值,方法是:

<h1>${user.get("name")}</h1>

采用jActiveRecord-EL之后,方法是:

<h1>${user.name}</h1>

jActiveRecord-EL简化了在EL表达式中访问Record属性的方法,能像访问JavaBean属性一样地访问Record的数据。

访问Table方法

jActiveRecord-EL同样简化了访问Table对象的方法,支持allfirstlast和索引四种查询方式:

  • all:调用Table#all()。即${User.all}等价于${User.all()}
  • first:调用Table#first()。即${User.first}等价于${User.first()}
  • last:调用Table#last()。即${User.last}等价于${User.last()}
  • 索引:调用Table#find(int id)。即${User[1]}等价于${User.find(1)}

注意 ${User[1]}${User.all[1]}的意义并不相同,前者返回表中id等于1的记录;后者返回所有记录(all)中第条记录(索引从0开始)。

配置

增强EL表达式

要使用jActiveRecord-EL,需要在web.xml中添加如下信息:

<listener>
  <listener-class>me.zzp.ar.el.ResolverSetup</listener-class>
</listener>

骆驼命名法(可选)

JavaBean属性的命名规则为骆驼命名法,例如“createdAt”;而数据库表的字段通常采用下划线命名法,例如“created_at”。该选项默认开启,即${user.created_at}${user.createdAt}等价。在web.xml中添加如下上下文参数即可关闭自动转换开关:

<context-param>
  <param-name>jactiverecord-el-camel-case</param-name>
  <param-value>false</param-value>
</context-param>

创建数据库对象(可选)

web项目中使用jActiveRecord,通常第一步就是通过数据源(javax.sql.DataSource)创建数据库对象(me.zzp.ar.DB)。因此jActiveRecord-EL提供了另一个上下文监听器,在启动服务器的时候自动创建数据库对象,并添加到上下文对象的属性中,设置方法如下:

<listener>
  <listener-class>me.zzp.ar.el.DatabaseSetup</listener-class>
</listener>
<context-param>
  <param-name>jactiverecord-el-data-source</param-name>
  <param-value>java:/comp/env/jdbc/DataSource</param-value>
</context-param>

重命名属性名(可选)

DatabaseSetup创建的上下文属性名默认为“dbo”,即在Servlet中通过getServletContext().getAttribute("dbo")获得数据库对象。如果你不喜欢“dbo”这个名字,可指定以下信息自定义属性名:

<context-param>
  <param-name>jactiverecord-el-attribute-name</param-name>
  <param-value>database</param-value>
</context-param>

这样,属性名就改成了database。

项目点评 ( 0 )

你可以在登录后,发表评论

搜索帮助