JDBC采用DAO和Entity层完成增删改查(提供DateUtils转换工具类、DBUtils数据库连接工具类)

数据库要求:

列名 类型 说明 列名
user_id 整数、主键 用户编号 user_id
user_name 字符串,唯一,非空 用户名称 user_name
user_pwd 字符串,非空 用户密码 user_pwd
user_borndate DATE 出生日期 user_borndate
user_email 字符串,非空 邮箱 user_email
user_address 字符串 地址 user_address

项目要求:

采用DAO+Entity分层完成五个功能:查所有用户信息
并作出测试!
注意: sql.Date和java.util.Date之间的转换,要求写成工具类!

知识科普:

DAO(Data Access Object) 是一个数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
实体类(entity) 是一行数据中,多个零散的数据进行整理,通过entity的规则对表中的数据进行对象的封装,表名=类名;列名=属性名;提供各个属性的get、set方法,提供无参构造方法、(视情况添加有参构造)


数据库SQL命令:

create table users
(
    user_id int primary key ,
    user_name varchar(20) unique not null ,
    user_pwd varchar(20) not null ,
    user_borndate date ,
    user_email varchar(20) not null ,
    user_address varchar(50)
) character set utf8;

properties文件:

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

数据库连接工具类:

import java.sql.*;

/**
 * 数据库工具类
 * 1.提供连接--Connection
 * 2.提供统一资源关闭
 * 可复用性方案
 */
