spring和mybatis整合加载jdbc.properties异常

来源:互联网 发布:2017中小企业融资数据 编辑:程序博客网 时间:2024/05/22 03:20

使用mybatis时,如果映射器比较多的时候,采用xml配置就比较低效,这时可以采用MapperScannerConfigurer扫描指定的包,进行配置。

 版本:spring 3.2.4 +mybatis3.2.2

  

package com.lzf;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;   public interface Mapper {    @Select("SELECT forum_id,forum_name, forum_desc FROM t_forum  where id=#{userId}")    t_forum getT_forums(@Param("userId") long userId);}
配置文件 applicationcontext.xml

<?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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd">    <import resource="classpath:/mybatis.xml"/><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"p:dataSource-ref="dataSource" /><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource"></bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  <property name="basePackage" value="com.lzf"></property>  </bean> </beans>
jdbc数据库配置xml文件

<?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:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"> <util:properties id="dataSourceProps" location="classpath:/config/jdbc.properties"/> <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" ><property name="driver" value="#{dataSourceProps['jdbc.class']}"/><property name="driverUrl" value="#{dataSourceProps['jdbc.url']}"/><property name="user" value="#{dataSourceProps['jdbc.username']}"/><property name="password" value="#{dataSourceProps['jdbc.password']}"/><property name="verbose" value="#{dataSourceProps['jdbc.debug']}"/><property name="trace" value="#{dataSourceProps['jdbc.debug']}"/><property name="delegateProperties" value="user=#{dataSourceProps['jdbc.username']},password=#{dataSourceProps['jdbc.password']}"/><property name="alias" value="#{dataSourceProps['proxool.alias']}"/><property name="maximumConnectionCount" value="#{dataSourceProps['proxool.max.conn']}"/><property name="minimumConnectionCount" value="#{dataSourceProps['proxool.min.conn']}"/><property name="prototypeCount" value="#{dataSourceProps['proxool.prototype.count']}" /></bean></beans>

这里使用spring的<util:properties id="dataSourceProps"> 加载指定的jdbc.properties,因为是org.springframework.beans.factory.config.PropertyPlaceholderConfigurer加载属性比org.mybatis.spring.mapper.MapperScannerConfigurer慢

如果不使用<util:properties> 会抛出找不到${jdbc.class},找不到${jdbc.Url}等,也可以使用其他的方式,我没有试过

jdbc.properties

jdbc.class=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8jdbc.username=rootjdbc.password=rootjdbc.debug=falseproxool.alias=MAIN_POOLproxool.house.keeping.sleep.time=3000000proxool.max.conn=30proxool.min.conn=10proxool.max.new.conn=20proxool.max.conn.lifetime=30000proxool.prototype.count=10
测试
package com.lzf.test;import java.util.List;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.lzf;import com.lzf.t_forum;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"/applicationContext.xml"})public class test {@AutowiredMapper mapper;@Testpublic void mybaits(){t_forum tforum=mapper.getT_forums(1l);}}



0 0