package com.mozq.jdbc.test;

 import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.BeanMapHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test; import com.mozq.domain.User;
import com.mozq.jdbc.C3P0Utils; public class DBUtilsTest_R {
/**
* 测试查询用户数量,ScalarHandler处理器,new ScalarHandler<Long>(),注意类型参数只能写Long,不能写Integer
*/
@Test
public void findAll_ScalarHandler() {
try {
//1.创建核心执行对象
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
//2.写sql
String sql = "select count(*) from t_user";
//3.准备参数
//4.执行sql,进行结果处理
Long row = queryRunner.query(sql, new ScalarHandler<Long>());
System.out.println("操作行数:" + row);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 测试根查询所有用户,MapListHandler处理器,new MapListHandler()
*/
@Test
public void findAll_MapListHandler() {
try {
//1.创建核心执行对象
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
//2.写sql
String sql = "select * from t_user";
//3.准备参数
//4.执行sql,进行结果处理
List<Map<String, Object>> users = queryRunner.query(sql, new MapListHandler());
for(Map<String, Object> user : users) {
for(Entry<String, Object> entry : user.entrySet()) {
System.out.print(entry.getKey()+":"+entry.getValue()+";");
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 测试根据id查询单个用户,MapHander处理器,new MapHandler()
*/
@Test
public void findById_MapHandler() {
try {
//1.创建核心执行对象
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
//2.写sql
String sql = "select * from t_user where id=?";
//3.准备参数
Object[] params = {9};
//4.执行sql,进行结果处理
Map<String, Object> user = queryRunner.query(sql, new MapHandler(), params);
for (Entry<String, Object> entry : user.entrySet()) {
System.out.println(entry.getKey()+ ":" + entry.getValue());
}
/*
id:9
name:刘备
password:liu456
*/
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 测试查询全部用户名,ColumnList处理器,按列索引处理(需要在查询语句中明确列顺序)和按列名处理
*/
@Test
public void findAllName_ColumnListHandler() {
try {
//1.创建核心执行对象
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
//2.写sql
String sql = "select password, name, id from t_user";
//3.准备参数
//4.执行sql,进行结果处理
List<String> userNames = queryRunner.query(sql, new ColumnListHandler<String>());
for (String userName : userNames) {
System.out.println(userName);
}
List<String> userNames2 = queryRunner.query(sql, new ColumnListHandler<String>("name"));
for (String userName : userNames2) {
System.out.println(userName);
} } catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 测试查询全部,BeanMap处理器,new BeanMapHandler<Integer, User>(User.class, "id")
*/
@Test
public void findAll_BeanMapHandler() {
try {
//1.创建核心执行对象
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
//2.写sql
String sql = "select id, name, password from t_user";
//3.准备参数
//4.执行sql,进行结果处理
/*用主键列来当键,完全没有问题*/
System.out.println("new BeanMapHandler<Integer, User>(User.class, \"id\")");
Map<Integer, User> users = queryRunner.query(sql, new BeanMapHandler<Integer, User>(User.class, "id"));
for (Entry<Integer, User> it : users.entrySet()) {
System.out.println(it.getValue());
} /*用可重复的列来当键,会发生记录覆盖*/
System.out.println("new BeanMapHandler<String, User>(User.class, \"name\")----------");
Map<String, User> users2 = queryRunner.query(sql, new BeanMapHandler<String, User>(User.class, "name"));
for (Entry<String, User> it : users2.entrySet()) {
System.out.println(it.getValue());
} } catch (SQLException e) {
e.printStackTrace();
//java.sql.SQLException: Cannot determine value type from string 'liu123' Query: select * from t_user Parameters: []
}
}
/**
* 测试查询全部,BeanList处理器,new BeanListHandler<User>(User.class)
*/
@Test
public void findAll_BeanListHandler() {
try {
//1.创建核心执行对象
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
//2.写sql
String sql = "select * from t_user";
//3.准备参数
//4.执行sql,进行结果处理
List<User> users = queryRunner.query(sql, new BeanListHandler<User>(User.class));
for (User user : users) {
System.out.println(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 测试根据id查询单个,Bean处理器,new BeanHandler<User>(User.class)
*/
@Test
public void findById_BeanHandler() {
try {
//1.创建核心执行对象
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
//2.写sql
String sql = "select * from t_user where id=?";
//3.准备参数
Object[] params = {9};
//4.执行sql,进行结果处理
User user = queryRunner.query(sql, new BeanHandler<User>(User.class), params);
System.out.println(user);//User [id=9, name=刘备, password=liu123]
} catch (SQLException e) {
e.printStackTrace();
}
}
}
 package com.mozq.jdbc.test;

 import java.sql.SQLException;

 import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.junit.Test; import com.mozq.domain.User;
import com.mozq.jdbc.C3P0Utils; /**
* 测试DBUtils工具类的增删改操作
* @author jie
*
*/
public class DBUtilsTest_CUD {
/**
* 根据id删除用户
*/
@Test
public void DeleteUserById() {
try {
// 1.创建核心类
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
// 2.写sql
String sql = "delete from t_user where id=?";
// 3.准备参数
Object[] params = { 8 };
// 4.执行sql,进行结果处理
int row = queryRunner.update(sql, params);
if (row > 0) {
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 根据id修改用户
*/
@Test
public void UpdateUserById() {
try {
// 1.创建核心类
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
// 2.写sql
String sql = "update t_user set password=? where id=?";
// 3.准备参数
Object[] params = { "jingdong", 8 };
int row = queryRunner.update(sql, params);
if (row > 0) {
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 插入用户方法
*/
@Test
public void addUser() {
try {
// 1.创建核心类
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
// 2.写sql
String sql = "insert into t_user(name, password) values(?,?)";
// 3.准备参数
Object[] params = { "京东0", "刘强东0" };
int row = queryRunner.update(sql, params);
if (row > 0) {
System.out.println("插入成功");
} else {
System.out.println("插入失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 测试insert方法,查看返回对象
*/
@Test
public void insert2() {
try {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "insert into t_user(id, name, password) values(?, ?, ?)";
User userObj = queryRunner.insert(sql, new BeanHandler<User>(User.class), 31, "京东5", "刘强东");
System.out.println(userObj);
} catch (SQLException e) {
e.printStackTrace();
}
}
}

DBUtils学习一 增删该查的更多相关文章

  1. mvc模式jsp+servel+dbutils oracle基本增删改查demo

    mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址

  2. 库增删该查,表增删该查,记录增删该查,表与表关系(多对多,多对一,一对一),mysql用户管理

    库增删该查 增加库 create database db1 create database db1 charset="gbk 查看库 show databases 查看所有库 show cr ...

  3. DBUtils 学习使用

    DBUtils 学习使用 commons-dbutils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbuti ...

  4. Mybatis入门——基础方式的增删该查、mapper动态代理方式的CRUD、类型转换器

    一.基础方式的增删该查: 1.mybatis约定:输入参数parameterType和输出参数resulrType在形式上只能有一个. 2.如果输入/输出参数:是简单类型(8个基本类型加String) ...

  5. Spring MVC学习笔记——用户增删该查和服务器端验证

    建立一个动态web项目,起名为SpringMVC_crud 导包,其中包括jstl的一些包等 1.先写一个User.java,是用户类 文件User.java文件 package org.common ...

  6. java 三大框架 hibernate部分知识实现增删该查操作

    1.三层架构    表现层 web层(MVC是一个表现层的设计模型)    业务层 service层    持久层 dao层2.三大框架和三层架构的关系(建议学习三大框架的顺序:先学习hibernat ...

  7. mongoose学习笔记2--增删改查1

    查询 之前我们的集合已经创建成功,我们就先来进行第一步操作 —— 查询. 查询分很多种类型,如条件查询,过滤查询等等,今天只学习了最基本的find查询. 举例: 1.find查询: obj.find( ...

  8. MongoDB学习之--增删改查(2)

    昨天简单介绍了官方驱动操作MongoDB进行增删查操作的,今天继续介绍更新操作..... 方法简介 官方驱动中更新操作使用collection的Update方法,有泛型和非泛型两个版本: 其签名如下( ...

  9. MongoDB学习之--增删改查(1)

    本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...

随机推荐

  1. 最简单ajax,$.post()用法

    最简单的ajax,$.post()用法 $.post("action.php",{'email':$('#email').val(),'address':$('#address') ...

  2. SDUT OJ 进制转换

    进制转换 Time Limit: 1000MS Memory limit: 65536K 题目描述 输入一个十进制数N,将它转换成R进制数输出. 输入 输入数据包含多个测试实例,每个测试实例包含两个整 ...

  3. RobotFramework教程使用笔记——RIDE的相关知识及Resources创建关键字文件

    RIDE是robotframework的图形操作前端,我们在RIDE上进行测试用例设计和编写测试脚本,并执行自动化测试.下面来全面的认识下这个操作工具. 在右边编辑页面有三大模块,Edit,TextE ...

  4. 2U网络机箱的尺寸是多少,4U网络机箱的尺寸是多少

    厚度以4.445cm为基本单位.1U就是4.445cm,2U则是1U的2倍为8.89cm.48.26cm=19英寸,如果是标准的机架式设备,宽应该是满足这个标准的.纵深的话 有600mm或者800mm ...

  5. this.triggerEvent()用法

    在对组件进行封装时 在当前页面想要获取组件中的某一状态,需要使用到this.triggerEvent(' ',{},{}),第一个参数是自定义事件名称,这个名称是在页面调用组件时bind的名称,第二个 ...

  6. 一套完整的前台页面增删改查以及js(easyui)

    增加页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...

  7. BZOJ 1617 [Usaco2008 Mar]River Crossing渡河问题:dp

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1617 题意: Farmer John以及他的N(1 <= N <= 2,500 ...

  8. 优化js的执行

    避免使用setTimeout和setInterval进行视觉更新操作;使用 requestAnimationFrame. 将长时间运行的JavaScript 从主线程转移到 Web Workers. ...

  9. vertical-align 的理解

    1.vertical-align 属性和值列表

  10. 【C/C++】产生随机数

    #include<iostream> #include<Ctime> #include<Cstdlib> using namespace std; //产生n个st ...