c3p0和QueryRunner的结合使用,让开发更加简便

02-使用C3P0连接池连接MySql并且使用QueryRunner简化数据库操作 1.导入相应的JARs mysql驱动jar包:mysql-connector-java-5.1.28-bin.jar C3P0需要的jar包:c3p0-0.9.2-pre1.jar和mchange-commons-0.2.jar 2.在src下添加C3P0配置文件:c3p0-config.xml jdbc:mysql://localhost:3306/grain com 阅读详情

1:DBUtils中的QueryRunner的使用:

  1.1:QueryRunner中提供了对SQL语句操作的api;

  1.2:主要有三个方法:

    1.2.1:query():用于执行select(查询);

    1.2.2:update():用于执行insert(插入)/update(更新)/delete(删除);

    1.2.3:batch():批处理;


2:c3p0和QueryRunner的结合使用:

  2.1:首先导包,如下所示的包;

    c3p0-0.9.1.2.jar
    commons-dbutils-1.6.jar
    mysql-connector-java-5.1.12-bin.jar  

   2.2:当然导包之前你需要创建好数据库和数据表哦!~~~ 

      在src目录下面记住配置c3p0-config.xml文件

 1 <c3p0-config>
 2     
 3     <!-- c3p0默认配置,下面还可以配置多个数据库 -->
 4     <default-config>
 5         <property name="jdbcUrl">jdbc:mysql://localhost:3306/test
 6         </property>
 7         <property name="driverClass">com.mysql.jdbc.Driver</property>
 8         <property name="user">root</property>
 9         <property name="password">123456</property>
