DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
http://thread.gmane.org/gmane.comp.web.click.user/1034
http://article.gmane.org/gmane.comp.web.click.user/1034
Thanks J.F. Zarama.
Replace Spring with Guice.
MyModule.java
import static com.google.inject.name.Names.named;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import com.ibatis.sqlmap.client.SqlMapClient;
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(MyDao.class).to(MyDaoImpl.class).in(Scopes.SINGLETON);
bind(SqlMapClient.class).toProvider(SqlMapClientP.class).in(
Scopes.SINGLETON);
bindConstant().annotatedWith(named("ibatis.configXml"))
.to("myapp/xml/SqlMapConfig.xml"); //from classpath
}
}
SqlMapClientP.java
import java.io.IOException;
import java.io.Reader;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.name.Named;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class SqlMapClientP implements Provider<SqlMapClient> {
private static SqlMapClient sqlMapClient;
@Inject @Named("ibatis.configXml") String configXml;
public SqlMapClient get() {
if(sqlMapClient != null){
return sqlMapClient;
}
try {
Reader reader = Resources.getResourceAsReader(configXml);
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
}catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("SqlMapClientP unable to create instance." + e);
}
return sqlMapClient;
}
}
MyDao.java
public interface MyDao {
int getSomething() throws SQLException;
}
MyDaoImpl.java
import java.sql.SQLException;
import com.google.inject.Inject;
public class MyDaoImpl implements MyDao {
@Inject
private SqlMapClientP client;
public int getSomething() throws SQLException {
return ((Integer)client.get().queryForObject("getSomething")).intValue();
}
}
MyPage.java
import com.google.inject.Inject;
public class MyPage extends WebPage {
@Inject
protected MyDao myDao;
public MyPage() {
super();
System.out.println("something: "+myDao.getSomething());
}
}
MyApp.java
public class MyApp extends WebApplication {
...
@Override
public void init() {
...
addComponentInstantiationListener(new GuiceComponentInjector(this, new MyModule()));
...
}
...
}
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<typeAlias alias="My" type="myapp.My"/>
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
<sqlMap resource="myapp/xml/My.xml"/>
</sqlMapConfig>
That should basically be it.