终于开始讲数据库连接了,首先声明我连接数据库用了祖传的JDBC数据库连接池,我就写一下这个工具类的实际使用。
连接池类这里下 http://download.csdn.net/detail/hys564219/9484916
搞数据库前首先要导入依赖,一个数据库连接依赖,顺便导入log显示用的jar
<!-- log4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.2</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency></span>
建个utils包,里面放工具类或是共通方法,祖传工具类也放在这里
再在resources下面建立连接池配置文件
内容如下:
drivers=oracle.jdbc.driver.OracleDriver;com.mysql.jdbc.Driver oracle.url=jdbc:oracle:thin:@127.0.0.1:1521:XE oracle.user=root oracle.password=123456 oracle.maxconn=100 mysql.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true mysql.user=root mysql.password=123456 mysql.maxconn=20</span>上半部分是oracle的,这次主要用的mysql在下半部分,反正oracle那一块留着不用也没问题,就留着吧。
url那里127.0.0.1自行改成相应地址(现在是本地),问号前面的“test”是指数据库名字,自行修改。
user用户名,password密码自行修改。maxconn是最大连接数,本地就设个20,实际使用看用户规模吧...
最后是根据第一个“.”左边的内容选择读取哪一块数据
打开HelloWorldDaoImpl,在原有的基础上改造一下返回从数据库取出来的数据。完整如下
package test.spring.DaoImpl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Repository; import test.spring.Dao.HelloWorldDao; import test.spring.utils.DBConnectionManager; @Repository public class HelloWorldDaoImpl implements HelloWorldDao{ private static final Logger logger = LoggerFactory.getLogger(HelloWorldDaoImpl.class); @Override public String getStrFromDao() { String ret = null; Connection con = DBConnectionManager.getInstance().getConnection("mysql"); PreparedStatement stmt = null; ResultSet rs = null; try { String sql = "select *\n" + "from " + "test_table" + " where ID = ?"; stmt = con.prepareStatement(sql); stmt.setString(1, "3"); rs = stmt.executeQuery(); if (rs.next()) { ret = rs.getString("NAME"); } } catch (SQLException ex) { logger.error("", ex); } finally { if(rs != null) { try{ rs.close(); } catch(Exception e) {} } if(stmt != null) { try{ stmt.close(); } catch(Exception e) {} } DBConnectionManager.getInstance().freeConnection("mysql", con); } return ret; } } </span>
记得导入包的时候logger相关的选择org.slf4j旗下的,sql相关的选择java.sql旗下的。
我这里是从test_table选取ID=3的那一行取出了name
如果返回结果有多行,那就不用if (rs.next()) 而使用while (rs.next()),每个返回行会进一次循环。
差不多就这样了,多做多熟悉....