`
jedy
  • 浏览: 147765 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Class::DBI和TT的演示页面

阅读更多

sql

CREATE TABLE `notes` (
`note_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255),
`message` TEXT,
`modify_time` timestamp NOT NULL,
`create_time` timestamp NOT NULL,
`creator` INTEGER UNSIGNED NOT NULL,
`private` TINYINT NOT NULL DEFAULT 0,
PRIMARY KEY(`note_id`)
)
ENGINE=MyISAM;


CREATE TABLE `users` (
`user_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`password` VARCHAR(255),
PRIMARY KEY(`user_id`)
)
ENGINE=MyISAM;


Note::DBI

 1  package Note::DBI;
2
3 use Note::Constant;
4 use base 'Class::DBI';
5
6 my $database = Note::Constant::DATABASE;
7 my $user = Note::Constant::DB_USER;
8 my $pwd = Note::Constant::DB_PWD;
9
10 __PACKAGE__->set_db('Main', "dbi:mysql:$database:localhost", $user, $pwd);
11
12 1;
13


Note::User

 1  package Note::User;
2
3 use Class::DBI::Pager;
4
5 use base 'Note::DBI';
6
7 __PACKAGE__->table('users');
8 __PACKAGE__->columns(All => qw/user_id name password/);
9 __PACKAGE__->columns(Essential => qw/user_id name password/);
10
11 __PACKAGE__->has_many(notes => 'Note::Note', {sort => "create_time desc"} );


Note::Note

 1  package Note::Note;
2
3 use lib './';
4 use EasyDateTime;
5 use Class::DBI::Pager;
6
7 use base 'Note::DBI';
8
9 __PACKAGE__->table('notes');
10 __PACKAGE__->columns(All => qw/note_id title message modify_time create_time creator private/);
11 __PACKAGE__->columns(Essential => qw/note_id title message create_time creator private/);
12
13 __PACKAGE__->has_a(creator => "Note::User");
14 __PACKAGE__->has_a(create_time => 'EasyDateTime',
15 inflate => 'new',
16 deflate => sub {shift->str("%datetime")},
17 );
18
19 __PACKAGE__->set_sql(new_list => "select * from __TABLE__ order by create_time desc limit 10");
20
21 1;

# get me
my ($user) = Note::User->search(name => "Wu.Hao");
print $user->name; # Wu.Hao

# get all notes created by me
my @notes = $user->notes();

# get all notes whose title include "mail"
my @notes = Note::Note->search_like(title => "%mail%");


# want to change name
$user->name("Go.Ko");
$user->update();


Template (Template Toolkit)

GET



[% variable %]
[% hash.key %]
[% list.n %]
[% code(args) %]
[% obj.meth(args) %]
[% "value: $var" %]

SET



[% variable = other_variable
variable = 'literal text @ $100'
variable = "interpolated text: $var"
list = [ val, val, val, val, ... ]
list = [ val..val ]
hash = { var => val, var => val, ... }
%]

FOREACH



[% FOREACH variable = [ val, val, val ] %] # either
[% FOREACH variable = list %] # or
[% FOREACH list %] # or
content...
[% variable %]
[% END %]

WHILE



[% WHILE condition %]
content
[% END %]

IF...ELSE...



[% IF condition %]
content
[% ELSIF condition %]
content
[% ELSE %]
content
[% END %]

SWITCH



[% SWITCH variable %]
[% CASE val1 %]
content
[% CASE [ val2, val3 ] %]
content
[% CASE %] # or [% CASE DEFAULT %]
content
[% END %]


Class::DBI and Template

 1  #!perl
2
3 use lib '../lib';
4 use Template;
5 use Note::DBI;
6 use Note::Note;
7
8 my @notes = Note::Note->retrieve_all();
9 my $tt = new Template();
10 $tt->process(\*DATA, {notes => \@notes});
11
12 __DATA__
13 [% FOREACH note = notes %]
14 [% note.creator.name %]([% note.create_time.str('%yyyy-%MM-%dd %hh:%mm') %]) : [% note.title %]
15 [% END %]

Result:

Wu.Hao(2005-08-01 15:12) : test

Wu.hao(2005-08-01 15:13) : test2

Guest(2005-08-01 15:14) : testA

Guest(2005-08-01 15:15) : testB


Template and HTML::Template

my $r = [
{ a => 1, b => 2, c => 3,},
{ a => 2, b => 4, c => 6,}
];
Table 1













A Value B Value C Value
123
246


Template

#!perl
use Template;

my $r = [
{ a => 1, b => 2, c => 3,},
{ a => 2, b => 4, c => 6,}
];

my $tt = new Template();
$tt->process(
\*DATA,
{
r => $r,
}
)
or die $tt->error;

__DATA__
<table border=1>
<tr>
<td>A Value</td><td>B Value</td><td>C Value</td>
</tr>
[% FOREACH r %]
<tr>
<td>[% a %]</td><td>[% b %]</td><td>[% c %]</td>
</tr>
[% END %]
</table>


HTML::Template

#!perl
use HTML::Template;

my $r = [
{ a => 1, b => 2, c => 3,},
{ a => 2, b => 4, c => 6,}
];

my $tmpl = new HTML::Template(filehandle => *DATA);
$tmpl->param(r => $r);
print $tmpl->output();

__DATA__
<table border=1>
<tr>
<td>A Value</td><td>B Value</td><td>C Value</td>
</tr>
<TMPL_LOOP r>
<tr>
<td><TMPL_VAR a></td><td><TMPL_VAR b></td><td><TMPL_VAR c></td>
</tr>
</TMPL_LOOP>
</table>

Table 2














A Value C Value B Value
132
264

Table 3











A Value C Value
13
26

Table 2

HTML::Template

$r = [
{
row => [ { value => 1, col => 'a' }, { value => 3, col => 'c' }, { value => 2, col => 'b' } ]
},
{
row => [ { value => 2, col => 'a' }, { value => 6, col => 'c' }, { value => 4, col => 'b' } ]
},
];

Template

#!perl
use Template;

my $r = [
{ a => 1, b => 2, c => 3,},
{ a => 2, b => 4, c => 6,}
];

my $c = [qw/a c b/];
my $tt = new Template();
$tt->process(
\*DATA,
{
r => $r,
c => $c,
value => sub { return $_[0]->{ $_[1] } }
}
)
or die $tt->error;

__DATA__
<table border=1>
<tr>
[% FOREACH j = c %]
<td>
[% SWITCH j %]
[% CASE 'a' %]A Value
[% CASE 'b' %]B Value
[% CASE 'c' %]C Value
[% END %]
</td>
[% END %]
</tr>
[% FOREACH i = r %]
<tr>
[% FOREACH j = c %]
<td>[% value(i,j) %]</td>
[% END %]
</tr>
[% END %]
</table>

Table 3
my $c  = [qw/a c/];
分享到:
评论

相关推荐

    perl-DBI-1.52-2.el5.i386.rpm

    perl-DBI-1.52-2.el5.i386.rpm

    DBIx-Class-Storage-TxnEndHook:DBIx 的事务挂钩提供程序

    名称 DBIx::Class::Storage::TxnEndHook - DBIx::...__PACKAGE__-&gt;inject_base('DBIx::Class::Storage::DBI', 'DBIx::Class::Storage::TxnEndHook'); package main my $schema = MyApp::Schema-&gt;connect(...) $schema-

    perl的DBI安装包以及安装步骤

    4. **环境配置**:根据数据库服务器的设置,可能需要配置环境变量,如`DBI:mysql:database=your_database;host=your_host;port=your_port`,其中`your_database`、`your_host`和`your_port`分别替换为实际的数据库名...

    Programming Perl DBI 8

    8. **高级主题**:深入讨论DBI的高级特性和技巧,如绑定参数、存储过程、数据库元数据的查询、连接池管理和性能优化。 9. **实例分析**:提供实际的代码示例和案例研究,帮助读者更好地理解和应用DBI,解决实际工作...

    Perl DBI编程(chm)

    Table of Contents Copyright Page Dedication Preface Chapter 1: Introduction Chapter 2: Basic Non-DBI Databases Chapter 3: SQL and Relational Databases Chapter 4: Programming ...

    DBI-1.636.tar.gz

    解压后,你可以找到DBI的源文件,用于编译和安装到你的Perl环境中。通常,这样的源码包会包括如下几个部分: 1. `INSTALL`:提供了安装指南,指导用户如何编译和安装模块。 2. `Makefile.PL`:Perl的Makefile生成...

    DBI-1.616.tar.gz

    要安装DBI,首先需要解压"DBI-1.616.tar.gz",然后进入解压后的目录并运行`perl Makefile.PL`,接着执行`make`和`make test`进行编译和测试,最后使用`make install`将DBI安装到系统中。在完成安装后,Perl程序就...

    Queue-DBI:Queue-DBI 的只读发布历史

    队列-DBI 一个注重安全的排队模块,使用DBI作为排队数据的存储系统。 安装 要安装此模块,请运行以下命令: perl Build.PL ./Build ./Build test ./Build install 支持和文档 安装后,您可以使用 perldoc 命令...

    oracle工具dbi2.0

    Oracle DBI2.0是一款专为Oracle数据库设计的高效管理工具,它提供了强大的数据迁移功能,使得用户能够轻松地在不同的Oracle数据库之间批量导入和导出表、视图以及存储过程。这款工具对于DBA(数据库管理员)以及需要...

    ruby DBI ruby DBI ruby DBI

    ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...

    DBI.nro,DBI 658版本

    DBI最新版本,官方正式版本,DBI 658版本。 寻求在Nintendo Switch上实现全面而便捷的文件管理和游戏安装体验,一个理想的解决方案是采用高度集成且功能强大的管理工具。这样的工具不仅限于简单地安装游戏文件,如...

    DBI-1.631.tar.gz

    DBI(Database Interface)是Perl编程语言中的标准数据库接口模块,它为Perl程序员提供了一种统一的方式来访问和支持各种类型的数据库。DBI-1.631是DBI的一个特定版本,该版本包含了对数据库操作的各种增强和改进。...

    sfdbi:sf的DBI接口

    总的来说,`sfdbi`是R中处理空间数据库的一个强大工具,它结合了`sf`和`DBI`的优点,让R用户能够高效地管理和分析存储在PostgreSQL中的地理空间数据。通过`sfdbi`,我们可以轻松地实现数据的导入导出、查询和复杂的...

    DBI接口与DPI接口与DSI接口[整理].pdf

    DBI 接口、DPI 接口和 DSI 接口的比较与应用 DBI 接口、DPI 接口和 DSI 接口是三种常见的液晶显示屏接口,分别应用于不同的场景和设备中。本节课将详细介绍 DBI 接口、DPI 接口和 DSI 接口的概念、特点、优缺点和...

    DBI-1.618.tar.gz

    8. 错误处理:当发生错误时,DBI会设置错误码和错误消息,可以通过$DBI::err和$DBI::errstr来获取。 9. 驱动器(Driver):DBI的核心功能是抽象化,而具体的数据库操作则由驱动器负责。例如,DBD::mysql是用于MySQL...

    perl-DBI-1.616-1.el5.rfx.i386.rpm

    资源:perl-DBI-1.616-1.el5.rfx.i386.rpm 作者:Shenkxiao 版本:1.616-1.el5.rfx.i386 主要内容: 1、rhel-server-5.5-i386的DBI rpm安装包 。 使用方法: 1、rpm -ivh perl-DBI-1.616-1.el5.rfx.i386.rpm 。 ...

    Apache-DBI-1.10.tar

    Apache-DBI-1.10.tar 是该模块的一个版本,它包含源代码和其他必要的文件,用于在 CentOS 系统上进行编译和安装。 首先,我们需要了解 Apache HTTP 服务器,它是全球最广泛使用的开源 Web 服务器,提供了丰富的功能...

    PERL_DBI手册

    DBI模块通过所谓的数据库独立层(DBI layer)来实现对不同数据库的连接和操作,它允许Perl脚本通过一个API接口来执行SQL语句和管理数据库事务。 ### DBI的基本概念和架构 DBI应用程序的架构包括DBI类、数据库...

    DBI-1.627.tar.gz

    DBI-1.627是这个库的一个版本,包含了对不同数据库系统的支持和改进。 在这个描述中提到的"DBI-1.627.tar.gz"是一个源码压缩包,通常用于在Linux或Unix类操作系统上编译和安装。`.tar.gz`是常见的归档格式,结合了`...

Global site tag (gtag.js) - Google Analytics