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的更多相关文章

  1. 封装jdbc、DBUtil

    package com.cmos.util; import java.io.IOException; import java.io.InputStream; import java.sql.Conne ...

  2. 优化JDBC封装

    可重用性较强的JDBC封装 以下为代码,注释中写了主要思想 主类 com.util.JDBCUtil.java package com.util; import java.lang.reflect.F ...

  3. jdbc封装代码

    jdbc封装代码 package jdbcUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sq ...

  4. JDBC封装的工具类

    1. JDBC封装的工具类 public class JDBCUtil { private static Properties p = new Properties(); private static ...

  5. JDBC封装

    在模拟servlet调用dao中,我们发现在dao的实现类中有许多重复代码,我们可以将其封装起来. 步骤: 一. 创建一个类 DBUtil 1加载驱动和建立链接的代码 完全一样 加载驱动写到静态代码快 ...

  6. Phoenix的jdbc封装

    一.Phoenix版本 <dependency> <groupId>org.apache.phoenix</groupId> <artifactId>p ...

  7. JDBC封装-Java(新手)

    JDBC的封装,自己总结的自己总结的自己总结的 dao (代码分层)命名规范: 1.com.XXX.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据 2. ...

  8. 高性能jdbc封装工具 Apache Commons DbUtils 1.6(转载)

    转载自原文地址:http://gao-xianglong.iteye.com/blog/2166444 前言 关于Apache的DbUtils中间件或许了解的人并不多,大部分开发人员在生成环境中更多的 ...

  9. Mysql,JDBC封装

    1.完成对数据库的表的增删改的操作 2.查询返回单条记录 3.查询返回多行记录 4.可以使用反射机制来封装,查询单条记录 5.反射机制,查询多条记录 package myjdbc; import ja ...

随机推荐

  1. Launch VINS example (Euroc dataset) in RTAB-MAP

    $ roslaunch rtabmap_ros euroc_datasets.launch args:="-d RGBD/CreateOccupancyGrid false Odom/Str ...

  2. windows server2008虚拟机系统盘扩容

    windows server2008虚拟机的系统盘空间过小,对系统盘进行扩容,操作如下: 1.将虚拟机关机: 2.VMware对该虚拟机进行设置,选中磁盘,点击扩容,输入扩容大小,等待扩容完成: 3. ...

  3. Python实现——决策树实例(离散数据/香农熵)

    决策树的实现太...繁琐了. 如果只是接受他的原理的话还好说,但是要想用代码去实现比较糟心,目前运用了<机器学习实战>的代码手打了一遍,决定在这里一点点摸索一下该工程. 实例的代码在使用上 ...

  4. docker加速器配置

    我使用docker的原因 最近自己一直在强迫自己使用docker,一方面是docker的容器化服务,使得每一个配置相互独立,易于维护.而且如果到后面如果深入了的话,通过自己编写dockerfile,那 ...

  5. Tomcat 配置文件的解析

    转载:https://www.cnblogs.com/sunshine-1/p/8990044.html https://www.cnblogs.com/kismetv/p/7228274.html ...

  6. C++ Timer

    Timer机制 这里所说的Timer机制是定时器(Timer),例如在Javascript中就提供定时执行代码的功能.但是在C++标准中暂时没有实现这一功能的函数. Javascript中的Timer ...

  7. Maven学习笔记(二)—— 整合SSH框架

    一.知识点准备 1.1 什么是依赖传递? 我们只添加一个struts2-core的依赖,结果会发现所有关于struts2的依赖都进来了. 因为我们的项目依赖struts2-core-2.3.24.ja ...

  8. C++_标准模板库STL概念介绍4-算法

    STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_differen ...

  9. 利用Python将文件进行分类整理

    利用Python将文件进行分类整理 功能 根据一个文件夹中的文件类型建立相应的文件夹,将同一种类型的文件放在一个文件夹中. 实现思路 主要用到 os 和 shutil 两个库,os 用来获取文件夹中的 ...

  10. Linux 安装 Djiango

    yum 安装方法 以下安装位于 Centos Linux 环境下安装,如果是你的 Linux 系统是 ubuntu 请使用 apt-get 命令. 默认情况下 Linux 环境已经支持了Python. ...