DBIx::Custom documentation
DBIx::Custom is Perl's O / R mapper. An O / R mapper is a module that makes it easy to access the database.
DBIx::Custom is one of the options you can consider if you find it difficult to work with raw DBI or prefer a simple O / R mapper to a more abstract O / R mapper.
Features of DBIx::Custom
It is a feature of DBIx::Custom.
- Easy execution of insert, update, delete, select
- Batch insert of multiple data, bulk insert is possible if RDBMS is supported
- Provides a thin layer for SQL. OK when you want to use pure SQL.
- Flexible where clauses, named placeholders, model support
- Define a join clause and join the table with a foreign key. You can freely write syntax such as order by clause and limit clause
- Supports transactions. With connection management, it works correctly even on a prefork server
- Compatible with MySQL, MariaDB, PostgreSQL, SQLite, Oracle, SQL Server, Microsoft Access
- Maintains backward compatibility, except for features scheduled to be discontinued in 2018.
Connection to database
Connect to the database.
use DBIx::Custom;
#Connect to SQLite
my $dbi = DBIx::Custom->connect('dbi: SQLite: dbname = bookshop');
#Connect to MySQL, MariaDB (supports utf8mb4)
#Connection management is done by default and works fine on prefolk servers
my $dbi = DBIx::Custom->connect(
  'dbi: mysql: database = bookshop',
  'ken',
  '! LFKD%$&',
  {mysql_enable_utf8mb4 => 1}
);
How to connect to the database
Creating a model
Create a model.
#Create a model
$dbi->model('book');
#Create a model When defining a join clause
$dbi->model(
  table =>'book',
  join => [
    'left join author on book.author_id = author.id',
    'left join publisher on book.publisher_id = publisher.id'
  ]
);
insert
Insert with #insert
$dbi->model('book')->insert({id => 1, title =>'Perl'});
Insert multiple data with #insert
$dbi->model('book')->insert(
  [
    {id => 1, title =>'Perl'}
    {id => 2, title =>'Mojolicious'}
  ]
);
Insert multiple data with #insert (bulk insert)
$dbi->model('book')->insert(
  [
    {id => 1, title =>'Perl'}
    {id => 2, title =>'Mojolicious'}
  ],,
  bulk_insert => 1
);
update
Updated with #uppdate
$dbi->model('book')->update({title =>'Perl'}, where => {id => 1});
Delete with #delete
$dbi->model('book')->delete(where => {id => 1});
select
Select with #select (all fields)
my $result = $dbi->model('book')->select(where => {id => 1});
Select with #select (specify field)
my $result = $dbi->model('book')->select(['id','title'], where => {id => 1});
Select with #select (ID is 1 or 2 or 3)
my $result = $dbi->model('book')->select(where => {id => [1, 2, 3]});
Select with #select (Peller is included in the title and the price is 2000 yen or less)
my $result = $dbi->model('book')->select(
  where => "title like'%Perl%' and price <= 2000"
);
Select with #select (Perl is included in the title and the price is 2000 yen or less) When using variables
# Use named placeholder
my $title ='Perl';
my $price = 2000;
my $result = $dbi->model('book')->select(
  where => [
    "title like: title and price <=: price",
    {title => $title, price => $price}
  ]
);
Select with #select (Peller is included in the title and the price is 2000 yen or less)
#where clause dynamically generated
my $title ='Perl';
my $price = 2000;
my $result = $dbi->model('book')->select(
  where => [
    ['and', "title like: title", "price <=: price"],
    {title => $title, price => $price}
  ]
);
Select with #select (Peller is included in the title and the price is 2000 yen or less or 5000 yen or more)
#Where clause is dynamically generated and multiple conditions are specified with or
my $title ='Perl';
my $price1 = 2000;
my $price2 = 5000;
my $result = $dbi->model('book')->select(
  where => [
    ['and', "title like: title", ['or', "price <=: price", "price> =: price"],
    {title => $title, price => [$price1, $price2]}
  ]
);
Select with #select (Peller is included in the title and the price is 2000 yen or less or 5000 yen or more)
#Where clause is dynamically generated and multiple conditions are specified with or
# One price was not specified
my $title ='Perl';
my $price2 = 5000;
my $result = $dbi->model('book')->select(
  where => [
    ['and', "title like: title", ['or', "price <=: price", "price> =: price"],
    {title => $title, price => [$dbi->not_exists, $price2]}
  ]
);
Select with #select (Perl is included in the title and the price is 2000 yen or less) When using variables
# Named Placeholder Syntack Sugar
my $title ='Perl';
my $price = 2000;
my $result = $dbi->model('book')->select(
  where => [
    ": title {like} and: price {<=}",
    {title => $title, price => $price}
  ]
);
Explanation of DBIx::Custom
This is a commentary article on DBIx::Custom.
- Installation
- Connecting to the database
- Creating a model
- select --select row
- insert --insert line
- update --line update
- delete --Delete line
- execute --Execute SQL
- where-Create condition
- Get row data
- Other features
 DBIx::Custom
DBIx::Custom