文档章节

使用dbutils对mysql数据库做增删改查的基本操作方法

孟飞阳
 孟飞阳
发布于 2016/06/20 11:12
字数 469
阅读 90
收藏 1
点赞 0
评论 0

1、数据库名:phoenix_uml,t_user.sql 表结构

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `createDate` datetime DEFAULT NULL,
  `nickName` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `userName` varchar(255) NOT NULL,
  `userType` int(11) NOT NULL,
  `groupId` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `userName` (`userName`),
  KEY `FKCB63CCB65064113` (`groupId`),
  CONSTRAINT `FKCB63CCB65064113` FOREIGN KEY (`groupId`) REFERENCES `t_user_group` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

2、jdbc.properties,位于工程的根目录

driverClassName = com.mysql.jdbc.Driver
password = root
username = root
url = jdbc:mysql://localhost:3306/phoenix_uml?useUnicode=true&characterEncoding=utf8

3、dbutils的测试方法

package demo14;

import java.io.FileInputStream;
import java.math.BigInteger;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.apache.commons.dbcp.DataSourceConnectionFactory;
import org.apache.commons.dbutils.DbUtils;
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.ScalarHandler;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * 本例中使用的jar包名称及版本:Commons-dbutils-1.6.jar,commons-dbcp-1.2.1.jar,commons-pool-1.6.jar
 * 
 * 本例演示了如何使用dbutils对数据库内容做增删改查的基本操作
 * @author mengfeiyang
 *
 */
public class DBUtilsTest {
	Connection conn = null;
	DataSource ds = null;
	@Before
	public void test() throws Exception {
		/**获取dataSource的三种方法**/
		//方法一:
/*		ds = new BasicDataSource();
		ds.setDriverClassName("com.mysql.jdbc.Driver");
		ds.setUrl("jdbc:mysql://localhost:3306/phoenix_uml?useUnicode=true&characterEncoding=utf8");
		ds.setUsername("root");
		ds.setPassword("root");*/
		
		Properties pro = new Properties();
		//方法二:
/*		pro.setProperty("driverClassName", "com.mysql.jdbc.Driver");
		pro.setProperty("url", "jdbc:mysql://localhost:3306/phoenix_uml?useUnicode=true&characterEncoding=utf8");
		pro.setProperty("username", "root");
		pro.setProperty("password", "123"); */
		
		//方法3:
		pro.load(new FileInputStream("jdbc.properties"));
		ds = BasicDataSourceFactory.createDataSource(pro);//通过properties得到DataSource
		DataSourceConnectionFactory dsc = new DataSourceConnectionFactory(ds);
		conn = dsc.createConnection();
	}
	@Test
	public void testQuery() throws SQLException{
		QueryRunner qrunner = new QueryRunner();
		UserModel u = qrunner.query(conn,"select * from t_user where id=?", new BeanHandler<UserModel>(UserModel.class),1);
		System.out.println(u.getNickName()+"\t"+u.getUserName()+"\t"+u.getPassword());
	}
	
	@Test
	public void testQueryList() throws SQLException{
		QueryRunner qrunner = new QueryRunner();
		List<UserModel> list = qrunner.query(conn,"select * from t_user", new BeanListHandler<UserModel>(UserModel.class));
		for(UserModel u : list){
			System.out.println(u.getNickName()+"\t"+u.getUserName()+"\t"+u.getPassword());
		}
	}
	
	@Test
	public void testUpdateOrDelete() throws SQLException{
		QueryRunner qrunner = new QueryRunner();
		qrunner.update(conn,"update t_user set nickName='张三三' where id=2");
	}
	
	@Test
	public void testAdd() throws SQLException{
		QueryRunner qrunner = new QueryRunner();
		qrunner.insert(conn,"insert into t_user values(?,?,?,?,?,?,?);", new BeanHandler<UserModel>(UserModel.class), new Object[]{0,null,"马六",123,"ml",0,2});
		BigInteger newId = (BigInteger) qrunner.query(conn, "select last_insert_id()", new ScalarHandler<BigInteger>(1));  
		UserModel u = qrunner.query(conn, "select * from t_user where id=?",new BeanHandler<UserModel>(UserModel.class),newId);
		System.out.println(u.getNickName()+"\t"+u.getUserName()+"\t"+u.getPassword());
	}
	
	@After
	public void after(){
		DbUtils.closeQuietly(conn);
	}
}

 

© 著作权归作者所有

共有 人打赏支持
孟飞阳
粉丝 202
博文 895
码字总数 531335
作品 5
朝阳
个人站长
Python下访问MYSQL的方法总结

在Python下做过服务器开发的小伙伴对ORM技术一定都不陌生,ORM(Object-Relational Mapping),将关系数据库的表结构映射到对象上,隐藏了数据库操作背后的细节,简化了对数据操作的写法,使...

zwgdft ⋅ 2016/10/15 ⋅ 0

每个项目中,你必须知道的11个Java第三方类库。

