【Java】DBアクセスライブラリ [4] ~ Iciql ~

■ Iciql

 * Java の O/Rマッパー

特徴

 * DBからJavaコードを生成することができる

注意点

 * Iciql として、 トランザクション機能なし

■ 自動生成

 * DBからJavaコードを生成することができる

構文

java -Xbootclasspath/a:[JDBCドライバのパス] -jar [iciql.jarのパス] -url jdbc:mysql://localhost:3306/[db名] -user [ユーザー名] -password [パスワード] -package [生成するモデルのパッケージ] -folder [モデルクラスを出力するディレクトリのパス>]

補足: エラー「opening registry key ...」が表示されてしまう

 * 以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/36053386.html

■ ダウンロード

 * 以下のサイトの配下からJARファイル(今回は「iciql-1.6.5.jar」)を取得できる
https://github.com/gitblit/iciql-maven/tree/master/com/iciql/iciql

■ サンプル

 * MySQL を使用する
 * 以下からMySQL用のJDBCドライバ「mysql-connector-java-X.X.XX-bin.jar」をダウンロードし、
   Eclipseにインポートしておく事
http://dev.mysql.com/downloads/connector/j/

サンプルデータ:MySQL

CREATE TABLE person
(
  id char(8) NOT NULL PRIMARY KEY,
  name varchar(100),
  sex char(1)
);

INSERT INTO person(
            id, name, sex)
    VALUES ('X0000000', 'admin', 'm'),
           ('X0000001', 'Mike', 'm'),
           ('X0000002', 'Tom', 'm');
           
select * from person;

自動生成コード

出力結果は以下「Person.java(自動生成コード)」を参照のこと。
java -Xbootclasspath/a:C:\workspace\Sample\jar\mysql-connector-java-5.1.38-bin.jar -jar C:\workspace\Sample\jar\iciql-1.6.5.jar -url jdbc:mysql://localhost:3306/sampledb -user root -password password -package com.sample.icql -folder C:\workspace

Javaソース

Person.java(自動生成コード)
package com.sample.icql;

import com.iciql.Iciql.IQColumn;
import com.iciql.Iciql.IQIndex;
import com.iciql.Iciql.IQIndexes;
import com.iciql.Iciql.IQSchema;
import com.iciql.Iciql.IQTable;
import com.iciql.Iciql.IndexType;
import java.io.Serializable;

@IQTable(name="person")
public class Person implements Serializable {

	private static final long serialVersionUID = 1L;

	@IQColumn(primaryKey=true, length=8, nullable=false)
	public String id;

	@IQColumn(length=100)
	public String name;

	@IQColumn(length=1)
	public String sex;

	public Person() {
	}
}
Main.java(呼び出し)
package com.sample.icql;

import java.util.List;

import com.iciql.Db;

public class Main {
  public static void main(String[] args) {
    String url = "jdbc:mysql://localhost:3306/sampledb?useSSL=false&useUnicode=true&characterEncoding=UTF-8";
    String user = "root";
    String password = "password";

    try (Db db = Db.open(url, user, password);) {
        Person person = new Person();
        List<Person> results = db
                        .from(person)
                        .where(person.sex)
                        .is("m")
                        .select();
        for (Person result : results) {
          System.out.println(result.id + " : " + result.name + " " + result.sex);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}
出力結果
X0000000 : admin m
X0000001 : Mike m
X0000002 : Tom m


関連記事

Java】DBアクセスライブラリ [0] ~ 目次 ~

https://blogs.yahoo.co.jp/dk521123/37773005.html