JavaWeb

187 阅读3分钟

JavaWeb

项目结构

image-20230831151450677

image-20230831164225352

类和方法的区别

类由class关键字去声明

//类  由class去声明    类的名字叫TestDao
public class TestDao {
}

方法 方法的名字在小括号之前

//该方法的名字叫main
public static void main(String[] args){
    
}
//定义方法   普通方法 不具备运行代码得功能   void表示不返回任何东西
public void hello(){
}

区分方法和类 只需要去看有没有小括号 有小括号就是方法

一个类中,方法名是唯一的

image-20230831160546868

try...catch 语法

try{
    //.....
}catch(){
    
}catch(){
    
}

查询

通过代码将数据库中一个表的所有数据读取出来

注意:当我们使用select语句时,就不会再使用executUpdate方法了

采用的是executeQuery方法,它会返回一个ResultSet对象,该对象里有我们读取出来的数据

我们只需要将他拿出来

resultSet.getXXX   //这里的xxx表示数据库字段的类型  是什么类型就写什么

以getInt方法为例,它有两种用法,一种是传递字段的索引 一种是传递字段的名字

传递字段的索引 简单理解:传递当前想获取的字段是表里是第几列

传递字段的名字: 参数一定要和数据库里的字段的名字一致

image-20230901143249634转存失败,建议直接上传图片文件

 public static void main(String[] args) {
        //获取链接
        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql:///test", "root", "admin");
            Statement statement = connection.createStatement();
            // ResultSet 结果集
            ResultSet resultSet = statement.executeQuery("select * from product");
            //可能返回的是多条数据  所以在这里需要循环
            while (resultSet.next()){
                int id = resultSet.getInt("id");
              
                String productName = resultSet.getString("productName");
                System.out.println(id+"========"+productName);
            }
​
​
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

image-20230831170954887

查询表里的某条数据

变化的是 sql image-20230831170954887

 public static void main(String[] args) {
        try{
        Connection connection = DriverManager.getConnection("jdbc:mysql:///test", "root", "admin");
        Statement statement = connection.createStatement();
        // ResultSet 结果集
        ResultSet resultSet = statement.executeQuery("select * from users where id=1");
        //可能返回的是多条数据  所以在这里需要循环
        while (resultSet.next()){
            int id = resultSet.getInt("id");

            String username = resultSet.getString("username");
            String password = resultSet.getString("password");
            String name = resultSet.getString("name");
            String phone = resultSet.getString("phone");
            String email = resultSet.getString("email");
            int role = resultSet.getInt("role");
            System.out.println(id+"========"+username+"==="+password+"==="+name+"==="+phone+"==="+email+"==="+role);
        }

    } catch (
    SQLException throwables) {
        throwables.printStackTrace();
    }
    }


接口和类的区别

接口是通过interface去声明的

类是通过class去声明的

接口只定义方法 接口中的方法的具体内容由实现类去实现

类既定义方法还要实现方法的具体内容

DAO设计

设计思想:主要是将我们对数据库的操作独立出来 在改动时不影响其他相邻的逻辑代码

结构如下:

image-20230903094627711

插入数据

通过dao思想 将student对象的值插入到数据库中

1.先在domamin包中定义实体类

public class Student {
    //属性  见名知义
    private int id;
    private String username;
    private String password;
    private String name;
    private String phone;
    private String email;
    //getter
    //setter
}

image-20230903105645533

2.编写Dao接口

image-20230903110344477

//接口
public interface StudentDao{
      //增
      void addStudent(Student student);
      //删
      void deleteStudent(int id);
      //改
      void updateStudent(Student student);
      //查询表里所有的数据
      List<Student> getAll();
      //根据id查询表里的某条数据
      Student getOne(int id);
​
}
​

3.编写Dao接口的实现类

image-20230903110456032

public class StudentDAOImpl implements StudentDao {
​
    //往数据库里添加一条数据
    @Override
    public void addStudent(Student student) {
        //实现方法里面的内容
        Connection connection = null;
        try {
            connection = DriverManager.getConnection("jdbc:mysql:///test", "root", "admin");
            // 创建语句对象
            Statement statement = connection.createStatement();
            //发送并执行sql
            // i代表的是受影响行数
            int i = statement.executeUpdate("insert into users (username,password) values('"+student.getUsername()+"',"+student.getPassword()+")");
            //释放资源
            statement.close();
            connection.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
​
​
    }
​
    //从数据库表中删除一条数据
    @Override
    public void deleteStudent(int id) {
​
    }
​
    @Override
    public void updateStudent(Student student) {
​
    }
​
    @Override
    public List<Student> getAll() {
        return null;
    }
​
    @Override
    public Student getOne(int id) {
        return null;
    }
​
​
}
​

4.测试写的方法到低有没有问题

在测试方法当中调用刚才我们写的方法

image-20230903110628490