doma2によるデータの抽出を試す
この前は自動生成しかしていないので
自動生成なしで準備して見る
ライブラリ
doma2
mysql
プロジェクト構成
. ├── bin │ ├── META-INF │ │ └── com │ │ └── example │ │ └── dao │ │ └── ItemDao │ │ └── findAll.sql │ ├── com │ │ └── example │ │ ├── Sample01$1.class │ │ ├── Sample01.class │ │ ├── config │ │ │ └── AppConfig.class │ │ ├── dao │ │ │ ├── ItemDao.class │ │ │ └── ItemDaoImpl.class │ │ └── entity │ │ ├── Item.class │ │ └── _Item.class │ ├── doma-2.0.1.jar │ └── mysql-connector-java-5.1.40.jar ├── lib │ ├── doma-2.0.1.jar │ └── mysql-connector-java-5.1.40.jar └── src ├── META-INF │ └── com │ └── example │ └── dao │ └── ItemDao │ └── findAll.sql └── com └── example ├── Sample01.java ├── config │ └── AppConfig.java ├── dao │ └── ItemDao.java └── entity └── Item.java
設定情報クラス
AppConfig
package com.example.config; import javax.sql.DataSource; import org.seasar.doma.SingletonConfig; import org.seasar.doma.jdbc.Config; import org.seasar.doma.jdbc.dialect.Dialect; import org.seasar.doma.jdbc.dialect.MysqlDialect; import org.seasar.doma.jdbc.tx.LocalTransactionDataSource; import org.seasar.doma.jdbc.tx.LocalTransactionManager; import org.seasar.doma.jdbc.tx.TransactionManager; @SingletonConfig public class AppConfig implements Config { private static final AppConfig INSTANCE = new AppConfig(); private final Dialect dialect; private final LocalTransactionDataSource dataSource; private final TransactionManager transactionManager; private AppConfig() { dialect = new MysqlDialect(); dataSource = new LocalTransactionDataSource("jdbc:mysql://192.168.33.10:3306/myapp?useSSL=false", "app", "Password123@"); transactionManager = new LocalTransactionManager(dataSource.getLocalTransaction(getJdbcLogger())); } @Override public DataSource getDataSource() { // TODO Auto-generated method stub return dataSource; } @Override public Dialect getDialect() { // TODO Auto-generated method stub return dialect; } @Override public TransactionManager getTransactionManager() { return transactionManager; } public static AppConfig singleton() { return INSTANCE; } }
エンティティ
Item
package com.example.entity; import java.time.LocalDateTime; import org.seasar.doma.Column; import org.seasar.doma.Entity; import org.seasar.doma.Id; import org.seasar.doma.Table; @Entity @Table(name = "item") public class Item { @Id private Integer id; @Column(name = "name") private String name; @Column(name = "price") private Integer price; @Column(name = "create_at") private LocalDateTime createAt; @Column(name = "update_at") private LocalDateTime updateAt; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } public LocalDateTime getCreateAt() { return createAt; } public void setCreateAt(LocalDateTime createAt) { this.createAt = createAt; } public LocalDateTime getUpdateAt() { return updateAt; } public void setUpdateAt(LocalDateTime updateAt) { this.updateAt = updateAt; } }
Dao
ItemDao
package com.example.dao; import java.util.List; import org.seasar.doma.Dao; import org.seasar.doma.Select; import com.example.config.AppConfig; import com.example.entity.Item; @Dao(config = AppConfig.class) public interface ItemDao { @Select List<Item> findAll(); }
findAll.sql
select /*%expand*/* from item order by id asc
実行用クラス
Sample01.java
package com.example; import java.util.List; import org.seasar.doma.jdbc.tx.TransactionManager; import com.example.config.AppConfig; import com.example.dao.ItemDao; import com.example.dao.ItemDaoImpl; import com.example.entity.Item; public class Sample01 { public static void main(String[] args) { TransactionManager tm = AppConfig.singleton().getTransactionManager(); tm.required(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub ItemDao dao = new ItemDaoImpl(); List<Item> list = dao.findAll(); System.out.println(list.size()); } }); } }
↓
実行結果
12 24, 2016 1:40:25 午前 org.seasar.doma.jdbc.tx.LocalTransaction begin 情報: [DOMA2063] ローカルトランザクション[1190654826]を開始しました。 12 24, 2016 1:40:25 午前 com.example.dao.ItemDaoImpl findAll 情報: [DOMA2220] ENTER : クラス=[com.example.dao.ItemDaoImpl], メソッド=[findAll] 12 24, 2016 1:40:25 午前 com.example.dao.ItemDaoImpl findAll 情報: [DOMA2076] SQLログ : SQLファイル=[META-INF/com/example/dao/ItemDao/findAll.sql], select id, name, price, create_at, update_at from item order by id asc 12 24, 2016 1:40:25 午前 com.example.dao.ItemDaoImpl findAll 情報: [DOMA2221] EXIT : クラス=[com.example.dao.ItemDaoImpl], メソッド=[findAll] 6 12 24, 2016 1:40:25 午前 org.seasar.doma.jdbc.tx.LocalTransaction commit 情報: [DOMA2067] ローカルトランザクション[1190654826]をコミットしました。 12 24, 2016 1:40:25 午前 org.seasar.doma.jdbc.tx.LocalTransaction commit 情報: [DOMA2064] ローカルトランザクション[1190654826]を終了しました。
動きました(^^)
ログにsqlを表示する?