Java第三方library ecosystem是一个很广阔的范畴。不久前有人撰文:每个项目中,你必须知道的11个Java第三方类库。 单元测试 1.DBUnit DBunit是一个基于junit扩展的数据库测试框架。它提供了...

thinkyoung ⋅ 2015/01/07 ⋅ 0

JavaWeb07-HTML篇笔记(四)

1.1 案例三:手动抽取一个DBUtils的工具类:1.1.1 需求: 每次进行JDBC的CURD的操作的时候,有很多的代码都是相似的.可以不可以抽取工具类.完成一些通用性的代码? 1.1.2 分析:1.1.2.1 技术分...

我是小谷粒 ⋅ 05/17 ⋅ 0

一行代码搞定数据库操作 - ThinkJDBC

1 简介 ,又名,一个简洁而强大的开源JDBC操作库。你可以使用Java像框架的M方法一样,。 先睹为快: //数据库配置(只需调用一次)D.setDbConfig("jdbc:mysql://127.0.0.1:3306/DbName?charac...

Leytton ⋅ 04/21 ⋅ 0

Leytton/ThinkJD

中文文档 English Document 最新版本 V1.2.3 1 简介 ,又名,一个简洁而强大的开源JDBC操作库。你可以使用Java像框架的M方法一样,。 先睹为快: //数据库配置(只需调用一次)D.setDbConfig(...

Leytton ⋅ 04/21 ⋅ 0

JavaWeb13-HTML篇笔记(二)

1.1.1.3 DBUtils实现事务管理: Ø 没有事务管理: Ø 有事务管理: 1.1.1 总结:1.1.1.1 事务特性: Ø 原子性:强调事务的不可分割. Ø 一致性:强调的是事务的执行的前后,数据的完整性要保持一...

我是小谷粒 ⋅ 05/29 ⋅ 0

第二部分 DAO层设计模式

DAO设计模式: 分层操作:使项目目录清晰,便于以后的维护和拓展 1.把对数据库的操作(增删改查等)封装到一个包里(就是把Dbutils包里的方法封装到里面,当你换数据库的时候你只需要改DAO层里...

孙浩j ⋅ 2017/12/03 ⋅ 0

JDBC——java操作数据库的一系列接口

一、JDBC概述(mysql) 1、Java DataBase Connective 1)概念:JDBC其实就是一套Java操作数据库的规范(接口); 2)数据库驱动: 各个数据库厂商要让java语言去操作数据库就必须实现这套接口,每个...

走了丶 ⋅ 2017/11/02 ⋅ 0

Hutool之对JDBC的ORM封装

开篇 端午没事儿干扩充了下Hutool的DB部分,原来只是一个简单的SQL运行器,现在加入了方言支持,封装了增删改查,引入Session从而支持事务,可以说工程量巨大,在封装过程总我还是参考了Jod...

路小磊 ⋅ 2014/06/03 ⋅ 0

安卓数据库 greenDAO3 使用之一项目配置、增删改查及升级

博客: 安卓之家 掘金: jp1017 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 每日一景 Build Status 配置 喜讯:现在greenDAO升级到了3.0版本,不需要java项目了 强烈建议升级到3.0版本,...

jp1017 ⋅ 2016/10/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 20分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 39分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 44分钟前 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 51分钟前 ⋅ 0

文件压缩和打包zip、tar

第六章 文件压缩和打包 6.5 zip压缩工具 zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 注意:...

弓正 ⋅ 53分钟前 ⋅ 0

vuex

一、状态对象如何赋值给内部对象。三种方式: 1、使用computed赋值,一定要写this,不然找不到$store。 computed:{ count(){ return this.$store.state.count; }} 2、通...

大美琴 ⋅ 今天 ⋅ 0

javaScript 设计模式

1、构造函数模式 ` /** 构造一个动物的函数 */ function Animal(name, color){ this.name = name; this.color = color; this.getName = function(){ return this.name; } } // 实例一个对象 ......

fangPeng_ ⋅ 今天 ⋅ 0

日常嘚瑟:TeamCity构建中解压和打包tar

要弄一个新的构建,很简单,从两个构建的tar格式Artifact中分别取一部分,重新打一个tar。 所以,我去写个脚本用curl下载两个依赖的Artifact,然后解压移动重新打个tar? 开什么玩笑,我的技...

谷永权 ⋅ 今天 ⋅ 0

Istio官方文档中文版

阅读目录 Istio官方文档中文版 回到目录 Istio官方文档中文版 http://istio.doczh.cn/ https://istio.io/docs/concepts/what-is-istio/goals.html 为什么要使用Istio? 在从单体应用程序向分...

xiaomin0322 ⋅ 今天 ⋅ 0

CentOS 7 Omnibus 包安装 GitLab 并汉化记录

系统环境 操作系统:CentOS 7GitLab:gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm 下载Omnibus安装包 使用国内镜像加速下载地址 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el......

admin_qing ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部