Хорошо, я разобрался со всем, что мне нужно сделать, поэтому позвольте мне поделиться.
Я нашел этот кусок где-то в списке рассылки mybatis google:
import java.beans.PropertyVetoException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.datasource.DataSourceFactory;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3P0DataSourceFactory implements DataSourceFactory {
private ComboPooledDataSource dataSource = null;
public C3P0DataSourceFactory () {
}
public void setProperties(Properties properties) {
this.dataSource = new ComboPooledDataSource();
this.dataSource.setPassword(properties.getProperty("password"));
this.dataSource.setJdbcUrl(properties.getProperty("url"));
try {
this.dataSource.setDriverClass(properties.getProperty("driver"));
} catch (PropertyVetoException e) {
}
}
public DataSource getDataSource() {
return (this.dataSource);
}
Хотя я слишком огорчен, я не могу передать свои собственные свойства, как я пытался сделать. Единственные свойства, которые появляются в приведенном выше методе setProperties, - это те свойства, которые определены в файле mybatis.xml, как неутешительно.
Затем мы настраиваем вызов для сборки следующим образом:
Reader reader = Resources.getResourceAsReader(RESOURCE);
Properties userProps = new Properties();
sqlMapperUser = new SqlSessionFactoryBuilder().build(reader, "user");
ComboPooledDataSource ds = (ComboPooledDataSource) sqlMapperUser.getConfiguration().getEnvironment().getDataSource();
ds.setUser(loginName);
Как разочаровывает! Я должен знать, какой тип источника данных я использую. Такого рода уменьшается часть настоящего мяса MyBatis. В любом случае, здесь я знаю, какое имя пользователя нужно выбрать, поэтому я установил свойство User этого конкретного источника данных c3p0, и теперь я могу, как обычно, открывать сессии с mybatis.
Наконец, как выглядит пользовательская среда? Как насчет этого?
<environment id="user">
<transactionManager type="JDBC" />
<dataSource type="C3P0DataSourceFactory">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl4" />
<property name="password" value="snotty" />
</dataSource>
</environment>
Итак, здесь я пропустил пользовательское свойство для динамической установки, как я только что продемонстрировал. Вот и все, MyBatis интегрирован с c3p0. Я думаю, что это демонстрирует слабость MyBatis, что вы должны углубиться в объект SqlSessionFactory. Но опять же, если я выберу каркас, я нереально ожидаю волшебства. И с MyBatis я не получаю волшебство. Иначе, есть другие варианты, которые можно сделать, чтобы справиться с упорством.