Dao测试类
@Test public void test() throws Exception { //获取上下文对象 ApplicationContext ctx = new ClassPathXmlApplicationContext("/spring-config/applicationContext.xml"); //获取dataSource对象 DataSource dataSource=ctx.getBean("dataSource",DataSource.class); //定义sql语句 String sql="select * from micro_message"; //获取数据库连接对象 Connection connection=dataSource.getConnection(); //获取数据库语句执行对象 Statement stm=connection.createStatement(); //获取查询集合 ResultSet rs=stm.executeQuery(sql); //打印结果集 while(rs.next()) { System.out.println("用户名为:"); System.out.println(rs.getString(2)); } }
jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root jdbc.password=root
在applicationContext.xml中配置jdbc.properties
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:jdbc.properties</value> </list> </property> </bean>
第一种:使用spring自带的DriverManagerDataSource 配置文件如下:
<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean>
第二种
C3P0 数据源需要使c3p0的核心jar包。一般在下载hibernate的时候都会自带一个: 在hibernate-release-4.3.0.Final\lib\optional\c3p0路径下找到的。
要注意的是在bean的property的name属性和其他几种方式会有所不同:
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" > <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.jdbcUrl}" /> <property name="user" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> <!-- 连接池信息 当连接池中的连接用完时,C3P0一次性创建新连接的数目 --> <property name="acquireIncrement" value="${c3p0.acquireIncrement}" /> <!-- 初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。默认为3;--> <property name="initialPoolSize" value="${c3p0.initialPoolSize}" /> <!-- 最大空闲时间,超过空闲时间的连接将被丢弃。为0或负数则永不丢弃。默认为0;--> <property name="maxIdleTime" value="${c3p0.maxIdleTime}" /> <!-- 连接池中保留的最小连接数。默认为15 --> <property name="minPoolSize" value="${c3p0.minPoolSize}" /> <!-- 连接池中保留的最大连接数。默认为15; --> <property name="maxPoolSize" value="${c3p0.maxPoolSize}" /> <!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属 于单个Connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素,如果maxStatements与 maxStatementsPerConnection均为0,则缓存被关闭。默认为0; --> <property name="maxStatements" value="${c3p0.maxStatements}" /> <!-- 连接池内单个连接所拥有的最大缓存Statement数。默认为0; --> <property name="maxStatementsPerConnection" value="${c3p0.maxStatementsPerConnection}"/> </bean>
第三种:
使用apache的dbcp插件连接数据库 需要下载的jar包:commons-dbcp.jar,commons-pool.jar,commons-collection.jar
spring的配置文件中如下:
<bean name="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean>
第四种:
使用hibernate数据源 需要hiberante核心jar包,我使用的hibernate1的版本是hibernate-release-4.3.0.Final 目前三大框架较流行,spring一般与hiberante做搭档,数据库连接方式写在hiberante的配置文件中,在spring管理hibernate中的配置文件中,直接读取hibernate核心配置文件即可。在使用hibernate连接数据库的时候需要读取hibernate.cfg.xml的配置文件和相应的实体类