使用c3p0连接数据库实现增删改查

学习spring之前,视频中先给我们一个任务就是用c3p0连接数据库来完成增删改查

一、准备     

JAR包:

既然是连接数据库第一个最重要的就是数据库的驱动包mysql-connection-java-5.1.44-bin.jar

接着就是C3P0-0.9.2.1.jar以及mchange-commons-java-0.2.3.4.jar

然后还少不了dbutils 使用的是commons-dbutils-1.7.jar

一共是4个JAR包

二、配置 

配置数据库连接:

创建c3p0-config.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://localhost:3306/mybatis</property>
 <property name="user">root</property>
 <property name="password">123</property>
 <property name="acquireIncrement">5</property>
 <property name="initialPoolSize">10</property>
 <property name="minPoolSize">5</property>
 <property name="maxPoolSize">20</property>
 </default-config>
</c3p0-config>

创建C3P0Util.java 使用ComboPooledDataSource的对象获取数据库连接

package util;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Util {

 private static ComboPooledDataSource ds=new ComboPooledDataSource();

 //获取数据源
 public static DataSource getDataSource(){
 return ds;
 }
 //获取一个连接
 public static Connection getConnection() throws SQLException{
 return ds.getConnection();
 }
}

由于没有使用Mybatis的逆向工程,这里需要手动创建Customer.java 用于获取数据库表的所有列

package domain;

import java.io.Serializable;

public class Customer implements Serializable{

 private int cust_id;
 private String cust_name;
 private String cust_source;
 private String cust_industry;
 private String cust_level;
 private String cust_address;
 private String cust_phone;
 public int getCust_id() {
  return cust_id;
 }
 public void setCust_id(int cust_id) {
  this.cust_id = cust_id;
 }
 public String getCust_name() {
  return cust_name;
 }
 public void setCust_name(String cust_name) {
  this.cust_name = cust_name;
 }
 public String getCust_source() {
  return cust_source;
 }
 public void setCust_source(String cust_source) {
  this.cust_source = cust_source;
 }
 public String getCust_industry() {
  return cust_industry;
 }
 public void setCust_industry(String cust_industry) {
  this.cust_industry = cust_industry;
 }
 public String getCust_level() {
  return cust_level;
 }
 public void setCust_level(String cust_level) {
  this.cust_level = cust_level;
 }
 public String getCust_address() {
  return cust_address;
 }
 public void setCust_address(String cust_address) {
  this.cust_address = cust_address;
 }
 public String getCust_phone() {
  return cust_phone;
 }
 public void setCust_phone(String cust_phone) {
  this.cust_phone = cust_phone;
 }
 @Override
 public String toString() {
  return "Customer [cust_id=" + cust_id + ", cust_name=" + cust_name
   + ", cust_source=" + cust_source + ", cust_industry="
   + cust_industry + ", cust_level=" + cust_level
   + ", cust_address=" + cust_address + ", cust_phone="
   + cust_phone + "]";
 }
}

三、接口

上面的配置文件和数据库表信息文件都已经写好了,现在需要写两个接口提供所有的增删改查的方法

创建ICustomerDao.java 持久层接口 ,也就是最底层和数据库连接的接口类

package dao;

import java.util.List;
import domain.Customer;
public interface ICustomerDao {

 List<Customer> findAllCustomer();
 void saveCustomer(Customer customer);
 void updateCustomer(Customer customer);
 void deleteCustomer(int custId);
 Customer findCustomerById(int custId);

}

创建ICustomerService.java 业务层接口,用于持久层和客户端连接的接口类,和Dao的方法一样

package service;

import java.util.List;

import domain.Customer;

public interface ICustomerService {

 //查询所有客户
 List<Customer> findAllCustomer();
 //保存客户信息
 void saveCustomer(Customer customer);
 //更改客户信息
 void updateCustomer(Customer customer);
 //根据Id删除对象
 void deleteCustomer(int cust_id);
 //根据ID查询用户,返回用户信息
 Customer findCustomerById(int cust_id);
}

四、实现类

创建CustomerDao.java 实现Dao接口,利用C3P0里的QueryRunner类获取到数据库连接信息连接数据库

并将SQL语句传给数据库然后得到SQL的返回值。

package dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import dao.ICustomerDao;
import domain.Customer;
import util.C3P0Util;

//客户的持久层实现类
public class CustomerDao implements ICustomerDao {

 private QueryRunner runner=new QueryRunner(C3P0Util.getDataSource());
 @Override
 public List<Customer> findAllCustomer() {
 try {
  return runner.query("select * from cst_customer", new BeanListHandler<Customer>(Customer.class));
 } catch (SQLException e) {
  throw new RuntimeException(e);
 }
 }

