数据库操作工具-QueryRunner
来源:互联网 发布:如何成为网络漫画家 编辑:程序博客网 时间:2024/06/16 11:10
在相继学习了JDBC和数据库操作之后,我们明显感到编写JDBC代码并非一件轻松的事儿。为了帮助我们更高效的学习工作,从JDBC的繁重代码中解脱出来,老佟给我们详尽介绍了一个简化JDBC操作的组件——DBUtils。我们今天主要学习了它所提供的两个类和一个接口。
组件下载地址:http://commons.apache.org/proper/commons-dbutils/
- DbUtils类(org.apache.commons.dbutils.DbUtils)主要负责装载驱动、关闭连接的常规工作
方法:- close: 检查所提供的参数是不是NULL,如果不是的话,它们就关闭连接、声明和结果集。
- CloseQuietly:避免连接、声明或结果集为NULL的情况被关闭
- CommitAndCloseQuietly(Connection conn):用来提交连接,然后关闭连接,并且在关闭连接时不向上抛出在关闭时发生的一些SQL异常。
- LoadDriver(String driveClassName): 装载并注册JDBC驱动程序,如果成功就返回TRUE。
- QreryRunner类(org.apache.commons.dbutils.QueryRunner) 显著的简化了SQL查询,并与ResultSetHandler协同工作将使编码量大为减少
- query(Connection conn, String sql, Object[] params, ResultSetHandler rsh):执行选择查询,在查询中,对象阵列的值被用来作为查询的置换参数。
- query(String sql, Object[] params, ResultSetHandler rsh):方法本身不提供数据库连接,执行选择查询,在查询中,对象阵列的值被用来作为查询的置换参数。
- query(Connection conn, String sql, ResultSetHandler rsh):执行无需参数的选择查询。
- update(Connection conn, String sql, Object[] params):被用来执行插入、更新或删除(DML)操作。
ResultSetHandler接口(org.apache.commons.dbutils.ResultSethandler)执行处理一个结果集对象,将数据转变并处理为任何一种形式,供其他应用使用。
Object handle (java.sql.ResultSet .rs) :结果集(ResultSet)作为参数传入方法内,处理这个结果集,返回一个对象。
ArrayHandlerArrayListHandlerBeanHandlerBeanListHandlerMapHandlerMapListHandlerScalarHandler
学习了此组件的两个类和一个接口以后,写了下列代码供参考:
import java.sql.Connection;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanListHandler;public class TestQueryRunner { public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub //queryOracle(); update(); } private static void update() throws SQLException{ QueryRunner runner = new QueryRunner(); Connection conn = DBManager.getConnection(); //删除非 manager 中工资 低于 5000 的员工 String sql = "UPDATE examstudent SET student_name = ? WHERE flow_id = ?"; Object [] params = new Object[]{"Jerry", 5000}; runner.update(conn, sql, params); } private static void insert() throws SQLException{ QueryRunner runner = new QueryRunner(); Connection conn = DBManager.getConnection(); //删除非 manager 中工资 低于 5000 的员工 String sql = "INSERT INTO examstudent(flow_id, type, id_card, exam_card, student_name, location, grade) VALUES(?, ?, ?, ?, ?, ?, ?)"; Object [] params = new Object[]{5000, 6, "身份证", "准考证", "Tom", "北京", 99}; runner.update(conn, sql, params); } private static void delete() throws SQLException{ QueryRunner runner = new QueryRunner(); Connection conn = DBManager.getConnection(); //删除非 manager 中工资 低于 5000 的员工 String sql = "delete from employees " + "where employee_id not in " + " (select distinct d.manager_id from departments d where d.manager_id is not null) " + "and salary < ?"; System.out.println(sql); Object [] params = new Object[]{5000}; runner.update(conn, sql, params); } private static void queryOracle() throws SQLException{ QueryRunner runner = new QueryRunner(); Connection conn = DBManager.getConnection(); //oracle 中的别名可以别解析 String sql = "SELECT flow_id flowid, type, id_card idcard, exam_card examcard, student_name studentname, location, grade FROM examstudent"; Object obj = runner.query(conn, sql, new BeanListHandler(ExamStudent.class)); System.out.println(obj); } private static void query() throws SQLException { //1. 创建一个 QueryRunner 的实例 QueryRunner runner = new QueryRunner(); Connection conn = DBManager.getConnection(); String sql = "SELECT id, name, address, phone FROM customers WHERE name LIKE ?"; Class type = Customer.class; Object [] params = new Object[]{"%%"}; //2. 查询操作 //conn: 查询需要的数据库连接, sql: 查询使用的 sql 语句, rsh: 如何转换查询得到的结果集, params: 填补 sql 语句参数的数组 Object obj = runner.query(conn, sql, new BeanListHandler(type), params); //System.out.println("^^" + obj); sql = "SELECT flow_id flowid, type, id_card idcard, exam_card examcard, student_name studentname, location, grade FROM examstudent"; type = ExamStudent.class; obj = runner.query(conn, sql, new BeanListHandler(ExamStudent.class)); System.out.println(obj); }}public class JdbcUtil {private static ComboPooledDataSource dataSource =new ComboPooledDataSource();public static ComboPooledDataSource getDataSource(){return dataSource;}}src目录下c3p0-config.xml
重要代码摘录
从数据库中取count(*)数据:
int topicNum=0; QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); String sql ="select count(*) from topic where type_id= ? order by time desc"; Object[] params={typeId}; topicNum=(int)(long) runner.query(sql,new ScalarHandler(),params); return topicNum;
取一条数据 其中表的字段名字和类的名字要对应相同:
Topic newlyTopic=null; QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); String sql ="select * from topic where type_id= ? order by time desc"; Object[] params={typeId}; newlyTopic= runner.query(sql,new BeanHandler<Topic>(Topic.class),params); return newlyTopic;
取集合数据List<>返回 其中表的字段名字和类的名字要对应相同:
List<Topic> topicList=new ArrayList<Topic>(); QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); String sql ="select * from topic where type_id= ? order by time desc"; Object[] params={typeId}; topicList=runner.query(sql, new BeanListHandler<Topic>(Topic.class),params); return topicList;
插入:
QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); String sql ="insert into topic(name,author,content,time,type_id) values(?,?,?,?,?)"; Object[] params={topic.getName(),topic.getAuthor(),topic.getContent(),topic.getTime(),topic.getTypeId()}; try { //事务开始 runner.update(sql,params); //事务提交 } catch (SQLException e) { e.printStackTrace(); //事务回滚 throw e; }
更新:
QueryRunner runner= new QueryRunner(JdbcUtil.getDataSource()); String sql ="update topic set name=? , content=? , time=? where id= ?"; Object[] params={topic.getName(),topic.getContent(),topic.getTime(),topic.getId()}; try { //事务开始 runner.update(sql,params); //事务提交 } catch (SQLException e) { e.printStackTrace(); //事务回滚 throw e; }
转载:原地址
0 0
- 数据库操作工具-QueryRunner
- 使用queryrunner操作数据库
- dbutils工具类:QueryRunner
- QueryRunner 核心运行类;在一般情况下如果执行CRUD的操作; 使用核心类QueryRunner 对数据库进行 增删改
- queryRunner 操作的一些方法
- 02-使用C3P0连接池连接MySql并且使用QueryRunner简化数据库操作
- 用数据库连接池c3p0来连接数据库,用queryrunner来操作
- QueryRunner
- QueryRunner
- QueryRunner
- queryRUNNER
- java-jdbc工具类(QueryRunner)
- 数据库中的QueryRunner的大致实现
- 数据库相关操作工具
- SqlHelper 数据库操作工具
- 数据库操作工具类
- 数据库操作工具类
- 数据库操作工具类
- CentOS Nginx80端口不通
- RichEdit设置font字体大小
- 傲娇的python之python文件名
- js基本数据类型和引用类型交换传值
- vpn原理及实现--虚拟网卡构建vpn
- 数据库操作工具-QueryRunner
- jquery测试代码
- leetcode解题之203 # Remove Linked List Elements Java版(删除链表中的和val相等的元素)
- 下载、安装Ruby和sass,并在webStorm里配置sass
- flume上报日志到kafka
- java初始化顺序与反射
- Java学习--day2-partone
- PHP实现字符串翻转不乱码
- C++例题