本文主要内容有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数据库操作的更多相关文章

  1. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  2. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  3. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  4. ABP创建数据库操作步骤

    1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...

  5. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. django数据库操作和中间件

    数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...

  7. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  8. phpcms v9 中的数据库操作函数

    1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='')   返回 ...

  9. Android打造属于自己的数据库操作类。

    1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...

随机推荐

  1. Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  2. Jenkins 搭建U3D自动发布 IOS

    http://www.cnblogs.com/yinghuochong/archive/2013/09/01/3294940.html 1.安装包,工具略过. 2.插件管理 Subversion Pl ...

  3. [Angularjs]ng-file-upload上传文件

    写在前面 最近在弄文档库的H5版,就查找了下相关的上传组件,发现了ng-upload的东东,推荐给大家. 系列文章 [Angularjs]ng-select和ng-options [Angularjs ...

  4. Socket网络编程(1)

    TCP/IP 简单介绍 应用层 (Application):应用层是个很广泛的概念,有一些基本相同的系统级 TCP/IP 应用以及应用协议,也有许多的企业商业应用和互联网应用. 传输层 (Transp ...

  5. js返回上一步

    用按钮来链接返回上一步. <input type ="button" value="返回上一步" onclick="javascript:his ...

  6. 网站程序版本号信息也可能造成bd快照严重滞后

    在a5上看到一篇“破解阿里云论坛的快照时间迷局 或涉足所有phpwind论坛”的文章,里面说到pw的一个版本信息导致了快照滞后的问题,这再次验证了之前那篇文章“时间戳造成快照滞后”的准确性. 如下图所 ...

  7. different between unicorn / unicorn_rails

    $ unicorn_rails -h Usage: unicorn_rails [ruby options] [unicorn_rails options] [rackup config file] ...

  8. setVolumeControlStream(int streamType)

    Android中有如下几种音频流: AudioManager.STREAM_MUSIC  /** The audio stream for music playback */ AudioManager ...

  9. Android计时器实例

    布局文件 <Chronometer android:id="@+id/chronometer" android:layout_width="wrap_content ...

  10. django-cms 代码研究(一)djangocms是什么

    首先用djangocms生成了一个站点(具体参考这里:http://www.cnblogs.com/Tommy-Yu/p/3878488.html),其文件结构如下: 本来以为会很有逼格,结果一看傻眼 ...