Java 创建三层框架附属mysq封装(源)

这篇博客介绍了如何在Java Web环境中进行数据库操作,包括创建MySQL数据库表、定义Student类、编写JDBC工具类实现增删改查功能,并展示了Service、DAO的接口及实现。示例中通过StudentController展示数据查询过程。
摘要由CSDN通过智能技术生成

1.新建一个new project项目

2.点击next

3.取一个名字

在java文件夹下面创建文件

创建名字为

1.Controller -- 用于接受用户传过来的数据

2.Serive -- 用于处理数据的业务

3.Dao -- 用于容器里面的增删改查

4.entry -- 主方法入口

5.Util -- 直接调用包 

6.pojo -- 创建对象

点击右侧的Database

 选择mysql

 输入自己的账号和密码,然后点击OK

 点击创建数据库表

CREATE TABLE `student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(10) DEFAULT NULL COMMENT '姓名',
      `number` varchar(20) DEFAULT NULL COMMENT '学号',
      PRIMARY KEY (`id`)
      ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='学生表';

在pojo里面创建一个学生类Student

package pojo;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Student(int id, String name, String number) {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

数据库增删改查工具类

public class JDBCDemo {


    /**
     * 创建学生表
     * CREATE TABLE `student` (
     * `id` int(11) NOT NULL AUTO_INCREMENT,
     * `name` varchar(10) DEFAULT NULL COMMENT '姓名',
     * `number` varchar(20) DEFAULT NULL COMMENT '学号',
     * PRIMARY KEY (`id`)
     * ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='学生表';
     *
     * @param args
     * @throws Exception
     */
    //TODO 先跑一下主方法
    public static void main(String[] args) throws Exception {

        // 增加
        add("刘一", "s20220315");
        add("陈二", "s20220316");
        add("张三", "s20220317");
        add("李四", "s20220318");
        add("王五", "s20220319");
        add("赵六", "s20220320");
        // 删除
        delete(1);
        // 修改
        update(1, "王二", "123456");
        // 查询
        select();
    }

    /**
     * 增加学生
     *
     * @param name   姓名
     * @param number 学号
     * @throws Exception
     */
    private static void add(String name, String number) throws Exception {
        Connection conn = getConnection();
        //3. 定义sql
        String sql = "INSERT INTO `student`(`name`, `number`) VALUES ('" + name + "', '" + number + "')";
        //4. 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        //5. 执行sql
        int count = stmt.executeUpdate(sql);
        //6. 处理结果
        if (count > 0) {
            System.out.println("执行成功");
        }
        //7. 释放资源
        stmt.close();
        conn.close();
    }

    /**
     * 删除学生
     *
     * @param id id
     * @throws Exception
     */
    public static void delete(Integer id) throws Exception {
        Connection conn = getConnection();
        //3. 定义sql
        String sql = "DELETE FROM student WHERE id = " + id;
        //4. 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        //5. 执行sql
        int count = stmt.executeUpdate(sql);
        //6. 处理结果
        if (count > 0) {
            System.out.println("执行成功");
        }
        //7. 释放资源
        stmt.close();
        conn.close();
    }


    /**
     * 修改学生
     *
     * @param id     id
     * @param name   姓名
     * @param number 学号
     * @throws Exception
     */
    public static void update(Integer id, String name, String number) throws Exception {
        Connection conn = getConnection();
        //3. 定义sql
        String sql = "UPDATE `student` SET `name` = '" + name + "', `number` = '" + number + "' WHERE `id` = " + id;
        System.out.println("修改sql语句:" + sql);
        //4. 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        //5. 执行sql
        int count = stmt.executeUpdate(sql);
        //6. 处理结果
        if (count > 0) {
            System.out.println("执行成功");
        }
        //7. 释放资源
        stmt.close();
        conn.close();
    }

    /**
     * 查询所有学生
     *
     * @throws Exception
     */
    public static ArrayList<Student> select()  {
        ArrayList<Student> students=new ArrayList<>();

        try{
            Connection conn = getConnection();
            //3. 定义sql
            String sql = "select * from student";
            //4. 获取执行sql的对象 Statement
            Statement stmt = conn.createStatement();
            //5. 执行sql
            ResultSet rs = stmt.executeQuery(sql);
            //6. 处理结果
            // 6.1 光标向下移动一行,并且判断当前行是否有数据


            while (rs.next()) {
                // 6.2获取数据  getXxx()
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String number = rs.getString("number");
                Student student = new Student(id, name, number);
                students.add(student);
            }

            //7. 释放资源
            stmt.close();
            conn.close();
        }catch (Exception e){
            e.printStackTrace();
        } finally {

        }
        return students;

    }


    public static Connection getConnection() throws Exception {
        //1. 注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2. 获取连接
        String url = "jdbc:mysql://127.0.0.1:3306/demo?useSSL=false";
        String username = "root";
        String password = "root";
        Connection conn = DriverManager.getConnection(url, username, password);
        return conn;
    }

然后点击运行

执行成功
执行成功
执行成功
执行成功
执行成功
执行成功
修改sql语句:UPDATE `student` SET `name` = '王二', `number` = '123456' WHERE `id` = 1

如果执行不了,请在pom.xml

在<build>标签上面写入

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
        </dependency>
    </dependencies>

在dao文件创建一个接口StudentDao

import com.itheima.pojo.Student;

import java.util.ArrayList;

import com.itheima.pojo.Student;

import java.util.ArrayList;

public interface StudentDao {
    /***
     * findAllData 查询所有数据
     * @return
     */
    ArrayList<Student> findAllData();

}

在dao文件下面创建一个impl文件夹在创建一个StudentDaoImpl

import com.itheima.dao.StudentDao;
import com.itheima.pojo.Student;
import com.itheima.util.JDBCDemo;

import java.util.ArrayList;

public class StudentDaoImpl implements StudentDao {
    @Override
    public ArrayList<Student> findAllData() {
        ArrayList<Student> list = JDBCDemo.select();
        return list;
    }


}

Service文件夹创建一个StudentService接口

import com.itheima.dao.StudentDao;
import com.itheima.dao.impl.StudentDaoImpl;
import com.itheima.pojo.Student;
import com.itheima.service.StudentService;

public interface StudentService {

    ArrayList<Student> findStudent();
}

在进入service文件创建一个impl文件

import com.itheima.dao.StudentDao;
import com.itheima.pojo.Student;
import com.itheima.util.JDBCDemo;

public class StudentServiceImpl implements StudentService {

    private StudentDao studentDao = new StudentDaoImpl();
    @Override
    public ArrayList<Student> findStudent() {
        ArrayList<Student> list = studentDao.findAllData();
        return list;
    }
}

在controller文件创建一个StudentController

import com.itheima.pojo.Student;
import com.itheima.service.StudentService;
import com.itheima.service.impl.StudentServiceImpl;

import java.util.ArrayList;

public class StudentController {
    private StudentService studentService = new StudentServiceImpl();
    public void find(){
        ArrayList<Student> list = studentService.findStudent();
        if (list.size() == 0){
            System.out.println("暂无数据");
			return;
        }

        System.out.println("id\t\t\t年龄\t\t\t名字");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }

    public static void main(String[] args) {
        new StudentController().find();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值