Tomcat连接池与MyBatis

4

我想知道是否有任何设置Tomcat连接池的代码示例(使用MyBatis作为ORM),Tomcat版本为7或更高。

我推测我需要在Tomcat conf文件夹中的context.xml文件中添加资源,然后将其链接到MyBatis。我已经搜索过了,但是我找到的教程都好像只针对Spring。是否有简单的教程,或者能否概述一下运行此操作所需的步骤?


那么在Tomcat-->Spring-->MyBatis中不能使用连接池吗?这将减少很多编码......让您更容易使用JNDI查找。 - Karthik Prasad
2个回答

4

有一个旧的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>

0

有许多方法可以实现这一点。我假设你的意思是要实现Tomcat(而不是Spring)管理的连接池。我已经在MySQl / Spring 4 / Mybatis-spring 1.1堆栈上进行了测试。

  1. 找出您想要实现的连接池机制(C3P0 / DBCP等)。

  2. 如果您想将数据库用作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文件夹中。

  1. 之后,根据您的Mybatis实现方式(XML或基于bean),您可以将此数据源注入到Mybatis中。如果您是以bean方式进行操作,可以像这样操作:

<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 属性中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接