 @Override
 public void saveCustomer(Customer customer) {
 try {
  runner.update("insert into cst_customer(cust_name,cust_source,cust_industry,cust_level,cust_address,cust_phone)values(?,?,?,?,?,?)",
   customer.getCust_name(),customer.getCust_source(),customer.getCust_industry(),
   customer.getCust_level(),customer.getCust_address(),customer.getCust_phone());
 } catch (SQLException e) {
  throw new RuntimeException(e);
 }

 }

 @Override
 public void updateCustomer(Customer customer) {
 try {
  runner.update("update cst_customer set cust_name=?,cust_source=?,cust_industry=?,cust_level=?,cust_address=?,cust_phone=? where cust_id=?",
   customer.getCust_name(),customer.getCust_source(),customer.getCust_industry(),
   customer.getCust_level(),customer.getCust_address(),customer.getCust_phone(),customer.getCust_id());
 } catch (SQLException e) {
  throw new RuntimeException(e);
 }
 }

 @Override
 public void deleteCustomer(int custId) {
 try {
  runner.update("delete from cst_customer where cust_id=?",custId);
 } catch (SQLException e) {
  throw new RuntimeException(e);
 }
 }

 @Override
 public Customer findCustomerById(int custId) {
 try {
  return runner.query("select * from cst_customer where cust_id=?", new BeanHandler<Customer>(Customer.class),custId);
 } catch (SQLException e) {
  throw new RuntimeException(e);
 }
 }

}

创建CustomerService.java 实现业务层,将需要查询的数据传给Dao层,并得到Dao层的返回值。

package service;

import java.util.List;

import dao.ICustomerDao;
import dao.impl.CustomerDao;
import domain.Customer;

//客户的业务层实现类
public class CustomerServiceImpl implements ICustomerService {

 private ICustomerDao customerDao=new CustomerDao();
 @Override
 public List<Customer> findAllCustomer() {
 // TODO Auto-generated method stub
 return customerDao.findAllCustomer();
 }

 @Override
 public void saveCustomer(Customer customer) {
 customerDao.saveCustomer(customer);

 }

 @Override
 public void updateCustomer(Customer customer) {
 customerDao.updateCustomer(customer);

 }

 @Override
 public void deleteCustomer(int custId) {
 customerDao.deleteCustomer(custId);
 }

 @Override
 public Customer findCustomerById(int custId) {
 // TODO Auto-generated method stub
 return customerDao.findCustomerById(custId);
 }

}

五、测试类

创建CustomerServiceTest.java 获取CustomerServiceImpl所有方法的测试方法

该类中在方法里创建CustomerServiceImpl对象 获取原始方法,将参数传入Customer中,通过CustomerService获取到返回值并打印。

package test;

import static org.junit.Assert.fail;

import java.util.List;

import org.junit.Test;

import domain.Customer;
import service.CustomerServiceImpl;
import service.ICustomerService;

public class CustomerServicerTest {

 @Test
 public void testFindAllCustomer() {
 ICustomerService cs=new CustomerServiceImpl();
 List<Customer> list=cs.findAllCustomer();
 for(Customer c: list){
  System.out.println(c);
 }
 }

 @Test
 public void testSaveCustomer() {
 ICustomerService cs=new CustomerServiceImpl();
 Customer c=new Customer();
 c.setCust_name("滴滴");
 c.setCust_source("dache");

 cs.saveCustomer(c);
 }

 @Test
 public void testUpdateCustomer() {
 fail("Not yet implemented");
 }

 @Test
 public void testDeleteCustomer() {
 fail("Not yet implemented");
 }

 @Test
 public void testFindCustomerById() {
 ICustomerService cs=new CustomerServiceImpl();
 Customer c=cs.findCustomerById(2);
 System.out.println(c);
 }

}

