我想知道是否有任何设置Tomcat连接池的代码示例(使用MyBatis作为ORM),Tomcat版本为7或更高。
我推测我需要在Tomcat conf文件夹中的context.xml文件中添加资源,然后将其链接到MyBatis。我已经搜索过了,但是我找到的教程都好像只针对Spring。是否有简单的教程,或者能否概述一下运行此操作所需的步骤?
我想知道是否有任何设置Tomcat连接池的代码示例(使用MyBatis作为ORM),Tomcat版本为7或更高。
我推测我需要在Tomcat conf文件夹中的context.xml文件中添加资源,然后将其链接到MyBatis。我已经搜索过了,但是我找到的教程都好像只针对Spring。是否有简单的教程,或者能否概述一下运行此操作所需的步骤?
有一个旧的iBatis FAQ条目,应该仍然适用于myBatis:如何在Tomcat中使用JNDI DataSource与iBATIS?。
您可以在Google上搜索详细配置Tomcat版本的数据源,然后也要配置MyBatis(它与iBatis配置不同):
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="JNDI">
<property name="data_source" value="java:comp/env/jdbc/yourDatasourceName"/>
</dataSource>
</environment>
有许多方法可以实现这一点。我假设你的意思是要实现Tomcat(而不是Spring)管理的连接池。我已经在MySQl / Spring 4 / Mybatis-spring 1.1堆栈上进行了测试。
找出您想要实现的连接池机制(C3P0 / DBCP等)。
如果您想将数据库用作JNDI数据源,则必须在Tomcat设置中将其声明为资源。有许多方法可以做到这一点。您可以遵循这篇写得很好的指南{{link1:Tomcat JNDI连接池}}。我通常在位于应用程序的META-INF目录中的context.xml中添加以下条目:
<Context>
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest"/>
</Context>
这个文件被Tomcat用来调用它自己的默认连接池,这种情况下是DBCP 2。您可以通过在上面的Resource元素中添加更多参数(如removeAbandonedOnBorrow=true
)来调整其设置。您应该将数据库的驱动程序jar(例如MySQL Connector Jar)放在Tomcat的lib文件夹中。
<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/TestDB"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dbDataSource" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dbDataSource" />
<property name="typeAliasesPackage" value="com.example.model"/>
<property name="mapperLocations" value="classpath*:*.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.dao" />
</bean>
MapperScannerConfigurer
是必要的,因为它会搜索给定目录中的 mapper xml 文件。您也可以使用旧的方式来定义 mybatis-config.xml
文件,即通过在 sqlSessionFactory
bean 中注入文件位置,在其 configLocation
属性中。