0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

seasar2のお勉強5(Seasar2徹底入門の7 S2JBDC入門あたり)

Last updated at Posted at 2017-11-12

とりあえず動かすだけなら簡単。
なお、本に書いてあったs2jdbc-gen-build.xmlでサンプル動かすやつはやってないです。

以下やってみた内容。
まずは以下のようなPersonというEntityを作る(getter,setterは略)。@Entityアノテーションは必須。
あとは実際にPersonというテーブルに実際に下のクラスの変数と同名のカラムを持ったテーブルも作っておいてください。

import javax.persistence.Entity;
@Entity
public class Person implements Serializable{

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	/** 名前 */
	public String name;

	/** 所属*/
	public String belonging;

	/** 特徴*/
	public String feature;
}

呼ぶ側。実行するとテーブルにはいっている情報が全部取れる。
あとjdbcManager.insert(p).execute();みたいに(pはPersonクラスのオブジェクト)やるとinsertも出来る。今回の投稿では省いてますが。

package org.seasar2.s2jdbc.example.service;
import java.util.Iterator;
import java.util.List;

import org.seasar.extension.jdbc.JdbcManager;
import org.seasar.framework.container.SingletonS2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
import org.seasar2.s2jdbc.example.entity.Person;


public class HelloS2jdbc {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		SingletonS2ContainerFactory.init();
		JdbcManager jdbcManager = SingletonS2Container.getComponent(JdbcManager.class);

		List<Person> results = jdbcManager.from(Person.class).getResultList();

		for (Iterator<Person> iterator = results.iterator(); iterator.hasNext();) {
			Person person = (Person) iterator.next();
			System.out.print(person.getName());
			System.out.print(person.getBelonging());
			System.out.println(person.getFeature());
		}

		SingletonS2ContainerFactory.destroy();
	}
}

あと私は今回postgresqlを使っているので
s2jdbc.diconのdialectはpostgreDialectに切り替えるのと
jdbc.diconのxaDataSourceもPostgreSQLのものに切り替えました。どちらもDoltengでデフォルトで作るとH2側が有効化されていて他のDBリソースのものはコメントアウトされています。

まあ軽く動かす分には簡単だけどDB周りはSQL書きたいのであんまりこのHibernateみたいな書き方は個人的に好きじゃないです。
ということで本では9章のSQL定義ファイルにSQL書くやり方だと

		results = jdbcManager.selectBySqlFile
				(Person.class, "org/seasar2/s2jdbc/example/service/Person_Search.sql", sCon).getResultList();
		for (Iterator<Person> iterator = results.iterator(); iterator.hasNext();) {
			Person person = (Person) iterator.next();
			System.out.print(person.getName());
			System.out.print(person.getBelonging());
			System.out.println(person.getFeature());
		}

で、resoucesフォルダの下にorg/seasar2/s2jdbc/example/service/Person_Search.sqlってのを作って

SELECT name, belonging, feature FROM person WHERE feature = /*feature*/

と書いておけばいける。埋め込み文字も行けるしこれならmyBatisみたいに使えて満足。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?