锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
private Integer id;
private Employee manager;
private Set employees;//瀛愭煡璇㈠氨鍋氬湪榪欏効浜?br>}
鏈夌幇鎴愮殑涓滆タ錛屼亢灝變笉鐢ㄧ幇瀛︽湪鍖犻犺疆瀛愪簡錛岀渷浜嬬渷蹇冿紝榪橀『鐪箋?/p>
浠巗pring module鐨刢vs涓婁笅婧愮爜錛屾妸org.springmodules.orm.orbroker銆乷rg.springmodules.orm.orbroker.support涓や釜package鐨勪笢瑗挎嫹榪沺roject錛堟垨鑰呮槸鎵撴垚jar鎵旇繘鍘伙級銆?/p>
涓巌batis銆乭ibernate涓鏍鳳紝java浠g爜閮ㄥ垎寰堢畝鍗曪紝鎴戝仛鐨勬祴璇曚唬鐮佸氨榪欎箞鍑犺
public interface ResultDAO {
List find(String parentId, String catalogId);
}
public class ResultDAOORBroker extends BrokerDaoSupport implements ResultDAO {
public List find(String parentId, String catalogId) {
return this.getBrokerTemplate().selectMany("find",
new String[]{"parentId", "catalogId"},
new String[]{parentId, catalogId});
}
}
public interface ResultManager {
List<Result> find(String parentId, String catalogId);
}
public class ResultManagerImpl implements ResultManager {
@SuppressWarnings("unchecked")
public List<Result> find(String parentId, String catalogId) {
return resultDAO.find(parentId, catalogId);
}
private ResultDAO resultDAO;
public void setResultDAO(ResultDAO resultDAO) {
this.resultDAO = resultDAO;
}
}
鏈涓昏鐨勮繕鏄痻ml鐨勯厤緗枃浠訛紝涓庣敤ibatis澶т綋涓婂樊涓嶄簡澶氬皯銆?/p>
DataSource銆乀ransactionManager鏄繀欏葷殑
<bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="DataSource" />
</bean>
<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${marekt.jdbc.driver}" />
<property name="user" value="${marekt.jdbc.user}" />
<property name="password" value="${marekt.jdbc.password}" />
<property name="jdbcUrl" value="${marekt.jdbc.url}" />
<property name="initialPoolSize" value="2" />
</bean>
<bean id="PlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:jdbc.properties" />
</bean>
鐒跺悗鏄竴涓狟roker鐨凢actory
<bean id="BrokerFactory" class="org.springmodules.orm.orbroker.BrokerFactoryBean">
<property name="dataSource" ref="DataSource" />
<property name="configLocation" value="classpath:orbroker/orbroker.xml" />
</bean>
琛ㄧ粨鏋勫ぇ鑷村涓?br>CREATE TABLE T_INFO(
CONTENT_ID VARCHAR2(50) NOT NULL,
S_TITLE VARCHAR2(300),
S_CONTENT VARCHAR2(4000),
S_USERNAME VARCHAR2(20),
S_USERADDRESS VARCHAR2(200),
S_USEREMAIL VARCHAR2(50),
S_USERTELPHONE VARCHAR2(20)
);
鎹錛屾垜瀹氫箟浜嗕袱涓被
public class Info {
private String id;
private String title;
private String content;
/**
* 鍙戝竷鑰?br> */
private Publisher publisher;
}
public class Publisher {
private String name;
private String address;
private String email;
private String telphone;
}
浠indByPrimeryKey榪欎釜鏂規硶涓轟緥錛屽湪orbroker.xml涓仛浜嗘潯閰嶇疆
<sql-statement id="findByPrimeryKey" result-object="Info" external-source="/orbroker/findByPrimeryKey.sql" />
findByPrimeryKey.sql鐨勫唴瀹癸細
SELECT t.content_id AS id,
t.s_title AS title,
t.s_content AS content,
t.s_username AS userName,
t.s_useraddress AS userAddress,
t.s_useremail AS userEmail,
t.s_usertelphone AS userTelphone
FROM t_info t
WHERE 1 = 1
<#if id?exists>
AND t.content_id = :id
</#if>
one-to-one鐨勫鐞嗭紝涓昏鍔熷か榪樻槸鍦╫rbroker.xml瀹氫箟Result-Object涓婇潰錛屽弬鐓rbroker user-guide涓淢apping associations鈥濅竴閮ㄥ垎錛屾垜鍋氫簡榪欐牱鐨勯厤緗?br> <result-object id="Info" class="domain.Info" key-columns="id">
<property name="id">
<column name="id" />
</property>
<property name="title">
<column name="title" />
</property>
<property name="content">
<column name="content" />
</property>
<property name="publisher">
<map-with result-object="Publisher" />
</property>
</result-object>
<result-object id="Publisher" class="domain.Publisher" key-columns="id">
<property name="name">
<column name="userName" />
</property>
<property name="email">
<column name="userEmail" />
</property>
<property name="address">
<column name="userAddress" />
</property>
<property name="telphone">
<column name="userTelphone" />
</property>
</result-object>