java jdbc 数据库3 dao


在这里插入图片描述

  lombok 包使用 和 IJ idea 加 jar 的另一种方法。
  左上角IntelliJ IDEA -> Preferences -> Plugins -> Marketplace 搜索 Lombok 下载。
  左上角File -> Project Structure -> Libraries 添加 jar 包。
  Preferences -> Build,Execution,Deployment -> Compiler -> Annotation Processors 勾选 Enable annotation processing。
  用户数据库增删查改例子。lombok 用来注解直接生成set、get、构造器方法。


// user 
@Data  //自动生成set get
@AllArgsConstructor  //设置一个全参构造器
@NoArgsConstructor  // 设置一个无参构造器
public class User {

    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private Integer sex;


    @Override
    public String toString() {

        String sexName = "";
        if (sex == 1) {
            sexName = "男";
        } else if (sex == 2) {
            sexName = "女";
        } else {
            sexName = "程序员";
        }

        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
}

// 工具类
public class DBUtiles {

    public  static final String URL = "jdbc:mysql://localhost:3306/mydb1?characterEncoding=utf-8";
    public  static final String USERNAME = "root";
    public  static final String PASSWORD = "Liu01234";
    public  static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";

    public static Connection getConnection() {

        try {
            Class.forName(DRIVER_CLASS);
            return DriverManager.getConnection(URL,USERNAME,PASSWORD);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        return null;
    }

    public static void close(AutoCloseable ...args) {
        for (AutoCloseable c : args) {
            if (c != null) {
                try {
                    c.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

}


// 用户管理
public class UserManager {

    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {

        System.out.println("欢迎");

        while (true) {

            System.out.println("1.添加 2.修改 3.删除 4.查询 5.退出");

            int num = 0;
            while (true) {
                try {
                    String text = scanner.next();
                    num = Integer.parseInt(text);
                    break;
                } catch (NumberFormatException e) {
                    System.out.println("请出入正确的编号");
                }
            }

            if (num == 1) {
                addUser();
            } else if (num == 2) {
                updateUser();
            } else if (num == 3) {
                deleteUser();
            } else if (num == 4) {
                getUserList();
            } else if (num == 5) {
                System.out.println("good bye...");
                System.exit(-1);
            }

        }

    }

    private static void getUserList() {
        Connection connection = DBUtiles.getConnection();
        PreparedStatement prst = null;
        ResultSet resultSet = null;

        try {
            prst = connection.prepareStatement("select * from t_user");
            resultSet = prst.executeQuery();

            List<User> userlist = new ArrayList<>();
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String username = resultSet.getString("username");
                String password = resultSet.getString("password");
                int sex = resultSet.getInt("sex");
                int age = resultSet.getInt("age");

                User user = new User(id,username,password,sex,age);
                userlist.add(user);
            }

            for (User user: userlist) {
                System.out.println(user);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtiles.close(resultSet, prst, connection);
        }

    }

    private static void deleteUser() {

        System.out.println("请输入要删除的用户名");
        String username = scanner.next();

        User user = getUserByUsername(username);
        if (user != null) {

            Connection connection = DBUtiles.getConnection();
            PreparedStatement prst = null;

            try {
                prst = connection.prepareStatement("delete from t_user where username = ?");
                prst.setString(1, user.getUsername());

                int i = prst.executeUpdate();
                if (i > 0) {
                    System.out.println("删除成功");
                } else {
                    System.out.println("删除失败");
                }

            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                DBUtiles.close(prst, connection);
            }



        } else  {
            System.out.println(username + "\t" + "用户不存在");
        }

    }

    private static void updateUser() {
        System.out.println("请输入要修改的用户名");
        String username = scanner.next();

        User user = getUserByUsername(username);
        if (user != null) {
            User newUser = inputUserInfo();

            Connection connection = DBUtiles.getConnection();
            PreparedStatement prst = null;

            try {
                prst = connection.prepareStatement("update t_user set password=?,age=?,sex=? where username=?");
                prst.setString(1,newUser.getPassword());
                prst.setInt(2,newUser.getAge());
                prst.setInt(3,newUser.getSex());
                prst.setString(4,user.getUsername());

                int i = prst.executeUpdate();
                if (i > 0) {
                    System.out.println("修改成功");
                } else {
                    System.out.println("修改失败");
                }

            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                DBUtiles.close(prst, connection);
            }



        } else  {
            System.out.println(username + "\t" + "用户不存在");
        }

    }

    private static User inputUserInfo() {
        System.out.println("输入用户的密码:");
        String password = scanner.next();

        System.out.println("输入用户的年龄:");
        int age = scanner.nextInt();

        System.out.println("输入用户的性别:");
        int sex = scanner.nextInt();

        User user = new User();
        user.setPassword(password);
        user.setSex(sex);
        user.setAge(age);
        return user;
    }

    private static User getUserByUsername(String username) {

        if (username == null || username.length() == 0) {
            System.out.println("用户名不能为空");
            return  null;
        }

        Connection connection = DBUtiles.getConnection();
        PreparedStatement prst = null;
        ResultSet resultSet = null;
        User user = null;

        try {
            prst = connection.prepareStatement("select * from t_user where username = ?");
            prst.setString(1,username);
            resultSet = prst.executeQuery();

            if (resultSet.next()) {
                user = new User();
                user.setId(resultSet.getInt("id"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
                user.setAge(resultSet.getInt("age"));
                user.setSex(resultSet.getInt("sex"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtiles.close(resultSet,prst,connection);
        }

        return user;

    }

    private static void addUser() {

        System.out.println("输入用户的姓名:");
        String username = scanner.next();

        User user = inputUserInfo();
        user.setUsername(username);

        Connection connection = DBUtiles.getConnection();
        PreparedStatement prst = null;


            try {
                prst = connection.prepareStatement("insert into t_user(username,password,age,sex) value(?,?,?,?)");
                prst.setString(1,user.getUsername());
                prst.setString(2,user.getPassword());
                prst.setInt(3,user.getAge());;
                prst.setInt(4,user.getSex());;


                int i = prst.executeUpdate();
                if (i > 0) {
                    System.out.println("添加成功");
                } else {
                    System.out.println("添加失败");
                }

            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                DBUtiles.close(prst, connection);
            }
    }

}


  注意编码问题,jdbc:mysql://localhost:3306/mydb1?characterEncoding=utf-8。

  数据库时间问题。java.sql.Date 继承 java.util.Date,大转小通过时间戳。


public class Test1 {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入时间yyyyMMdd:");

        String time = scanner.next();

        SimpleDateFormat formatter = new  SimpleDateFormat("yyyyMMdd");
        Date date = null;
        try {
            date = formatter.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        // 时间戳
        long longdate = date.getTime();
        // java 时间转 数据库时间
        java.sql.Date  sqldate = new java.sql.Date(longdate);

        Connection connection = DBUtiles.getConnection();
        String sql = "insert into t_date(dateTest) value(?)";
        PreparedStatement statement = null;
        PreparedStatement selectStatement = null;
        ResultSet resultSet = null;
        try {
            statement = connection.prepareStatement(sql);
            // 写入时间
            statement.setDate(1,sqldate);
            int i  = statement.executeUpdate();
            if (i > 0) {
                System.out.println("添加成功");

                selectStatement = connection.prepareStatement("select * from t_date");
                resultSet = selectStatement.executeQuery();
                while (resultSet.next()) {
                    int id = resultSet.getInt("id");
                    Date curdate = resultSet.getDate("dateTest");
                    String curDateString = formatter.format(curdate);
                    System.out.println(id + "\t" + curDateString);
                }


            } else {
                System.out.println("添加失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtiles.close(resultSet,statement,connection);
        }
    }

}

  Data Access Object,DAO 数据访问对象。DAO 实现了业务逻辑与数据库访问相分离。相当于 mvc,用户界面和业务模型封装,通过控制器调用。

  将刚才的用户代码新建一个工程的方法。
  复制一份刚才的工程文件夹,修改文件名和 .iml 名。
  左上角File -> Project Structure -> Modules -> + Import Module,添加 .iml -> 右下角 OK。
  修改工程包名如下。
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值