每日一贴,今天的内容关键字为类sql
1:使用之前学习的jdbc模板技术
A:引入3个包:数据源用到的2个包:commons-dbcp.jar,commons-pool.jar 数据库驱动包:ojdbc14.jar,mysql-connector-xx.jar B:创立数据库工具类:JDBCUtil.java,该类为数据库工具类,供给数据库的打开,关闭等最基本的功能 采用设计模式:ThreadLocal C:创立数据库信息文件:db.properties D:创立数据访问异常类:DataAccessException.java,继承运行时异常,重载其构造函数 E:创立一个映射类:DiscMapper.java,抽象出接口:RowMapper.java F:创立jdbc模板类:JDBCTemplate.java,该类为抽象类,里面封装了罕见的基于数据库的CRUD操作 供给了一个抽象方法:getRowMapper(),该方法重要实现了RowMapper接口,让查询出来的字段和实体 bean中的属性一一对应。JDBCUtil.java/** * <数据库工具类> * @author kandy * @version [V1.00, 2013-5-3] * @see [相关类/方法] * @since V1.00 */public class JDBCUtil{ //定义数据源 private static DataSource ds; //定义当前链接的一个当地线程 private static ThreadLocallocal =new ThreadLocal 数据库工具类>(); //初始化数据库信息 static { try { //创立Properties类文件 Properties p=new Properties(); //从用来加载类的搜索路径打开具有指定名称的资源,以读取该资源。 p.load(JDBCUtil.class.getClassLoader().getResourceAsStream("db.properties")); ds=BasicDataSourceFactory.createDataSource(p); } catch (Exception e) { e.printStackTrace(); } } //获得一个链接(Lazy模式,从线程中获得该链接,如果没有该链接,通过数据源获得连接) public static Connection getConnection() { Connection con = local.get(); if(con==null) { try { con=ds.getConnection(); } catch (SQLException e) { e.printStackTrace(); } //将该连接存入当前线程 local.set(con); } return con; } //关闭数据库链接 public static void colse(Connection con ,Statement st, ResultSet rs) { try { if(rs!=null) { rs.close(); } if(st!=null) { st.close(); } if(con!=null) { con.close(); //从线程中移除该链接 local.remove(); } } catch (SQLException e) { e.printStackTrace(); } } //关闭数据库链接 public static void close() { try { //将存放在当地线程下的链接关闭 local.get().close(); //从线程中移除该链接 local.remove(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { Connection conn = JDBCUtil.getConnection(); System.out.println(conn); JDBCUtil.colse(conn, null, null); } }
db.properties
oracle
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc\:oracle\:thin\:@10.0.5.98\:1521\:ora9
username=wk
password=wk
mysql
driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://10.0.5.98\:3306/disc_shop?Unicode\=true&&characterEncoding\=utf8
username=root
password=root
DataAccessException.java
package com.itany.jdbc; //创立数据访问异常类:DataAccessException.java,继承运行时异常,重载其构造函数public class DataAccessException extends RuntimeException{ public DataAccessException() { super(); } public DataAccessException(String message) { super(message); } public DataAccessException(String message,Throwable cause) { super(message,cause); } public DataAccessException(Throwable cause) { super(cause); }}
RowMapper.java
/** * <让表中的字段和java中的属性一一对应> * @author kandy * @version [V1.00, 2013-5-3] * @see [相关类/方法] * @since V1.00 */public interface RowMapper{ public Object mapRow(ResultSet rs )throws Exception; } 让表中的字段和java中的属性一一对应>
创立jdbc模板类:JDBCTemplate.java
每日一道理 喜马拉雅直冲霄汉,可上面有攀爬者的旗帜;撒哈拉沙漠一望无垠,可里面有跋涉者的脚印;阿尔卑斯山壁立千仞,可其中有探险者的身影;雅鲁藏布江湍急浩荡,可其中有勇敢者的故事。
/** * ** * @author kandy * @version [V1.00, 2013-5-3] * @see [相关类/方法] * @since V1.00 */public abstract class JDBCTemplate{ //查询 public List query(String sql,Object ...params) { Connection con =null; PreparedStatement ps =null; ResultSet rs =null; //饿汉式 List list =new ArrayList(); try { con =JDBCUtil.getConnection(); ps=con.prepareStatement(sql); for(int i=0;i
文章结束给大家分享下程序员的一些笑话语录: IBM和波音777
波音777是有史以来第一架完全在电脑虚拟现实中设计制造的飞机,所用的设备完全由IBM公司所提供。试飞前,波音公司的总裁非常热情的邀请IBM的技术主管去参加试飞,可那位主管却说道:“啊,非常荣幸,可惜那天是我妻子的生日,So..”.. 波音公司的总载一听就生气了:“胆小鬼,我还没告诉你试飞的日期呢!”--------------------------------- 原创文章 By
类和sql---------------------------------