javaweb数据库操作
本文主要内容有C3P0数据库连接池,dbutils的使用,元数据的应用
在对数据库进行增删改查时,使用数据库连接池可以有效的提高效率,节省资源,C3P0是Apache组织提供的一个有效方式
C3P0的XML配置文件,文件名必须c3p0config.xml,路径必须与类相同
<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
  <default-config>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql:///estore</property>
    <property name="user">estore</property>
    <property name="password">estore</property>
  </default-config>
</c3p0-config>以上分别为设置JDBC,数据库名称,用户名和密码,注意文件名是固定的,必须导入C3P0的jar包
数据库连接类的书写
public class DaoUtils {
    private static DataSource source = new ComboPooledDataSource();
    private DaoUtils() {
    }
    public static DataSource getSource(){
        return source;
    }
    public static Connection getConn(){
        try {
            return source.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}以上提供了两个静态方法,分别返回数据源和连接
利用DBUtils对数据库的增删改查,需要导入Commons-dbutils.jar
插入数据
public class OrderDaoImpl implements OrderDao {
    @Override
    public void addOrder(Order order) {
        // TODO 自动生成的方法存根
        String sql = "insert into orders values (?,?,?,?,null,?)";
        try {
            QueryRunner runner=new QueryRunner(DaoUtils .getSource());
            runner.update(sql,order.getId(),order.getMoney(),order.getReceiverinfo(),order.getPaystate(),order.getUser_id());
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }删除数据
public void delOrderItem(String id) {
        // TODO 自动生成的方法存根
        String sql="delete from orderitem where order_id = ?";
        try {
            QueryRunner runner = new QueryRunner(DaoUtils .getSource());
            runner.update(sql,id);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }更新修改数据
public void updateState(int id) {
        // TODO 自动生成的方法存根
        String sql = "update users set state = 1 where id=?";
        try{
            QueryRunner runner = new QueryRunner(DaoUtils .getSource());
            runner.update(sql,id);
        }catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }   
    }查找数据,查找数据可以分为查找单个数据和查找列表数据,其中分别用BeanHandler接口与BeanListHandler接口实现
BeanHandler
public Order findOrderById(String p2_Order) {
        // TODO 自动生成的方法存根
        String sql = "select * from orders where id = ?";
        try{
            QueryRunner runner = new QueryRunner(DaoUtils .getSource());
            return runner.query(sql, new BeanHandler<Order>(Order.class),p2_Order);
        }catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }BeanListHandler
public List<SaleInfo> saleList() {
        // TODO 自动生成的方法存根
        String sql =
                " select products.id prod_id,products.name prod_name,sum(orderitem.buynum ) sale_num"+
                " from orders ,orderitem ,products "+
                " where "+
                " orders.id=orderitem.order_id "+
                " and "+
                " orderitem.product_id=products.id"+
                " and orders.paystate = 1"+
                " group by products.id"+
                " order by sale_num desc";
        try{
            QueryRunner runner  = new QueryRunner(DaoUtils .getSource());
            return runner.query(sql, new BeanListHandler<SaleInfo>(SaleInfo.class));
        }catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }元数据
当在JSP与Servlet中传递的参数过多时,元数据配合javabean可以有效的简化书写
//封装数据较验数据
        User user=new User();
        BeanUtils.populate(user, request.getParameterMap());
        user.setPassword(MD5Utils.md5(user.getPassword()));需要导入commons-beanutils.jar
javaweb数据库的基本操作完成
javaweb数据库操作的更多相关文章
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
		一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ... 
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
		最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ... 
- MySQL 系列(二) 你不知道的数据库操作
		第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ... 
- ABP创建数据库操作步骤
		1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ... 
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
		目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ... 
- django数据库操作和中间件
		数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ... 
- [Android Pro]   完美Android Cursor使用例子(Android数据库操作)
		reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ... 
- phpcms v9 中的数据库操作函数
		1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') 返回 ... 
- Android打造属于自己的数据库操作类。
		1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ... 
随机推荐
- MySQL中concat函数
			MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ... 
- 在Main中定义student的结构体,进行年龄从大到小依次排序录入学生信息。(结构体的用法以及冒泡排序)
			using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ... 
- afasf
			http://www.cnblogs.com/ttzhang/archive/2008/11/02/1324601.html project server 2007 sn :W2JJW-4KYDP-2 ... 
- spingMVC<1>-xml文件配置
			---恢复内容开始--- 
- 复合主键@IdClass
			有时一个实体的主键可能同时为多个,例如同样是之前使用的“CustomerEO”实体,需要通过name和email来查找指定实体,当且仅当name和email的值完全相同时,才认为是相同的实体对象.要配 ... 
- 【初级为题,大神绕道】The app icon set named "AppIcon" did not have any applicable content 错误#解决方案#
			The app icon set named "AppIcon" did not have any applicable content 错误,怎样解决 按照您的错误提示您应该 ... 
- iOS 时间处理(转)
			NSDate NSDate对象用来表示一个具体的时间点. NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体. NSDate存储的是GMT时间,使用的时候会根据 当 ... 
- 繁华模拟赛 Evensgn与字符矩阵
			#include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ... 
- xcode注释
			新开的项目需要先开发iOS版本,所以又把好久没写的iOS捡起来了,之前都是手动注释,最近是越来越懒了,所以在网上找了一个自动注释的插件,啊哈,其实有时候还真的挺怀念用Eclipse的时候,不过不用羡慕 ... 
- [BZOJ3671][UOJ#6][NOI2014]随机数生成器
			[BZOJ3671][UOJ#6][NOI2014]随机数生成器 试题描述 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来 ... 
