- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Hibernatにはいろいろな検索機能がありますが「Exampleによるクエリ」というのがあります。これは与えられたモデル(エンティティ)のプロパティにマッチするレコードを返す機能です。具体的には
Item example = new Item();
example.setItemCode("C003"); <- アイテムコードのカラムが「C003」のモノ
List list = dao.findByExample(example); <-合致するモノをDBから検索してListで返却
こんな感じです。
**やってみる [#u9da7deb]
実際にやってみます。
***テーブルと対応するJavaBeans [#ma3a1802]
#ref(item.png)
-DDL
CREATE TABLE `ITEM` (
`ITEM_ID` int(10) unsigned NOT NULL auto_increment,
`ITEM_CODE` varchar(10) NOT NULL default '',
`NAME` varchar(256) NOT NULL default '',
`INITIAL_PRICE` double NOT NULL default '0',
`VERSION` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`ITEM_ID`)
);
-JavaBeans
package nu.mine.kino.entity.webdb1;
import org.apache.commons.lang.builder.ToStringBuilder;
public class Item implements java.io.Serializable {
private int itemId;
private int version;
private String itemCode;
private String name;
private double initialPrice;
public Item() {
}
public Item(int itemId, String itemCode, String name, double initialPrice) {
this.itemId = itemId;
this.itemCode = itemCode;
this.name = name;
this.initialPrice = initialPrice;
}
public Item(String itemCode, String name, double initialPrice) {
this.itemCode = itemCode;
this.name = name;
this.initialPrice = initialPrice;
}
public String toString() {
return new ToStringBuilder(this).append("id", getItemId()).append(
"code", getItemCode()).append("Name", getName()).append(
"price", getInitialPrice()).toString();
}
getter/setterは省略
}
***DAO [#fe878fed]
-DAO (interface)
package nu.mine.kino.entity.webdb1;
import java.util.List;
public interface IItemDAO {
Item save(Item item);
void delete(Item item);
Item update(Item item);
Item findById(int id);
List findByExample(Item instance);
}
-DAOの実装(Powered by Spring)
package nu.mine.kino.entity.webdb1;
import org.apache.log4j.Logger;
import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Example;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* @author Masatomi KINO
* @version $Revision$
* @spring.bean id = "itemDao"
* @spring.property name = "sessionFactory" ref = "sessionFactory"
*/
public class ItemDAO extends HibernateDaoSupport implements IItemDAO {
private static final Logger logger = Logger.getLogger(ItemDAO.class);
public List findByExample(Item instance) {
DetachedCriteria dc = DetachedCriteria.forClass(Item.class);
dc.add(Example.create(instance).excludeZeroes());
List results = getHibernateTemplate().findByCriteria(dc);
return results;
}
.. その他の実装は省略
}
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}