-
Mybaits 使用数据源错误5
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:resource/conf/jdbc.properties</value>
<value>classpath:resource/conf/sys.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="poolPreparedStatements" value="false"/>
<property name="maxOpenPreparedStatements" value="50"/>
<property name="defaultAutoCommit" value="false"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="upd*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="reset*" propagation="REQUIRED"/>
<tx:method name="check*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="AOPMethod" expression="execution(* com.web..*Manager.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="AOPMethod"/>
</aop:config>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:resource/mybatis-config/mybatis-data.xml"/>
<property name="mapperLocations" value="classpath:com/web/**/*-data.mapper.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.web.**.dao"/>
<property name="markerInterface" value="com.web.common.dao.DataBaseMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dbutils" class="com.web.common.utils.impl.MySQLDBUtils">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
</beans>
我在配置文件里面配置了一个数据源,数据源参数是根据配置文件加载。数据源在mybaits和自定义数据工具类中使用,但是启动工程后,报错如下:
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${jdbc.driverClassName}'
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
如果单独使用自定义数据访问工具类,系统正常启动,可以正常操作。但是加入mybaits后,就出现错误了。求解决思路。2012年8月28日 09:22
2个答案 按时间排序 按投票排序
-
看一下
<value>classpath:resource/conf/jdbc.properties</value>
<value>classpath:resource/conf/sys.properties</value>
这两个配置文件中是否有
jdbc.driverClassName 这个配置 或者是不是写错了2012年8月28日 12:50
-
通过错误日志,猜测是MapperScannerConfigurer早于PropertyPlaceholderConfigurer初始化的原因。
尝试将<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:resource/conf/jdbc.properties</value> <value>classpath:resource/conf/sys.properties</value> </list> </property> </bean>
修改为<util:properties id="jdbcProps" location="classpath:jdbc.properties"/>
使用util:properties替代上面的propertyConfigurer。2012年8月28日 11:07
相关推荐
1. **配置环境**:设置SpringMVC和MyBatis的环境,包括Spring的上下文配置、MyBatis的配置文件、数据源和SqlSessionFactory等。 2. **创建实体类**:根据数据库表结构,创建对应的Java实体类,用于表示数据库中的...
使用MyBatis逆向工程时,你需要配置好数据源信息,包括数据库驱动、URL、用户名和密码。然后运行逆向工程插件或脚本,它会根据配置自动连接到数据库并生成所需的代码文件。这些文件会被放置在指定的目录下,与你的...
在Spring Boot的主配置类中,我们需要配置数据源和MyBatis的SqlSessionFactory。Spring Boot自动配置可以帮助我们轻松完成这些任务。接着,我们需要创建MyBatis的Mapper接口,这些接口将映射到XML配置文件中的SQL...
4. **配置文件**:MyBatis的配置文件`mybatis-config.xml`,包含了数据源、事务管理器、Mappers等配置信息,是整个MyBatis框架的入口。 5. **数据库连接信息**:如JDBC驱动、数据库URL、用户名和密码,通常在`...
其次,`mybatis-3-config.dtd`是MyBatis配置文件的DTD,包含了`configuration`, `environments`, `mappers`等元素,它们用于设置MyBatis的基本配置,如数据源、事务管理器以及映射文件的位置。同样,通过在IDE中配置...
- **配置MyBatis**:创建`mybatis-config.xml`配置文件,定义数据源、事务管理器和Mapper扫描路径。 - **配置Spring Boot**:在`application.properties`或`application.yml`中配置数据源信息,如数据库URL、...
4. **配置文件生成**:除了具体的Java源代码,生成器还会生成MyBatis的配置文件,如mybatis-config.xml,配置数据源、事务管理器等信息,以及mapper扫描路径,使得MyBatis能够找到并加载生成的Mapper。 使用MyBatis...
- **减少错误**:自动化生成的代码更规范,减少了由于人工编写而导致的语法错误。 - **易于维护**:当数据库表结构发生变化时,只需重新运行逆向工程,即可快速更新相关的Java和XML文件。 - **一致性**:确保所有...
总之,MyBatis的自动化代码生成工具极大简化了与数据库交互的Java代码编写工作,通过合理配置和使用,能够大幅提升开发效率,减少手动编码带来的错误。同时,了解其配置文件和模板机制,有助于我们更好地定制化生成...
4. **选择数据源**:指定要操作的数据库表,这一步可能会让你选择数据库中的某个特定表或者多个表进行代码生成。 5. **生成代码**:完成上述配置后,点击生成按钮,工具会自动生成对应的代码文件,并将它们放置在你...
MyBatis与Spring的集成使得事务管理变得更加简单,可以在Spring配置中定义数据源和SqlSessionFactory。 3. **MongoDB**: MongoDB是一个NoSQL数据库,适合处理大规模、非结构化的数据。在Java应用中,通常使用...
创建 MyBatis 的配置文件 `mybatis-config.xml`,设置数据源、事务管理器,并编写 Mapper 映射文件。同时,需要在 SpringBoot 的配置文件 `application.properties` 中配置数据库连接信息。 4. **创建 Spring Data...
6. **自定义模板**:除了使用默认的代码生成模板,MyBatis还支持自定义模板,允许开发者根据自己的编码规范和需求定制生成的代码风格。例如,generatorSqlmapCustom可能就是一个自定义的模板文件,用于生成特定格式...
23. MyBatis 的数据源配置:MyBatis 框架提供了 UNPOOLED、POOLED 和 JNDI 三种数据源类型。 24. MyBaits 的 update 语句:在 MyBaits 映射文件中使用 <set> 和 <if> 元素组合进行 update 语句动态 SQL 组装时,...
`demo_log4j.log`可能是日志文件,使用Log4j这样的日志框架记录系统运行时的调试、信息、警告和错误信息,有助于问题排查和系统监控。 总的来说,这个图书管理系统后端利用SSM框架,结合MyBatis的数据库操作,实现...
3. **配置数据源**:在配置文件中,需提供数据库驱动、URL、用户名和密码,以便MBG能正确连接到数据库并获取表信息。 4. **定义生成规则**:MBG提供了多种生成模板,如简单生成、复杂生成等,开发者可以根据需求在...
Spring MVC与Mybatis Plus的整合,通常需要配置数据源、事务管理器、Mybatis和Mybatis Plus的相关配置。在项目中,你可能看到`applicationContext.xml`或`springmvc-dispatcher-servlet.xml`等配置文件,其中包含了...
- 配置 SqlMapConfig.xml,包括数据源、事务管理器等信息。 - 编写 Mapper XML 文件,定义 SQL 语句和映射规则。 - 创建对应的 Java 类(Mapper 接口),用以声明 SQL 方法。 - 在 Java 代码中使用 ...
这种情况可能会导致逻辑错误,因为你可能会假设 map 中至少有一个 key。 理解并合理使用 `callSettersOnNulls` 配置至关重要,因为它直接影响到查询结果的处理方式。在某些场景下,这可以提供更健壮的处理逻辑,...
在 Mybatis 中,`mybatis-config.xml` 是全局配置文件,包含了数据源、事务管理器等信息。这个入门案例可能包含一个类似的配置文件,用来配置数据库连接信息和 Mybatis 的行为。 3. **Mapper 映射文件**: 每个 ...