JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql
JDBC终章- 使用 DBUtils实现增删查改
1.数据库结构
Create Table CREATE TABLE `user` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
2.工程结构

SRC目录下的 c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="szs">
<property name="user">root</property>
<property name="password">123456</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="acquireIncrement">2</property>
<property name="initialPoolSize">5</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">10</property>
<property name="maxStatements">20</property>
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
具体的JAR 包如下:

3.创建C3P0Utils 数据源
package day_23; import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test; import javax.sql.DataSource;
import java.sql.SQLException; public class C3P0Utils {
private static DataSource ds;
static {
ds=new ComboPooledDataSource("szs"); //这里因为配置文件中没有default,故需要自定义的
}
public static DataSource getDataSource() throws SQLException {
return ds;
}
}
4.创建DBUtilsDao类,实现增删查改
package day_23;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler; import java.sql.SQLException;
import java.util.List; //创建DBUtilsDao类
public class DBUtilsDao {
//查询所有,返回List集合
public List findAll() throws SQLException{
//创建QueryRunner 对象
QueryRunner runner=new QueryRunner(C3P0Utils.getDataSource()) ;
//写SQL语句
String sql="select * from user";
//调用方法
List list=(List)runner.query(sql,new BeanListHandler(User.class));
return list;
}
//查询单个对象的id,返回List集合中的第一个对象
public User find(int id) throws SQLException{
//创建QueryRunner 对象
QueryRunner runner=new QueryRunner(C3P0Utils.getDataSource()) ;
//写SQL语句
String sql="select * from user where id= ?";
//调用方法
List list=(List)runner.query(sql,new BeanListHandler(User.class),id);
return (User)list.get(0);
}
//添加用户的操作
public Boolean insert(User user) throws SQLException{
//创建QueryRunner 对象
QueryRunner runner=new QueryRunner(C3P0Utils.getDataSource()) ;
//写SQL语句
String sql="insert into user (name,password) values (?,?)";
//调用方法
int num=runner.update(sql,new Object[]{user.getName(),user.getPassword()});
if(num>0){
System.out.println("添加用户成功!");
return true;
}
else
return false;
}
//修改用户的操作
public Boolean update(User user) throws SQLException{
//创建QueryRunner 对象
QueryRunner runner=new QueryRunner(C3P0Utils.getDataSource()) ;
//写SQL语句
String sql="update user set name=?,password=? where id=?";
//调用方法
int num=runner.update(sql,new Object[]{user.getName(),user.getPassword(),user.getId()});
if(num>0){
System.out.println("更新用户成功!");
find(user.getId()).toString();
return true;
}
else
return false;
}
//删除用户的操作 ,根据用户的id
public Boolean delete(int id) throws SQLException{
//创建QueryRunner 对象
QueryRunner runner=new QueryRunner(C3P0Utils.getDataSource()) ;
//写SQL语句
String sql="delete from user where id =?";
//调用方法
int num=runner.update(sql,id);
if(num>0){
System.out.println("删除用户成功!");
return true;
}
else
return false;
} }
5.测试DBUtilsDao类的 增(insert)删查改,四个功能
package day_23; import java.sql.SQLException;
import java.util.List; //测试增(insert)删查改,四个功能
public class DBUtilsDaoTest {
private static DBUtilsDao dao=new DBUtilsDao(); public static void testInsert() throws SQLException{
User user=new User();
user.setId(1);
user.setName("赵六");
user.setPassword("666666");
boolean b=dao.insert(user);
System.out.println(b);
}
public static void testDelete() throws SQLException{
System.out.println(dao.delete(1));
}
public static void testfind() throws SQLException {
System.out.println(dao.find(2));
}
public static void testfindAll() throws SQLException{
List<User> users= dao.findAll();
for(int i=0;i<users.size();i++)
System.out.println(users.get(i));
}
public static void testUpdate() throws SQLException{
User user=new User();
user.setId(5);
user.setName("赵六66");
user.setPassword("666666");
boolean b=dao.insert(user);
System.out.println(b);
}
public static void main(String[] args) throws SQLException {
testInsert();
testDelete();
testUpdate();
testfind();
testfindAll(); }
}
6.最终控制台的结果展示
添加用户成功!
true
false
添加用户成功!
true
User{id=2, name='李四', password='123456'}
User{id=2, name='李四', password='123456'}
User{id=3, name='王五', password='123456'}
User{id=4, name='赵六', password='666666'}
User{id=5, name='赵六', password='666666'}
User{id=6, name='赵六66', password='666666'}
User{id=7, name='赵六', password='666666'}
User{id=8, name='赵六66', password='666666'}
JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql的更多相关文章
- JDBC课程4--使用PreparedStatement进行增删查改--封装进JDBCTools的功能中;模拟SQL注入 ; sql的date()传入参数值格式!
主要内容: /*SQL 的date()需要传入参数值: preparedStatement().setDate(new java.util.Date().getTime()); 熟悉了使用Prepar ...
- DButils实现增删查改
获取数据库连接 static Connection con=JdbcUtils.MyUtils();//这个连接类静态获取要自己定义 插入 public static void insert() th ...
- 利用dbutils工具实现数据的增删查改操作(dbutis入门)
一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...
- [课本]JDBC课程6--使用JDBC的DAO模块化--完成数据库的增删查改_工具类JDBCTools四个(Preparedstatement)功能模块的敲定版
(课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(cre ...
- 在Eclipse上实现简单的JDBC增删查改操作
在Javaweb的学习里,学到了如何完成简单的增删查改操作,在这里撰写一篇文章以便自己整理回忆. 首先要建立一些包和导入一些文件.建一些类.具体框架如图 编写Product类 public clas ...
- jdbc的实例应用:增删查改实现
//在jdbc中进行增删查改 //查看所有 public static void findAll() { String url = "jdbc:mysql://localhost:3306/ ...
- 2015.8.2 jdbc实现商品类的增删查改
在惠普济宁基地进行了两周sql和java的学习,学到很多东西 刚才实现了用jdbc访问数据库对数据库进行操作,是用eclipse写的,过几天移植到NetBeans上,个人还是比较习惯看图形化界面 前几 ...
- JDBC+Servlet+jsp(增删查改)
先在mysql新增数据库和表先,把下面的几句代码复制去到mysql运行就可以创建成功了! 创建数据库 create database jdbc01 character set utf8 collat ...
- hibernate基础增删查改简单实例
hibernate 基础理论知识网上很多,可以百度和google.这里不做多的介绍,以一个User表来开展例子 建一个web-project 我这里用了junit单元测试环境来进行增删查改的测试,别的 ...
随机推荐
- 用anaconda保证64位和32位的python共存
conda info # 查看当前工作平台 set CONDA_FORCE_32BIT=1 # 切换到32位 set CONDA_FORCE_32BIT=0 # 切换到64位 conda create ...
- Java学习,从入门到放弃(一)SpringMVC+Maven+Mybits 多种数据库配置(mysql+sqlserver)AOP方式
多数据库配置需求有两种,一种是因为项目太大,访问量太高,不得不分布多个数据库减轻访问压力,比较多的应用就是读写分离:另一种就是原本不同的两个数据库业务现在要整合到一起,甚至连数据库都不一样,一个mys ...
- WIN10桌面无创建文件夹选项,无法创建文件
在桌面或其他磁盘,右键没有新建选项,无法新建文件夹或文档. 右键桌面左下角开始按钮,点击:命令提示符(管理员) 弹出,Windows命令处理程序对话框,点击是 粘贴内容: cmd /k r ...
- LeetCode 108. 将有序数组转换为二叉搜索树(Convert Sorted Array to Binary Search Tree) 14
108. 将有序数组转换为二叉搜索树 108. Convert Sorted Array to Binary Search Tree 题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索 ...
- 自然语言处理(简称NLP)
自然语言处理(简称NLP),是研究计算机处理人类语言的一门技术,包括: 1.句法语义分析:对于给定的句子,进行分词.词性标记.命名实体识别和链接.句法分析.语义角色识别和多义词消歧. 2.信息抽取:从 ...
- vw、vh、vmin、vmax 的含义
像 px.em 这样的长度单位大家肯定都很熟悉,前者为绝对单位,后者为相对单位.CSS3 又引入了新单位:vw.vh.vmin.vmax.下面对它们做个详细介绍. 一.基本说明 1,vw.vh.v ...
- [转帖]Linux文件系统详解
Linux文件系统详解 https://www.cnblogs.com/alantu2018/p/8461749.html 贼复杂.. 从操作系统的角度详解Linux文件系统层次.文件系统分类.文件系 ...
- 第五章 模块之 struct、dis、正则表达式、异常处理
5.15 struct模块 pack 能够把所有的数字都固定的转换成4字节 5.16 dis dis.dis 查看计算机指令 5.16 正则表达式 基础 正则表达式概念: 是一种规则(元字符,量词) ...
- Win32小游戏--贪吃蛇
近日里学习了关于win32编程的相关知识,利用这些知识制作了一款贪吃蛇小游戏,具体细节还是分模块来叙述 前期准备:在网上找到一些贪吃蛇的游戏素材图片,以及具体的逻辑框图 在正式写功能之前,先把一系列环 ...
- springboot处理事务
ssh ssm都有事务管理service层通过applicationContext.xml配置,所有service方法都加上事务操作: 用来保证一致性,即service方法里的多个dao操作,要么同时 ...