jdbc封装DBUtil
1.编写实体类User
public class User {
private Integer id;
private String username;
private Integer age;
private Date registerTime; //mysql 使用时间戳
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getRegisterTime() {
return registerTime;
}
public void setRegisterTime(Date registerTime) {
this.registerTime = registerTime;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", age=" + age +
", registerTime=" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(registerTime) +
'}';
}
}
User.java
注意:java的Date对应数据库的timestamp
2.创建表
CREATE TABLE users(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
age int,
registerTime timestamp default now()
)

3. 编写DBUtil
package work; import com.sun.rowset.CachedRowSetImpl; import java.sql.*;
import java.util.HashMap;
import java.util.Map; public class DbUtil {
private Connection conn;
private String url = "jdbc:mysql://localhost:3306/db_jdbc?characterEncoding=utf8"; protected void setConnection() {
//初始化conn
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, "root", "");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 查询操作,返回缓存类,防止数据库连接关闭后无法访问ResultSet
*
* @param sql
* @param params
* @return
*/
//Object ...
public CachedRowSetImpl executeQuery(String sql, Map<Integer, Object> params) {
if (conn == null) {
setConnection();
}
PreparedStatement statement = null;
ResultSet rs = null;
CachedRowSetImpl rowset = null;
try {
statement = conn.prepareStatement(sql);
if (params != null) {
for (int i = ; i < params.size(); i++) {
statement.setObject(i + , params.get(i));
}
}
rs = statement.executeQuery();
rowset = new CachedRowSetImpl();
rowset.populate(rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
close();
}
return rowset;
} /**
* 执行删除、修改和添加操作
*
* @param sql
* @param params
* @return
*/
public int executeUpdate(String sql, Map<Integer, Object> params) {
int rs = ;
if (conn == null) {
setConnection();
}
PreparedStatement statement = null;
try {
statement = conn.prepareStatement(sql);
if(params!=null){
for (int i = ; i < params.size(); i++) {
statement.setObject(i + , params.get(i));
}
}
rs = statement.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
close();
}
return rs;
} protected void close() {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void main(String[] args) throws SQLException {
CachedRowSetImpl rowSet = new DbUtil()
.executeQuery("select * from student where id < ?", new HashMap<Integer, Object>(){{put(,);}});
while (rowSet.next()) {
int id = rowSet.getInt("id");
String name = rowSet.getString("name");
String className = rowSet.getString("className");
System.out.println("[id=" + id + ", name=" + name + ", className=" + className + "]");
}
}
}
DbUtil.java
4.UserDao.java
package work; import com.sun.rowset.CachedRowSetImpl; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List; public class UserDao {
private DbUtil db; public DbUtil getDb() {
return db;
} public void setDb(DbUtil db) {
this.db = db;
} public UserDao(DbUtil db) {
this.db = db;
} /**
* 查询所有user
* @return
*/
public List<User> getUsers(){
List<User> users = new ArrayList<User>();
String sql = "select * from users ";
CachedRowSetImpl rowSet = db.executeQuery(sql, null);
try {
while(rowSet.next()){
User user = new User();
user.setId(rowSet.getInt("id"));
user.setUsername(rowSet.getString("username"));
user.setAge(rowSet.getInt("age"));
user.setRegisterTime(rowSet.getTime("registerTime"));
users.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
return users;
} /**
* 添加用户
* @param user
* @return
*/
public int addUser(User user){
int rs = ;
String sql = "insert into users (username, age, registerTime) values (?, ?, ?)";
rs = db.executeUpdate(sql, new HashMap<Integer, Object>(){{
put(, user.getUsername());
put(, user.getAge());
put(, user.getRegisterTime());
}});
return rs;
} /**
* 删除user
* @param id
* @return
*/
public int deleteUser(int id){
int rs = ;
String sql = "delete from users where id = ? ";
rs = db.executeUpdate(sql, new HashMap<Integer, Object>(){{put(, id);}});
return rs;
} /**
* 修改user
* @param user
* @return
*/
public int updateUser(User user){
int rs = ;
String sql = "update users set username = ?, age = ?, registerTime = ? where id = ? ";
rs = db.executeUpdate(sql, new HashMap<Integer, Object>(){{
put(, user.getUsername());
put(, user.getAge());
put(, user.getRegisterTime());
put(, user.getId());
}});
return rs;
}
}
UserDao.java
jdbc封装DBUtil的更多相关文章
- 封装jdbc、DBUtil
package com.cmos.util; import java.io.IOException; import java.io.InputStream; import java.sql.Conne ...
- 优化JDBC封装
可重用性较强的JDBC封装 以下为代码,注释中写了主要思想 主类 com.util.JDBCUtil.java package com.util; import java.lang.reflect.F ...
- jdbc封装代码
jdbc封装代码 package jdbcUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sq ...
- JDBC封装的工具类
1. JDBC封装的工具类 public class JDBCUtil { private static Properties p = new Properties(); private static ...
- JDBC封装
在模拟servlet调用dao中,我们发现在dao的实现类中有许多重复代码,我们可以将其封装起来. 步骤: 一. 创建一个类 DBUtil 1加载驱动和建立链接的代码 完全一样 加载驱动写到静态代码快 ...
- Phoenix的jdbc封装
一.Phoenix版本 <dependency> <groupId>org.apache.phoenix</groupId> <artifactId>p ...
- JDBC封装-Java(新手)
JDBC的封装,自己总结的自己总结的自己总结的 dao (代码分层)命名规范: 1.com.XXX.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据 2. ...
- 高性能jdbc封装工具 Apache Commons DbUtils 1.6(转载)
转载自原文地址:http://gao-xianglong.iteye.com/blog/2166444 前言 关于Apache的DbUtils中间件或许了解的人并不多,大部分开发人员在生成环境中更多的 ...
- Mysql,JDBC封装
1.完成对数据库的表的增删改的操作 2.查询返回单条记录 3.查询返回多行记录 4.可以使用反射机制来封装,查询单条记录 5.反射机制,查询多条记录 package myjdbc; import ja ...
随机推荐
- python爬取淘宝排名
import timeimport jsonimport requestsimport xlrdimport randomimport os from xlutils.copy import copy ...
- LoadRunner11_MySQL数据库脚本
记录一次压测过程中,通过LoadRunner向MySQL数据库插入大量数据的过程. [1]需要使用到MySQL的libmysql.dll动态链接库,因此需要安装MySQL:注:本地安装的MySQL最好 ...
- JavaWeb应用中初始化Log4j的两种方式
本文主要介绍了普通JavaWeb应用(基于Tomcat)中初始化Log4j的两种方式: 1.通过增加 InitServlet ,设置令其自启动来初始化 Log4j . 2.通过监听器 ServletC ...
- Elasticsearch插件head的安装(有坑)
http://blog.csdn.net/u012332735/article/details/56283932 Elasticsearch出了5.2.1版本之后,就去试试它的新版本的使用,为了以后的 ...
- #首行输入数n,接下来输入n行数,以空格隔开
#首行输入数n,接下来输入n行数,以空格隔开 n = int(raw_input())# print nL = []for i in range(n): L.append([int(x) for x ...
- ant实例
<?xml version="1.0" encoding="UTF-8" ?> <project name="javaTest&qu ...
- 安装jdk1.8,编写环境变量
好记性不如烂笔头!!!(我这是把jdk放在的/usr/local下,且命令为jdk1.8...复制的时候别搞错位置了) JAVA_HOME=/usr/local/jdk1./ JAVA_BIN=/us ...
- 1001 害死人不偿命的(3n+1)猜想 (15 分)
#include <iostream> using namespace std; int main(){ ; cin >> n; ){ != ) n = ( * n + ) / ...
- python学习,day1:循环判断基本语句的几个代码
# coding=utf-8 # Author: RyAn Bi count = 0 '''while True : print('count:',count) count = count + 1 i ...
- UVA - 11922 区间反转+拼接 可持久化Treap
题意:一开始给出一个序列\(1,2...n\),然后\(m\)次操作,每次把\([l,r]\)翻转并且拼接到序列的后面,求最后形成的序列 打个pushdown标记就好 #include<iost ...