c3p0连接池
创建C3P0连接池的工具类
* 连接的规范接口:
* javax.sql.DataSource接口
* 接口的实现类对象
* ComboPooledDataSource
* 成员位置创建ComboPooledDataSource对象
* 使用静态代码块给ComboPooledDataSource设置4大数据量连接信息
* 创建一个静态方法返回Connection对象
* 创建一个静态方法释放资源
1 public class C3P0Utils { 2 //成员位置创建ComboPooledDataSource对象 3 private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); 4 5 //使用静态代码块给ComboPooledDataSource设置4大数据量连接信息 6 static{ 7 try { 8 dataSource.setDriverClass("com.mysql.jdbc.Driver"); 9 dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");10 dataSource.setUser("root");11 dataSource.setPassword("root");12 } catch (Exception e) {13 throw new RuntimeException("设置连接信息失败!");14 }15 }16 17 //创建一个静态方法返回Connection对象18 public static Connection getConnection(){19 try {20 return dataSource.getConnection();21 } catch (SQLException e) {22 throw new RuntimeException("获取数据库连接信息失败!");23 }24 }25 26 //定义一个释放资源的方法27 public static void close(ResultSet rs,Statement stat,Connection conn){28 if(rs!=null){29 try {30 rs.close();31 } catch (SQLException e) {32 e.printStackTrace();33 }34 }35 if(stat !=null){36 try {37 stat.close();38 } catch (SQLException e) {39 e.printStackTrace();40 }41 }42 if(conn != null){43 try {44 conn.close();45 } catch (SQLException e) {46 e.printStackTrace();47 }48 }49 }50 }创建读取XML配置文件的C3P0工具类
1 public class C3P0UtilsReadXML { 2 //成员位置创建ComboPooledDataSource对象 3 private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); 4 5 //使用静态代码块给ComboPooledDataSource设置4大数据量连接信息 6 /*static{ 7 try { 8 dataSource.setDriverClass("com.mysql.jdbc.Driver"); 9 dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");10 dataSource.setUser("root");11 dataSource.setPassword("root");12 } catch (Exception e) {13 throw new RuntimeException("设置连接信息失败!");14 }15 }*/16 17 //创建一个返回ComboPooledDataSource的方法18 public static DataSource getDataSource(){19 return dataSource;20 }21 22 //创建一个静态方法返回Connection对象23 public static Connection getConnection(){24 try {25 return dataSource.getConnection();26 } catch (SQLException e) {27 throw new RuntimeException("获取数据库连接信息失败!");28 }29 }30 31 //定义一个释放资源的方法32 public static void close(ResultSet rs,Statement stat,Connection conn){33 if(rs!=null){34 try {35 rs.close();36 } catch (SQLException e) {37 e.printStackTrace();38 }39 }40 if(stat !=null){41 try {42 stat.close();43 } catch (SQLException e) {44 e.printStackTrace();45 }46 }47 if(conn != null){48 try {49 conn.close();50 } catch (SQLException e) {51 e.printStackTrace();52 }53 }54 }55 }DBCP连接池
创建DBCP连接池的工具类
* 连接的规范接口:
* javax.sql.DataSource接口
* 接口的实现类对象
* BasicDataSource
* 重写getConnection方法
1 public class DBCPUtils { 2 //创建连接池的实现类对象 3 private static BasicDataSource dataSource = new BasicDataSource(); 4 5 //设置连接数据库的4大变量,使用BasicDataSource中的set方法设置 6 static{ 7 //设置注册的驱动信息 8 dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 9 //设置Url10 dataSource.setUrl("jdbc:mysql://localhost:3306/mybase4");11 //设置用户名12 dataSource.setUsername("root");13 //设置密码14 dataSource.setPassword("root");15 //可选信息16 //dataSource.setInitialSize(100);17 //dataSource.setMaxActive(1000);18 }19 20 //创建获取数据库连接对象的方法21 public static Connection getConnection(){22 try {23 return dataSource.getConnection();24 } catch (SQLException e) {25 throw new RuntimeException("获取数据库连接对象失败");26 }27 }28 29 //定义一个释放资源的方法30 public static void close(ResultSet rs,Statement stat,Connection conn){31 if(rs!=null){32 try {33 rs.close();34 } catch (SQLException e) {35 e.printStackTrace();36 }37 }38 if(stat !=null){39 try {40 stat.close();41 } catch (SQLException e) {42 e.printStackTrace();43 }44 }45 if(conn != null){46 try {47 conn.close();48 } catch (SQLException e) {49 e.printStackTrace();50 }51 }52 }53 }读取配置文件的方式
主要模块:首页商品推荐 /顾客留言发布 /商品分类浏览 /按商品分类、关键字搜索商品 /商品购物车 人信息中心 /显示商品详细介绍以及多图片显示功能 /商品类别管理有分大类中类的类别设定商品搜索类别设定 /商品管理有临时关闭不在线功能 /订单管理 /支付类型管理模块 留言管理 /后台权限分级管理 /密码修改 /新闻管理 /网站配置管理 /滚动广告管理v1.58更新:1、增强支付接口设置。2、内置支
1 /* 2 * 创建DBCP连接池工具类 3 * 使用读取配置文件的方式 4 * DBCP中有一个工厂类BasicDataSourceFactory 5 * 工厂类中有一个静态方法 6 * static DataSource createDataSource(Properties prop) 7 * 此方法返回的就是DataSource接口的实现类对象BasicDataSource 8 *
9 * 创建Propertis集合+IO技术读取配置文件10 * 把配置文件传入BasicDataSourceFactory静态方法createDataSource中11 */12 public class DBCPUtilsReadConfig {13 //创建DataSource变量14 private static DataSource dataSource;15 16 static{17 try {18 //创建Propertis集合+IO技术读取配置文件19 //使用类加载器,扫描包下的文件20 InputStream is = DBCPUtilsReadConfig.class.getClassLoader()21 .getResourceAsStream("dbcpconfig.properties");22 //创建Propertis集合23 Properties prop = new Properties();24 prop.load(is);25 //把配置文件传入BasicDataSourceFactory静态方法createDataSource中26 dataSource = BasicDataSourceFactory.createDataSource(prop);27 } catch (Exception e) {28 throw new RuntimeException("读取配置文件失败");29 }30 }31 32 //创建获取数据库连接对象的方法33 public static Connection getConnection(){34 try {35 return dataSource.getConnection();36 } catch (SQLException e) {37 throw new RuntimeException("获取数据库连接对象失败");38 }39 }40 41 //定义一个释放资源的方法42 public static void close(ResultSet rs,Statement stat,Connection conn){43 if(rs!=null){44 try {45 rs.close();46 } catch (SQLException e) {47 e.printStackTrace();48 }49 }50 if(stat !=null){51 try {52 stat.close();53 } catch (SQLException e) {54 e.printStackTrace();55 }56 }57 if(conn != null){58 try {59 conn.close();60 } catch (SQLException e) {61 e.printStackTrace();62 }63 }64 }65 }
* 使用DBUtils工具类对数据库表进行增删改查
* DBUtils工具类作用:简化JDBC的开发(6步)
*
* DBUtils有3个核心类
* 1.QueryRunner:使用QueryRunner中的方法对数据库进行增删改查
* 2.DbUtils:提供了大量的释放资源的方法
* 3.ResultSetHandler接口:提供了处理查询结果集的方法
*
* QueryRunner类
* 构造方法:
* QueryRunner() 空参数构造方法
* 调用更新和查询方法的时候,需要传入Connection对象
* QueryRunner(DataSource ds) 带DataSource数据库连接池的构造方法
* 调用更新和查询方法的时候QueryRunner会自动从DataSource实现类对象中获取数据库连接对象,使用完毕会自动归还
* 成员方法:
* 执行执行增删改的成员方法
* int update(Connection conn, String sql, Object... params)用来执行增删改的SQL
* int update(String sql, Object... params) 用来执行增删改的SQL
* 参数:
* Connection conn:数据库连接对象
* String sql:拼接的sql语句,可以使用?占位符
* Object... params:?占位符的实际参数,可以使用Object[]
* 返回值:
* int:执行的有效行数
* 执行执行查询的成员方法
*
*
* 参数:
* Connection conn:数据库连接对象
* String sql:拼接的sql语句,可以使用?占位符
* Object... params:?占位符的实际参数,可以使用Object[]
* ResultSetHandler
* 返回值:
*
1 public class Demo01DBUtils { 2 //创建QueryRunner对象,构造方法中传入连接池的实现类对象 3 QueryRunner qr = new QueryRunner(C3P0UtilsReadXML.getDataSource()); 4 5 /* 6 * 使用QueryRunner,对数据库表进行删除数据 7 */ 8 @Test 9 public void delete(){10 try {11 //拼接增加的sql语句12 String sql = "DELETE FROM category WHERE cid=?";13 //调用QueryRunner中update方法执行sql语句14 //创建对象数据,储存?占位符的实际参数15 //Object[] parmars = {"洗",10};16 int row = qr.update(sql, 7);17 System.out.println(row);18 } catch (Exception e) {19 System.out.println(e);20 }21 }22 23 /*24 * 使用QueryRunner,对数据库表进行修改数据25 */26 @Test27 public void update(){28 try {29 //拼接增加的sql语句30 String sql = "UPDATE category SET cname=? WHERE cid=?";31 //调用QueryRunner中update方法执行sql语句32 //创建对象数据,储存?占位符的实际参数33 Object[] parmars = {"洗",10};34 int row = qr.update(sql, parmars);35 System.out.println(row);36 } catch (Exception e) {37 System.out.println(e);38 }39 }40 41 /*42 * 使用QueryRunner,对数据库表进行增加(插入)数据43 */44 @Test45 public void insert(){46 try {47 //拼接增加的sql语句48 String sql = "INSERT INTO category(cname) VALUES(?)";49 //调用QueryRunner中update方法执行sql语句50 int row = qr.update(sql, "玩具");51 System.out.println(row);52 } catch (Exception e) {53 System.out.println(e);54 }55 }56 }使用QueryRunner对数据库表进行查询的九种查询方式
1 /* 2 * 使用QueryRunner对数据库表进行查询 3 *T query(String sql, ResultSetHandler rsh, Object... params) 4 */ 5 public class Demo02DBUtils { 6 //创建QueryRunner对象,构造方法中传入数据库连接池的实现类 7 QueryRunner qr = new QueryRunner(C3P0UtilsReadXML.getDataSource()); 8 9 /* 10 * 第九种查询方式:使用KeyedHandler(Map嵌套Map) 11 * KeyedHandler会把结果集的每一行数据封装到Map集合中 12 * key:字符串类型列名 13 * value:列名对应的值(不同的列,数据类型不同,value使用Object类型) 14 * 多个Map集合存储到另外一个Map集合中 15 * key:指定的字符串列名,不指定则默认使用第一列 16 * value:传入存储每行数据的Map集合 17 * 18 * 构造方法: 19 * KeyedHandler() 不指定列名 20 * KeyedHandler(int columnIndex) 指定列号1,2,3,4 21 * KeyedHandler(String columnName) 指定字符串格式列名 22 */ 23 @Test 24 public void keyedHandler(){ 25 try { 26 //拼接sql语句 27 String sql = "SELECT * FROM category"; 28 //调用QueryRunner中的query方法,结果集使用KeyedHandler 29 //Map









