java高级基础01

java高级基础知识点

1. Idea创建项目

认识idea可以创建的项目类别
在这里插入图片描述

以创建一个简单的java项目为例

提前安装好本地的java环境
配置jdk
在这里插入图片描述
创建一个具有模板的普通java项目
在这里插入图片描述
设置项目基本信息
在这里插入图片描述
项目基本框架
在这里插入图片描述
搭建项目结构
在这里插入图片描述

  • dao层: 数据库访问对象包
  • service层: 控制层中控制业务逻辑的服务包,也是应用逻辑处理的包
  • vo 层: 模型对象包,通常存储实体类(跟数据库中的表相对应)
  • servlet:控制层中负责转发操作的类包
以用户管理系统增删改查操作为例

设计数据库(具体见后面数据库的开发和设计

创建实体类User.class
在这里插入图片描述
User.java

package com.ctgu.vo;

public class User {
    
    
    private int id;
    private String username;
    private String password;
    private String realName;
    private String logoUrl;
    private int age;
    private String sex;
    private int deptId;

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getUsername() {
    
    
        return username;
    }

    public void setUsername(String username) {
    
    
        this.username = username;
    }

    public String getPassword() {
    
    
        return password;
    }

    public void setPassword(String password) {
    
    
        this.password = password;
    }

    public String getRealName() {
    
    
        return realName;
    }

    public void setRealName(String realName) {
    
    
        this.realName = realName;
    }

    public String getLogoUrl() {
    
    
        return logoUrl;
    }

    public void setLogoUrl(String logoUrl) {
    
    
        this.logoUrl = logoUrl;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public String getSex() {
    
    
        return sex;
    }

    public void setSex(String sex) {
    
    
        this.sex = sex;
    }

    public int getDeptId() {
    
    
        return deptId;
    }

    public void setDeptId(int deptId) {
    
    
        this.deptId = deptId;
    }
}

创建UserDao.java与数据库相关联
1. 连接数据库
驱动程序名称与数据库系统相关。注册驱动程序的最常见方法是使用Java的Class.forName()方法将驱动程序的类文件加载到内存中,并自动注册它。
在这里插入图片描述
我们可以使用DriverManager.getConnection()方法打开一个连接。
在这里插入图片描述
有三种重载的DriverManager.getConnection()方法:

 getConnection(String url);
 getConnection(String url,Properties prop);
 getConnection(String url,String user,String password);

常见的JDBC驱动程序名称和数据库URL

RDBMS Class.forName DriverManager.getConnection
MySQL com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/数据库名称
ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@ hostname:port Number:databaseName
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2: hostname:port Number / databaseName
Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds: hostname:port Number / databaseName

2.创建主类,测试数据库是否连接成功
在这里插入图片描述
测试数据库是否连接成功
在这里插入图片描述
3.与数据库交互实现增删改查操作
定义相关变量
在这里插入图片描述
PreparedStatement用于多次执行SQL语句。

  • JDBC中的所有参数都由?符号。?被称为参数标记。我们必须在执行SQL语句之前为每个参数提供值。
  • PreparedStatement 中的setXXX()方法将值绑定到参数,其中XXX表示Java数据类型。
  • 与Java数组或List中的集合框架不同。PreparedStatement中的参数索引从位置1开始。

ResultSet处理从SQL select语句返回的结果。

ResultSet对象维护一个指向结果集中当前行的游标。对于某一行,我们可以使用 java.sql.ResultSet 中的方法来获取数据逐列。

增:插入数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删:根据用户名删除用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

改:根据用户名修改对应用户名的密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:此处若根据id修改密码updateById(User user)会出错。数据库中User的id设置为自动分配且自增的(从1开始自增),即此时在main方法中定义的user的id为0(只有当定义的user数据已经存储到数据库中才会为其分配具体的id值),则此时传到updateById中的user的id为0,数据库中查询不到id为0的记录,故会出错。

查:根据用户名查找用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查找所有用户
在这里插入图片描述
在这里插入图片描述
UserDao.java

package com.ctgu.dao;


import com.ctgu.vo.User;

import java.sql.*;
import java.util.*;

public class UserDao {
    
    
//    连接数据库
    Connection con;
//    与数据库相联系,将想要执行的操作在数据库中体现出来
    PreparedStatement pstate;
//    处理从SQL select语句返回的结果,维护一个指向结果集中当前行的游标
    ResultSet rset;

    public UserDao() throws SQLException, ClassNotFoundException {
    
    
//        连接数据库
//        注册JDBC驱动程序
        Class.forName("com.mysql.jdbc.Driver");
//        加载驱动程序后,使用DriverManager.getConnection()方法打开一个连接
        this.con = DriverManager.getConnection("jdbc:mysql://localhost:3306/java-work01","root","root");
        if (con != null){
    
    
            System.out.println("数据库连接成功!!");
            System.out.println("---------------------------------------------------");
        }
        else{
    
    
            System.out.println("数据库连接失败");
            System.out.println("---------------------------------------------------");
        }
    }
//    增加
    public int insert(User user) throws SQLException {
    
    
        String sql = "insert into users(username,password,real_name,logo_url,age,sex,dept_id) values(?,?,?,?,?,?,?)";
//      pstate准备插入到数据库中的一条记录,pstate中存放即将插入的数据
        pstate = con.prepareStatement(sql);
        pstate.setString(1,user.getUsername());
        pstate.setString(2, user.getPassword());
        pstate.setString(3, user.getRealName());
        pstate.setString(4, user.getLogoUrl());
        pstate.setInt(5,user.getAge());
        pstate.setString(6, user.getSex());
        pstate.setInt(7,user.getDeptId());
//      executeUpdate执行操作并跟新数据库
        return pstate.executeUpdate();
    }
//    删除
    public void deleteByUsername(String username) throws SQLException {
    
    
        String sql = "delete from users where username = ?";
        pstate = con.prepareStatement(sql);
        pstate.setString(1, username);
        pstate.executeUpdate();
    }
//    修改用户密码
    public int updatePassword(User user) throws SQLException {
    
    
        String sql = "update users set password = ? where username = ?";
        pstate = con.prepareStatement(sql);
        pstate.setString(1,user.getPassword());
        pstate.setString(2,user.getUsername());
        return pstate.executeUpdate();
    }
//    根据用户名查找用户
    public User findByUsername(String username) throws SQLException {
    
    
        String sql = "select * from users where username = ?";
        pstate = con.prepareStatement(sql);
        pstate.setString(1,username);

//        executeQuery执行命令并返回查询结果
        ResultSet rset = pstate.executeQuery();
        User user = new User();
        if (rset.next()) {
    
    
            user.setId(rset.getInt("id"));
            user.setUsername(username);
            user.setRealName(rset.getString("real_name"));
            user.setAge(rset.getInt("age"));
            user.setSex(rset.getString("sex"));
            user.setLogoUrl(rset.getString("logo_url"));
            user.setPassword(rset.getString("password"));
            user.setDeptId(rset.getInt("dept_id"));
        }
        return user;
    }
//    查找所有用户
    public List<User> findAll() throws SQLException {
    
    
        String sql = "select * from users";
        pstate = con.prepareStatement(sql);
        ResultSet rset = pstate.executeQuery();
        List<User> userList = new ArrayList<User>();
        while (rset.next()){
    
    
            User user = new User();
            user.setId(rset.getInt("id"));
            user.setUsername(rset.getString("username"));
            user.setRealName(rset.getString("real_name"));
            user.setAge(rset.getInt("age"));
            user.setSex(rset.getString("sex"));
            user.setLogoUrl(rset.getString("logo_url"));
            user.setPassword(rset.getString("password"));
            user.setDeptId(rset.getInt("dept_id"));

            userList.add(user);
        }
        return userList;
    }
//    输出用户信息
    public static void printUserInfo(User user){
    
    
        System.out.println("id = " + user.getId() + ", username = " + user.getUsername() + ", password = " + user.getPassword() +
                ", realName = " + user.getRealName() + ", age = " + user.getAge() + ", sex = " + user.getSex() +
                ", deptId = " + user.getDeptId() +", logoUrl = " + user.getLogoUrl() + "\n");
    }
//    创建实体对象
    public static User createUser(int age, String sex, String username, String realName, String password, String logoUrl, int deptId){
    
    
        User user = new User();
        user.setAge(age);
        user.setSex(sex);
        user.setUsername(username);
        user.setLogoUrl(logoUrl);
        user.setPassword(password);
        user.setRealName(realName);
        user.setDeptId(deptId);
        return user;
    }
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
    
    
//      创建数据库访问对象
        UserDao dao = new UserDao();
//      创建实体对象
        User user1 = createUser(18,"女","withlan","ljy","000427","/img/cat.png",3);
        User user2 = createUser(3,"男","leon","wh","123456","/img/dog.png",1);
        User user3 = createUser(20,"男","lan","wsy","000607","/img/pig.png",2);
        User user4 = createUser(40,"女","Tom","rered","000331","/img/girl.png",3);

      将数据插入到数据库中
//        System.out.println("插入数据");
//        dao.insert(user1);
//        dao.insert(user2);
//        dao.insert(user3);
//        dao.insert(user4);
//
//        printUserInfo(user1);
//        printUserInfo(user2);
//        printUserInfo(user3);
//        printUserInfo(user4);
//        System.out.println("---------------------------------------------------");
    根据用户名删除用户
//        System.out.println("删除用户名为\"withlan\"的用户数据");
//        dao.deleteByUsername("withlan");
//        System.out.println("---------------------------------------------------");
//
        修改密码
//        System.out.println("修改用户的密码为\"root\"");
//        user2.setPassword("root");
//        dao.updatePassword(user2);
//        printUserInfo(user2);
//        System.out.println("---------------------------------------------------");
//
//        根据用户名查找用户
        System.out.println("根据id查找用户");
        User user = dao.findByUsername("Tom");
        printUserInfo(user);
        System.out.println("---------------------------------------------------");

//        查找所有用户
        System.out.println("查找所有用户");
        List<User> uList = dao.findAll();
        for (int i = 0;i < uList.size();i++){
    
    
            System.out.println("i = " + i + "\n");
            printUserInfo(uList.get(i));
        }
        System.out.println("---------------------------------------------------");
    }
}

补充:导jar包

在这里插入图片描述
File->Project Structure->modules->项目->±>JARs or Directories->添加jar包
添加完成,直接运行即可。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44836362/article/details/114453490