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数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
随机推荐
- Spring AOP 系列总括
Spring有两大核心,IOC和AOP.IOC在Java Web项目中无时无刻不在使用,然而AOP用的比较少,尤其是对一些初级程序员,在架构师搭好的框架上开发应用代码,AOP几乎是透明的.然而,项目中 ...
- MyEclipse------如何在特定目录下创建文件夹
Directory.jsp <%@ page language="java" import="java.util.*" pageEncoding=&quo ...
- jQuery操作滚动条
一.窗体滚动条 1.获取窗体滚动条当前纵向和横向位置 var currentY=$(document.body).scrollTop();//窗体滚动条纵向位置 var currentX=$(docu ...
- Matlab中的括号()[]{}
Matlab中的括号()[]{} Matlab中经常会用到括号去引用某Array或者是cell的内容,但三者有什么具体区别呢?[ ] 中括号用来构建向量(Vectors)或者是矩阵(Matrices) ...
- Lex和Yacc入门
Lex和Yacc入门 标签: lexyacc 2013-07-21 23:02 584人阅读 评论(0) 收藏 举报 分类: Linux(132) 原文地址:http://coanor.blog ...
- PHP数据访问
<?php //作业:把INFO表查出来用表格显示 //1.造一个连接对象 $db = new MySQLi("localhost","root",&qu ...
- 微信智慧KTV上线 不怕周末订不到包厢了
周末邀三五好友唱唱歌是件惬意的事,可订包厢是个烦心事,总是people mountain people sea,而且价格比平时高出不少.现在好了,微信智慧KTV上线了,将有效解决传统KTV收银时间集中 ...
- hdu.5203.Rikka with wood sticks(数学推导:一条长度为L的线段经分割后可以构成几种三角形)
Rikka with wood sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- ruby : Exception Notification
https://github.com/smartinez87/exception_notification#sections Add the following line to your applic ...
- grep与egrep
当只有一个匹配条件时:egrep pattern file等价于grep -E pattern file 例如: 当多个匹配条件时,只能用egrep -e pattern1 -e pattern2 - ...