public class DBUtils {
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 硬编码
     * 获取连接对象
     */
    public static Connection getConnection() {
        Connection connection = null;
        try {
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/temp?useUnicode=true&characterEncoding=utf8", "root", "123456");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * 释放资源
     */
    public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

日期转换工具类

import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * 日期转换
 *
 * 字符串转换为UtilDate
 * 字符串转换为SqlDate
 * UtilDate转换为SqlDate
 * 注意:SqlDate转换为UtilDate是不可以的,因为UtilDate是SqlDate的父类
 */
public class DateUtils {
    private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");

    /**
     * 字符串转换为UtilDate
     */
    public static java.util.Date strToUtilDate(String string) {
        try {
            return SIMPLE_DATE_FORMAT.parse(string);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 字符串转换为SqlDate
     */
    public static java.sql.Date strToSqlDate(String string) {
        try {
            java.util.Date date = SIMPLE_DATE_FORMAT.parse(string);
            return new java.sql.Date(date.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * UtilDate转换为SqlDate
     */
    public static java.sql.Date utilToSqlDate(java.util.Date date) {
        return new java.sql.Date(date.getTime());
    }
}

Entity层用户类

import java.util.Date;

/**
 * Entity层
 * 用户类
 */
public class Users {
    private String user_id;
    private String user_name;
    private String user_pwd;
    private Date user_borndate;
    private String user_email;
    private String user_address;

    public Users() {
    }

    public Users(String user_id, String user_name, String user_pwd, Date user_borndate, String user_email, String user_address) {
        this.user_id = user_id;
        this.user_name = user_name;
        this.user_pwd = user_pwd;
        this.user_borndate = user_borndate;
        this.user_email = user_email;
        this.user_address = user_address;
    }

    public String getUser_id() {
        return user_id;
    }

    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_pwd() {
        return user_pwd;
    }

    public void setUser_pwd(String user_pwd) {
        this.user_pwd = user_pwd;
    }

    public Date getUser_borndate() {
        return user_borndate;
    }

    public void setUser_borndate(Date user_borndate) {
        this.user_borndate = user_borndate;
    }

    public String getUser_email() {
        return user_email;
    }

    public void setUser_email(String user_email) {
        this.user_email = user_email;
    }

    public String getUser_address() {
        return user_address;
    }

    public void setUser_address(String user_address) {
        this.user_address = user_address;
    }

    @Override
    public String toString() {
        return "Users{" +
                "user_id='" + user_id + '\'' +
                ", user_name='" + user_name + '\'' +
                ", user_pwd='" + user_pwd + '\'' +
                ", user_borndate=" + user_borndate +
                ", user_email='" + user_email + '\'' +
                ", user_address='" + user_address + '\'' +
                '}';
    }
}

DAO层数据库操作类

import www.mylifes1110.jdbc.DBUtils;
import www.mylifes1110.jdbc.DateUtils;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * DAO层
 * 对数据库中User表的一系列操作
 * 只做对数据库做访问的操作!
 */
public class UsersDaoImpl {
    private Connection connection = null;
    private PreparedStatement preparedStatement = null;
    private ResultSet resultSet = null;

    /**
     * 增
     */
    public int insert(Users users) {
        connection = DBUtils.getConnection();
        String sql = "insert into users (user_id, user_name, user_pwd, user_borndate, user_email, user_address) values (?, ?, ?, ?, ?, ?)";
        try {
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, users.getUser_id());
            preparedStatement.setString(2, users.getUser_name());
            preparedStatement.setString(3, users.getUser_pwd());
            /**
             * Java应用层是java.util.Date        数据库是Java.sql.Date
             * users.getBornDate()-->utilDate   JDBC需要的是sqlDate
             */
            preparedStatement.setDate(4, DateUtils.utilToSqlDate(users.getUser_borndate()));
            preparedStatement.setString(5, users.getUser_email());
            preparedStatement.setString(6, users.getUser_address());
            int result = preparedStatement.executeUpdate();
            return result;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(connection, preparedStatement, resultSet);
        }
        return 0;
    }

    /**
     * 删
     */
    public int delete(String user_id) {
        connection = DBUtils.getConnection();
        String sql = "delete from users where user_id = ?";
        try {
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, user_id);
            return preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(connection, preparedStatement, resultSet);
        }
        return 0;
    }

    /**
     * 改
     */
    public int update(Users users) {
        connection = DBUtils.getConnection();
        String sql = "update users set user_name = ?, user_pwd = ?, user_borndate = ?, user_email = ?, user_address = ? where user_id = ?";
        try {
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, users.getUser_name());
            preparedStatement.setString(2, users.getUser_pwd());
            preparedStatement.setDate(3, DateUtils.utilToSqlDate(users.getUser_borndate()));
            preparedStatement.setString(4, users.getUser_email());
            preparedStatement.setString(5, users.getUser_address());
            preparedStatement.setString(6, users.getUser_id());
            return preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(connection, preparedStatement, resultSet);
        }
        return 0;
    }

    /**
     * 查询一条
     */
    public Users select(String user_id) {
        connection = DBUtils.getConnection();
        String sql = "select user_id, user_name, user_pwd, user_borndate, user_email, user_address from users where user_id = ?";
        try {
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, user_id);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                String user_id1 = resultSet.getString("user_id");
                String user_name = resultSet.getString("user_name");
                String user_pwd = resultSet.getString("user_pwd");
                Date user_borndate = resultSet.getDate("user_borndate");
                String user_email = resultSet.getString("user_email");
                String user_address = resultSet.getString("user_address");
                Users users = new Users(user_id1, user_name, user_pwd, user_borndate, user_email, user_address);
                return users;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(connection, preparedStatement, resultSet);
        }
        return null;
    }

    /**
     * 查询所有信息
     */
    public List<Users> selectAll() {
        connection = DBUtils.getConnection();
        String sql = "select user_id, user_name, user_pwd, user_borndate, user_email, user_address from users";
        List<Users> usersList = new ArrayList<>();
        try {
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                String user_id = resultSet.getString("user_id");
                String user_name = resultSet.getString("user_name");
                String user_pwd = resultSet.getString("user_pwd");
                Date user_borndate = resultSet.getDate("user_borndate");
                String user_email = resultSet.getString("user_email");
                String user_address = resultSet.getString("user_address");
                Users users = new Users(user_id, user_name, user_pwd, user_borndate, user_email, user_address);
                usersList.add(users);
            }
            return usersList;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(connection, preparedStatement, resultSet);
        }
        return null;
    }
}

测试类

import www.mylifes1110.jdbc.DateUtils;

import java.util.List;

/**
 * 测试类
 * 注意:我在测试的时候是测试成功一个注释一个,否则会有影响!
 */
public class TestDemo {
    public static void main(String[] args) {
        UsersDaoImpl usersDao = new UsersDaoImpl();
        /**
         * 增
         * 注意:userDao.insert(users1)的结果是int类型,可以判断是否添加成功的
         * 因为我这里只是测试,添加了三个新信息,所有我就写了一个提示
         */
        Users users1 = new Users("1", "ziph", "123456", DateUtils.strToUtilDate("1998-08-08"), "[email protected]", "河北省");
        Users users2 = new Users("2", "Marry", "123456", DateUtils.strToUtilDate("2000-09-18"), "[email protected]", "北京市");
        Users users3 = new Users("3", "Join", "123456", DateUtils.strToUtilDate("2002-10-28"), "[email protected]", "天津市");
        usersDao.insert(users1);
        usersDao.insert(users2);
        int result = usersDao.insert(users3);
        if (result > 0) {
            System.out.println("添加成功!");
        } else {
            System.out.println("添加失败!");
        }

        /**
         * 删
         */
        int result = usersDao.delete("3");
        if (result > 0) {
            System.out.println("删除成功!");
        } else {
            System.out.println("删除失败!");
        }

        /**
         * 改
         */
        Users users = new Users("2", "Marry", "666666", DateUtils.strToUtilDate("1999-01-23"), "[email protected]", "杭州");
        int result = usersDao.update(users);
        if (result > 0) {
            System.out.println("修改成功!");
        } else {
            System.out.println("修改失败!");
        }

        /**
         * 查询一条信息
         */
        Users users = usersDao.select("1");
        System.out.println(users);

        /**
         * 查询所有信息
         */
        List<Users> usersList = usersDao.selectAll();
        usersList.forEach(System.out::println);

    }
}

添加成功!
在这里插入图片描述
删除成功!
在这里插入图片描述
修改成功!
在这里插入图片描述
查询一条信息成功!
在这里插入图片描述
查询所有信息成功!
在这里插入图片描述

发布了137 篇原创文章 · 获赞 304 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weixin_44170221/article/details/105231252