简介
本文旨在说明在实际的软件开发过程中如何使用DBIx::Custom框架完成对数据库的操作。
扩展last_id方法 或 generate_id 方法
在实际的开发过程中,有很多表的唯一标识字段(主键)需要自动生成。有些数据库对于int型的主键提供了自动生成的方法(如Mysql)。但也有些数据库中没有自动生成主键的方案可用。
如果数据库已经提供了自动生成主键的方案,在新加一条记录后,我们需要获取到新增记录的主键值。在Mysql中可以使用LAST_INSERT_ID()
方法获得。而对于数据库无法自动生成的主键,我们需要提供一个方法来生成主键,并在新增一条记录时把主键也加到记录之中。
综上所述需要扩展的方法有两个:
- last_id方法,用于获取最后一次增加记录的主键值。
- generate_id方法,用于生成将要添加到表中的记录的唯一标识。
DBIx::Custom::Where模块中的clause。
DBIx::Custom::Where可用于生成复杂的where子句,并且DBIx::Custom::Where中的clause有一个特点,就是在param中没有定义键,在生成where子句时会被忽略。也就是说在clause属性中已经指定的where 条件,如果在param中不存在,则在最终生成的where子句中也是不存在的。
基于这个特性,我们可以针对某个,或某几个类似的业务,写出一个复杂的clause属性;对于不同的业务来说,需要的查询条件不同,可以把从客户端得到的查询条件作为param,从而得到不同的where子句。
一定要用好DBIx::Custom::Mapper
DBIx::Custom::Mapper是一个对参数进行映射的模块,非常的好用。如果你从客户端接收过来的方法与数据库中的字段名不对应,就可以使用这个模块进行映射。
它最主要的应用场景如下:
- 在insert和update时对参数名进行调整。
- select语句中对where子句中的参数值进行调整(如使用like操作符需要给参数值加通配符等)。
- 对带有join子句的查询,对查询结果中的键名进行调整。
分页控制
在DBIx::Custom框架中,要对select的结果进行分页,就只能使用select 方法的 append 参数选项了。如果想要把分页控制功能做的更好用、更易用,就只能自己写个扩展了。
1