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数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
随机推荐
- Using a Comparison Function for the Key Type
(这是C++系列随笔的第二篇,这一系列是我练习C++而查的资料) C++ Primer 5th. Ed. pp. 425 ---------------------- Using a Comparis ...
- appium-向右滑动定位
上面5幅欢迎图,要向右滑动4次再点击[立即体验]才可以到首屏 #首页欢迎图滑动4次 for i in range(4): driver.swipe(1200, 200, 10, 200, 1500) ...
- POJ2387 Til the Cows Come Home(SPFA + dijkstra + BallemFord 模板)
Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37662 Accepted ...
- dedecms网站栏目增加缩略图的方法-测试通过
有时候因为网站功能需求,我们需要为织梦程序的栏目页添加缩略图功能,这里有一个栏目添加缩略图的方法,供大家参考 涉及到文件如下(注意备份): dede/catalog_add.php dede/cata ...
- 修改php执行用户,并使其拥有root权限
useradd apachephp vi /etc/httpd/conf/httpd.conf 将组和用户修改成apachephp,重启apache,然后用lsof -i:80查看apache的执行用 ...
- R与JAVA的整合
R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面,JAVA中可以转换R的数据类型调用R的函数,互相 ...
- Linux/Ubuntu tree 命令以树形结构显示文件夹目录结构
1.安装命令工具 sudo apt-get -y install tree 2.可以查看关于tree命令的帮助信息 $ tree --help usage: tree [-adfghilnpqrstu ...
- (源码)自己写的ScrollView里套漂亮的圆角listview(算是漂亮吧。。。)
找了相关的资料终于写完了: http://blog.csdn.net/jamin0107/article/details/6973845 和 http://emmet1988.iteye.com/bl ...
- Leetcode 之Construct Binary Tree(52)
根据先序和中序构造二叉树.根据中序和后序构造二叉树,基础题,采用递归的方式解决,两题的方法类似.需要注意的是迭代器的用法. //先序和中序 TreeNode *buildTree(vector< ...
- TortoiseSVN中图标的含义
今天在使用svn时发现有好多不认识了,所以查了下svn帮助手册.借此总结了下 svn 中图标的含义 一个新检出的工作复本使用绿色的勾做重载.表示Subversion状态 正常. 在开始编辑一个文件后, ...