至此C3P0连接数据库进行单表增删改查功能完结。附上结构图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java数据库连接池之c3p0简介_动力节点Java学院整理

    c3p0是什么 c3p0的出现,是为了大大提高应用程序和数据库之间访问效率的. 它的特性: 编码的简单易用 连接的复用 连接的管理 说到c3p0,不得不说一下jdbc本身,c3p0愿意就是对数据库连接的管理,那么原有的概念还是得清晰:DriverManager.Connection.StateMent.ResultMent. jdbc:java database connective这套API,不用多说,是一套用于连接各式dbms或连接桥接器的api,两个层级:上层供应用方调用api,下层,定义

  • 数据库连接池c3p0配置_动力节点Java学院整理

    c3p0的配置方式分为三种,分别是 1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件 1.setters一个个地设置各个配置项 这种方式最繁琐,形式一般是这样: Properties props = new Properties(); InputStream in = ConnectionManager.class.getResourceAsStream("/c3p0.properties&q

  • 详解springboot 使用c3p0数据库连接池的方法

    使用springboot开发时,默认使用内置的tomcat数据库连接池,经常碰到这种情况:运行时间一长,数据库连接中断了.所以使用c3p0连接池吧. 引入的maven依赖: <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> c3p0的配置信息,写到

  • JDBC利用C3P0数据库连接池连接数据库

    JDBC之C3P0数据库连接池,供大家参考,具体内容如下 1 首先在src中创建c3p0-config.xml 配置文件,文件中内容如下(首先下载C3P0.jar工具包 并放入项目环境变量中) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xml> <c3p0-config> <!--下面四个是数据库连接必须需要的东西 --> <named-config nam

  • 使用c3p0连接数据库实现增删改查

    学习spring之前,视频中先给我们一个任务就是用c3p0连接数据库来完成增删改查 一.准备      JAR包: 既然是连接数据库第一个最重要的就是数据库的驱动包mysql-connection-java-5.1.44-bin.jar 接着就是C3P0-0.9.2.1.jar以及mchange-commons-java-0.2.3.4.jar 然后还少不了dbutils 使用的是commons-dbutils-1.7.jar 一共是4个JAR包 二.配置  配置数据库连接: 创建c3p0-co

  • Qt连接数据库并实现数据库增删改查的图文教程

    目录 1.连接数据库 2.查询数据库并显示在QTableView上 3.添加 4.修改 5.删除 6.总代码 总结 根据自己学习的内容,有关QTableView显示数据库,并实现数据库的增删改查,在这里做下总结. 1.连接数据库 先来看下连接数据库的效果图. “连接数据库”按钮的槽函数如下: void MainWindow::on_pushButton_connectDataBase_clicked() { //连接数据库 db.setHostName("127.0.0.1"); db

  • PHP连接数据库实现注册页面的增删改查操作

    本文实例为大家分享了PHP连接数据库实现注册页面的增删改查操作的方法,供大家参考,具体内容如下 1.连接数据库 <?php //本地测试 $host = '127.0.0.1'; $port = 3306; $user = "root"; $pwd = ""; $link = @mysql_connect("{$host}:{$port}",$user,$pwd,true); if(!$link) { die("Connect S

  • 使用PHP连接数据库_实现用户数据的增删改查的整体操作示例

    main页面(主页面) <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>姓名</td> <td>性别</td> <td>民族</td> <td>生日</td> &l

  • Java连接数据库,及增删改查的示例

    自定义连接数据库的util类 package com.shuzf.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtil { // 定义驱动器类的路径 private static final String DRI

  • PHP连接数据库实现页面增删改查效果

    目录 效果图 实现代码 sql cyg.php delete.php update.php create.php 效果图 实现代码 sql -- phpMyAdmin SQL Dump -- version 4.5.1 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2022-03-15 17:51:32 -- 服务器版本: 10.1.13-MariaDB -- PHP Version: 5.6.21

  • JavaWeb 使用DBUtils实现增删改查方式

    目录 JavaWeb 使用DBUtils实现增删改查 1.创建C3p0Utils类 2.创建DBUtilsDao类 3.创建测试类 4.执行测试类 Java DBUtils技术访问数据库 DBUtils 介绍 对数据库的查询语句的代码 JavaWeb 使用DBUtils实现增删改查 1.创建C3p0Utils类 创建cn.itcast.jdbc.utils包 代码如下: package cn.itcast.jdbc.utils; import javax.sql.DataSource; impo

  • 详解Nodejs基于mongoose模块的增删改查的操作

    MongoDB MongoDB是基于Javascript语言的数据库,存储格式是JSON,而Node也是基于JavaScript的环境(库),所以node和mongoDB的搭配能减少因为数据转换带来的时间空间开销. Mongoose 是MongoDB的一个对象模型工具,它将数据库中的数据转换为JavaScript对象以供你在应用中使用,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单. 安装模块mongoose npm install

  • java操作mysql实现增删改查的方法

    本文实例讲述了java操作mysql实现增删改查的方法.分享给大家供大家参考,具体如下: 首先,需要把MySQL与Java连接的jar(mysql-connector-java-5.1.6-bin.jar)包导入工程. package com.cn.edu; import java.beans.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatemen

  • Java语言实现对MySql数据库中数据的增删改查操作的代码

    简单说操作的步骤: 1.连接数据库 2.将SQL语句发送到数据库 3.执行SQL语句 这里举个例子: 在一个数据库中有个students表,表中有学号(Id),姓名(Name),性别(Sex),地址(Address),电话(Phone),专业(Dept). 这里把这个表写成一个学生信息类(Info_student) (请先确保看了例子说明,不然代码有的地方可能看不明白) 要实现操纵我们首先得连接数据库,因为每个操作都要进行连接操作,所以我们直接把连接的操作封装在一个类中,需要连接的时候直接调用可

随机推荐