10         <property name="initialPoolSize">6</property>
11         <property name="maxPoolSize">50</property>
12         <property name="maxIdleTime">1000</property>
13     </default-config>
14 
15 </c3p0-config>

   2.3:创建实体类,如User.java,源码如下,

 1 package com.bie.po;
 2 /** 
 3 * @author BieHongLi 
 4 * @version 创建时间:2017年3月11日 下午12:55:21 
 5 * 
 6 */
 7 public class User {
 8 
 9     private int id;
10     private String name;
11     private String password;
12     private String email;
13     private String phone;
14     public int getId() {
15         return id;
16     }
17     public void setId(int id) {
18         this.id = id;
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     public String getPassword() {
27         return password;
28     }
29     public void setPassword(String password) {
30         this.password = password;
31     }
32     public String getEmail() {
33         return email;
34     }
35     public void setEmail(String email) {
36         this.email = email;
37     }
38     public String getPhone() {
39         return phone;
40     }
41     public void setPhone(String phone) {
42         this.phone = phone;
43     }
44     @Override
45     public String toString() {
46         return "User [, name=" + name + ", password=" + password + ", email=" + email + ", phone=" + phone
47                 + "]";
48     }
49     
50     
51 }
View Code

  2.4:创建好实体类之后就可以根据MVC模式分层进行开发,这里只是模拟,所以创建dao层和servic层和test层。test层进行测试;

    所以先创建dao层进行创建接口,再创建实现接口的类,当然实现c3p0和QueryRunner的关键代码就是dao层哦,切记;

    当然了还有工具类utils层提取的公共的方法;

 1 package com.bie.dao;
 2 
 3 import java.util.List;
 4 
 5 import com.bie.po.User;
 6 
 7 /** 
 8 * @author BieHongLi 
 9 * @version 创建时间:2017年3月11日 下午5:46:38 
10 * 
11 */
12 public interface UserDao {
13 
14     /***
15      * 查询所有的用户信息
16      * @return
17      */
18     public List<User> selectUser();
19     
20     /***
21      * 根据编号查询
22      * @param id
23      * @return
24      */
25     public User selectUserId(int id);
26     
27     
28     /***
29      * 根据条件查询信息
30      * @param user
31      * @return
32      */
33     public List<User> select(String sql,List<Object> list);
34     
35     
36 }
View Code
 1 package com.bie.dao.impl;
 2 
 3 import java.util.List;
 4 
 5 import org.apache.commons.dbutils.QueryRunner;
 6 import org.apache.commons.dbutils.handlers.BeanHandler;
 7 import org.apache.commons.dbutils.handlers.BeanListHandler;
 8 
 9 import com.bie.dao.UserDao;
10 import com.bie.po.User;
11 import com.bie.util.BaseUtils;
12 
13 /** 
14 * @author BieHongLi 
15 * @version 创建时间:2017年3月11日 下午5:47:35 
16 * 
17 */
18 public class UserDaoImpl implements UserDao{
19 
20     @Override
21     public List<User> selectUser() {
22         //创建QueryRunner
23         //记住查询是BeanListHandler区别增删改的方法BeanHandler
24         QueryRunner qr=BaseUtils.getQueryRunner();
25         try {
26             String sql="select * from user ";
27             //这句话就相当于之前写的下面这一长串代码,这就是QueryRunner的方便之处
28             /***
29              *User user=new User();
30                user.setId(rs.getInt("id"));
31                user.setName(rs.getString("name"));
32                user.setPassword(rs.getString("password"));
33                user.setEmail(rs.getString("email"));
34                user.setPhone(rs.getString("phone"));
35              */
36             return qr.query(sql, new BeanListHandler<User>(User.class));
37             
38         } catch (Exception e) {
39             e.printStackTrace();
40         }
41         return null;
42     }
43 
44     @Override
45     public User selectUserId(int id) {
46         //创建QueryRunner
47         QueryRunner qr=BaseUtils.getQueryRunner();
48         String sql="select * from user where id=? ";
49         try {
50             //使用QueryRunner的强大之处在于此处。
51             return qr.query(sql,new BeanHandler<User>(User.class), id);
52         } catch (Exception e) {
53             e.printStackTrace();
54         }
55         return null;
56     }
57 
58 
59     public List<User> select(String sql,List<Object> list) {
60         //创建QueryRunner
61         QueryRunner qr=BaseUtils.getQueryRunner();
62         try {
63             //第一个参数是传来的sql,第二个是实现实体类的设置,第三个是集合转化为数组
64             return qr.query(sql, new BeanListHandler<User>(User.class), list.toArray());
65             
66         } catch (Exception e) {
67             e.printStackTrace();
68         }
69         return null;
70     }
71 
72     
73 }

  这里将BaseUtils类写到这里,因为这个也是c3p0和QueryRunner的核心啊!!!

 1 package com.bie.util;
 2 
 3 import java.sql.SQLException;
 4 import java.util.List;
 5 
 6 import javax.sql.DataSource;
 7 
 8 import org.apache.commons.dbutils.QueryRunner;
 9 
10 import com.mchange.v2.c3p0.ComboPooledDataSource;
11 
12 /** 
13 * @author BieHongLi 
14 * @version 创建时间:2017年3月11日 下午1:29:50 
15 * 数据库连接工具类
16 */
17 public class BaseUtils {
18 
19     //初始化c3p0
20     private static DataSource dataSource=null;
21     
22     static{
23         //自动加载src目录下面的c3p0的配置文件,【c3p0-config.xml】
24         dataSource = new ComboPooledDataSource();
25     }
26     
27     public static QueryRunner getQueryRunner(){
28         //第一步:创建QueryRunner对象,传入连接池对象
29         //在创建QueryRunner对象的时候,如果传入数据对象dataSource,
30         //那么在使用QueryRunner对象的方法时候,就不需要传入连接对象
31         QueryRunner query=new QueryRunner(dataSource);
32         //第二步:会自动从数据源中获取连接(不用关闭连接)
33         return query;
34     }
35     
36     /***
37      * 实现增删改的公共方法
38      * @param sql
39      * @param arr
40      * @return
41      */
42     public static boolean addUpdateDelete(String sql,Object[] arr){
43         QueryRunner qr=getQueryRunner();
44         int count;
45         try {
46             count = qr.update(sql, arr);
47             if(count>0){
48                 return true;
49             }else{
50                 return false;
51             }
52         } catch (SQLException e) {
53             e.printStackTrace();
54         }
55         return false;
56     }
57     
58 }

  2.5:完成dao层和BaseUtils层之后可以直接在service层进行增删改,dao层就不用写了;

 1 package com.bie.service;
 2 
 3 import java.util.List;
 4 
 5 import com.bie.po.User;
 6 
 7 /** 
 8 * @author BieHongLi 
 9 * @version 创建时间:2017年3月11日 下午7:10:32 
10 * 
11 */
12 public interface UserService {
13 
14     /***
15      * 根据条件查询用户信息
16      * @param user
17      * @return
18      */
19     public List<User> select(User user);
20     
21     /***
22      * 添加用户信息
23      * @param user
24      * @return
25      */
26     public boolean insertUser(User user);
27     
28     /***
29      * 修改用户的信息
30      * @param user
31      * @return
32      */
33     public boolean updateUser(User user);
34     
35     /***
36      * 删除用户信息
37      * @param id
38      * @return
39      */
40     public boolean deleteUser(int id);
41 }
View Code
  1 package com.bie.service.impl;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 
  6 import com.bie.dao.UserDao;
  7 import com.bie.dao.impl.UserDaoImpl;
  8 import com.bie.po.User;
  9 import com.bie.service.UserService;
 10 import com.bie.util.BaseUtils;
 11 
 12 /** 
 13 * @author BieHongLi 
 14 * @version 创建时间:2017年3月11日 下午7:10:48 
 15 * 
 16 */
 17 public class UserServiceImpl implements UserService{
 18     
 19     private UserDao dao=new UserDaoImpl();
 20     
 21     @Override
 22     public List<User> select(User user) {
 23         StringBuilder sql=new StringBuilder("select * from user where 1=1 ");
 24         List<Object> list=new ArrayList<Object>();
 25         if(user!=null){
 26             //根据编号查询
 27             if(user.getId()!=0 && !"".equals(user.getId())){
 28                 sql.append(" and id = ? ");
 29                 list.add(user.getId());
 30             }
 31             
 32             //根据名称模糊查询,模糊查询"" %% "" ++
 33             if(user.getName()!=null && !"".equals(user.getName())){
 34                 sql.append(" and name like ? ");
 35                 list.add("%"+user.getName()+"%");
 36             }
 37         }
 38         
 39         return dao.select(sql.toString(), list);
 40     }
 41 
 42     @Override
 43     public boolean insertUser(User user) {
 44         String sql="insert into user values(0,?,?,?,?)";
 45         List<Object> list=new ArrayList<>();
 46         if(user!=null){
 47             list.add(user.getName());
 48             list.add(user.getPassword());
 49             list.add(user.getEmail());
 50             list.add(user.getPhone());
 51         }
 52         try {
 53             return BaseUtils.addUpdateDelete(sql, list.toArray());
 54         } catch (Exception e) {
 55             e.printStackTrace();
 56         }
 57         return false;
 58     }
 59 
 60     @Override
 61     public boolean updateUser(User user) {
 62         String sql="update user set name=?,password=?,email=?,phone=? where id=? ";
 63         List<Object> list=new ArrayList<>();
 64         if(user!=null){
 65             list.add(user.getName());
 66             list.add(user.getPassword());
 67             list.add(user.getEmail());
 68             list.add(user.getPhone());
 69             
 70             //根据编号修改信息
 71             list.add(user.getId());
 72         }
 73         
 74         try {
 75             return BaseUtils.addUpdateDelete(sql, list.toArray());
 76         } catch (Exception e) {
 77             e.printStackTrace();
 78         }
 79         return false;
 80     }
 81 
 82     @Override
 83     public boolean deleteUser(int id) {
 84         String sql="delete from user where id=? ";
 85         List<Object> list=new ArrayList<>();
 86         if(id!=0){
 87             //根据编号修改信息
 88             list.add(id);
 89         }
 90         
 91         try {
 92             return BaseUtils.addUpdateDelete(sql, list.toArray());
 93         } catch (Exception e) {
 94             e.printStackTrace();
 95         }
 96         return false;
 97     }
 98 
 99     
100 }
View Code

  2.6:使用junit测试,完成使用c3p0和QueryRunner的练习;

 1 package com.bie.test;
 2 
 3 import java.util.List;
 4 
 5 import org.junit.Test;
 6 
 7 import com.bie.dao.UserDao;
 8 import com.bie.dao.impl.UserDaoImpl;
 9 import com.bie.po.User;
10 import com.bie.service.UserService;
11 import com.bie.service.impl.UserServiceImpl;
12 
13 /** 
14 * @author BieHongLi 
15 * @version 创建时间:2017年3月11日 下午5:57:25 
16 * 
17 */
18 public class QueryRunnerTest {
19 
20     private UserDao dao=new UserDaoImpl();
21     private UserService service=new UserServiceImpl();
22     
23     //查询所有信息的测试
24     @Test
25     public void selectUser(){
26         List<User> list=dao.selectUser();
27         for(User u:list){
28             System.out.println(u);
29         }
30     }
31     
32     //根绝id查询的信息
33     @Test
34     public void selectUserId(){
35         User user=dao.selectUserId(1);
36         System.out.println(user);
37     }
38     
39     //根据条件查询信息
40     @Test
41     public void select(){
42         User user=new User();
43         user.setName("张三");
44         List<User> list=service.select(user);
45         for(User u:list){
46             System.out.println(u);
47         }
48     }
49     
50     @Test
51     public void insertUser(){
52         User user=new User();
53         user.setName("张三");
54         user.setPassword("123456");
55         user.setEmail("1748@qq.com");
56         user.setPhone("11223");
57         
58         boolean mark=service.insertUser(user);
59         if(mark){
60             System.out.println("插入成功");
61         }else{
62             System.out.println("插入失败");
63         }
64     }
65     
66     
67     @Test
68     public void update(){
69         User user=new User();
70         user.setName("李四");
71         user.setId(1);
72         
73         boolean mark=service.updateUser(user);
74         if(mark){
75             System.out.println("修改成功");
76         }else{
77             System.out.println("修改失败");
78         }
79     }
80     
81     @Test
82     public void delete(){
83         boolean mark=service.deleteUser(1);
84         if(mark){
85             System.out.println("用户信息删除成功");
86         }else{
87             System.out.println("用户信息删除失败");
88         }
89     }
90     
91 }
View Code

演示效果如下所示:


初试成功,等待复试(技术试),加油!!!奋斗吧,小青年

c3p0数据库连接池和QueryRunner类结合使用 文章目录c3p0数据库连接池和QueryRunner类结合使用导包写一个c3p0.properties文件创建ComboPooledDataSource数据源使用QueryRunner对象进行数据库操作 c3p0数据库连接池和QueryRunner类结合使用 导包 首先导入c3p0数据库连接池对应的包和QueryRunner类对应的包,如下图: 写一个c3p0.properties文件 使用c3p0数据库连接池,数据库的配置信息,如driver,url,user,password都可以通过c3p0.pro 阅读详情

相关推荐

c3p0+QueryRunner jar包

c3p0+QueryRunner 对应的jar包 下载 亲测有效 c3p0+QueryRunner 对应的jar包

QueryRunner的使用

QueryRunner的使用 使用JDBC技术是一件繁琐的事情,为了使数据库更加高效,有一种简化jdbc技术的操作–DBUtils。DbUtils(org.apache.commons.dbutils.DbUtils)是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。DbUtils类主要负责装载驱动、关闭连接的常规工作。 QreryRunner类(org.apache.commons.dbutils.QueryRunner) 是

你好,摆渡人的博客 1293

【低空经济】低空无人驾驶航空器运行管理系统设计方案

低空无人驾驶航空器运行管理系统(以下简称“系统”)旨在为低空域内的无人驾驶航空器(UAV)提供高效、安全、智能的运行管理服务。系统通过集成先进的通信、导航、监控、数据处理和人工智能技术,实现对低空域内无人驾驶航空器的实时监控、动态调度、风险评估和应急响应,确保其在复杂空域环境中的安全运行。系统的核心功能包括空域管理、飞行计划审批、实时监控、冲突预警、应急管理和数据分析。空域管理模块负责划分和管理低空域资源,确保不同飞行任务之间的空域隔离和高效利用。

2502_92579126的博客 1140

数据库---MYSQL--JDBC高级 QueryRunner对数据库增删改查

在xml中 注入queryrunner;在queryrunner注入 数据源: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema...

weixin_45881192的博客 478

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4231

手机相机基础技术解析:从硬件到算法的全面指南

手机相机的成像过程可简化为的链路,其核心硬件包括 镜头、CMOS传感器、ISP(图像信号处理器) 以及配套的软件算法。

weixin_44239603的博客 2448

c3p0数据库连接池+threadlocal线程池+DbUtils 进行数据库的操作

为什么要把连接的数据库对象放到threadlocal线程池中?在用户进行数据库访问的时候,我们应该限制他们来对数据库的连接获取个数,应该没人仅限一个,这样可以减轻服务器的负担,并且这种方式能够让其他对象来对数据库进行事务操作时,不用辨别是哪种对象,因为该对象只有一个如何通过连接c3p0数据库连接池获得数据库连接:首先需要c3p0的jar包以及c3p0的配置文件 配置文件的代码如下:<c3p0-co

qq_1460567153罗隽的博客 1158

GD32F303开发实战(一):从零搭建MDK工程与时钟配置详解

本文详细介绍了如何从零开始为GD32F303微控制器搭建一个清晰、可维护的MDK工程模板。内容涵盖开发环境准备、工程目录结构规划、文件分组管理、关键工程配置,并重点解析了时钟树原理,手把手指导配置108MHz系统时钟。通过实战步骤与常见问题排查,帮助开发者构建一个稳定可靠的开发基础,便于后续功能扩展。

weixin_29174141的博客 270

c3p0 参数 模糊查询_c3p0和QueryRunner的结合使用,让开发更加简便

1:DBUtils中的QueryRunner的使用:1.1:QueryRunner中提供了对SQL语句操作的api;1.2:主要有三个方法:1.2.1:query():用于执行select(查询);1.2.2:update():用于执行insert(插入)/update(更新)/delete(删除);1.2.3:batch():批处理;2:c3p0和QueryRunner的结合使用:2.1:首先导...

weixin_39882623的博客 380

多模态论文笔记——BLIP

本文详细介绍这几年AIGC火爆的隐藏功臣,多模态模型:BLIP。

haopinglianlian的博客 2454

AUTOSAR从入门到精通-诊断事件管理模块(DEM)(四)

在 Autosar 中,诊断事件是指在车辆电子系统中发生的特定事件,可以用于诊断和故障排除。DEM模块通过EventId和相关的EventName来表示每个诊断事件。诊断事件的状态代表了监控器的结果,DEM模块通过RTE或其他BSW模块从SW-C接收监控器的结果。DEM模块使用EventId来管理系统中每个诊断事件的状态,并对各个测试结果执行所需的操作,例如存储冻结帧/拓展帧。所有监控器和BSW模块使用EventId作为符号化的EventName来管理诊断事件。

getusushu的博客 1509

c3p0与QueryRunner的结合使用

1.QueryRunner的作用: 其实这个是dbutils中的一个方法。什么是dbutils?它的出现就是封装了jdbc的代码,开发dao层代码的简单框架,使sql语句的执行代码变得更加简洁。 2.使用步骤: (1)导入commons-dbutils-1.7.jar包:https://pan.baidu.com/s/1A0Uhf0gg6666FTpnq-nd9g (2)在JDBCUtil...

liangliang6的博客 474

Python反爬实战|动态渲染+高可用IP代理集群,稳定爬取京东/淘宝10万+商品数据

做Python电商爬虫的同学,应该都对京东、淘宝的反爬机制深有体会——这两个平台的反爬体系,堪称国内网站的天花板,远比普通资讯、政务网站的反爬严格十倍不止。用requests库请求商品列表,返回的永远是只有骨架的空HTML,商品标题、价格、销量全是前端JS异步加载,抓包分析接口发现参数全是加密的signtoken,解密成本无限高;用selenium开无头浏览器爬取,刚爬3-5页就触发风控,页面直接返回403,IP被封禁,甚至连Cookie都直接失效;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1585

idea通过c3p0和QueryRunner对mysql进行增删改查1

c3p0和QueryRunner的结合使用,让开发更加简便 (一)DBUtils中的QueryRunner的使用: 1.1:QueryRunner中提供了对SQL语句操作的api 主要有三个方法: 1.1:query():用于执行select(查询); 1.2:update():用于执行insert(插入)/update(更新)/delete(删除); 1.3:batch():批处理; (二)c3p0和QueryRunner的结合使用 2.1:首先导包,如下所示的包:     c3p0-0.9.1.2

weixin_44769957的博客 774

90. 将 SAP ABAP 内表内容本地导出成 Excel 文件

这里文件扩展名为 csv,全称是 Comma-Separated Values,意思是这种类型的文件内容,由逗号分隔。除了 ASC 之外,另一个可用的选项是 BIN,适用于 PDF,EXE 等二进制文件的导出。支持海量的输入和输出参数,我们这个简单的本地导出场景里,大部分参数都用不上。这个分隔符的添加逻辑,编写在上图红色高亮矩形框内,使用的语法是。本教程有学习者向我提问,询问如何将 ABAP 某某函数的某某输出参数的值,导出成本地 Excel 文件。把这个内表的内容,下载到本地,以本地文件的方式保存。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1742

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: (原创)我对未来的人类的发展,以及AI技术发展的一些思考。
下一篇: grpc-gateway:grpc转换为http协议对外提供服务
new0801
博客等级 码龄10年 55粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值