实习日志Day3_JDBC的优化与ssm架构的初步理解

本文介绍了在Idea平台上使用Java实现并优化JDBC的过程,包括MVC设计模式的应用,以及通过SSM框架(Spring+SpringMVC+Mybatis)进行数据库操作的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC的优化

昨天的实习内容是在Idea平台上用Java实现JDBC(具体内容见下面的一篇博客)。
JDBC详细实现步骤
第一次写JDBC,还不够完善,所以今天在老师的带领下完成了JDBC的优化。

初次接触MVC

MVC全名是Model View Controller,是模型-视图-控制器的缩写,一种软件设计典范。
Model(模型):处理应用程序中数据逻辑的部分,通常模型对象负责在数据库中存取数据。
View(视图):通常视图是依据模型数据创建的,负责处理数据显示。
Controller(控制器):是应用程序中处理用户交互的部分。

改进后的JDBC

bean包:UserInfo类及封装

package com.whut.bean;

public class UserInfo {
    private int id;//封装
    private String name;
    private int age;
    private String sex;
    private String salary;

    public UserInfo(String name, int age, String sex, String salary) {//构造方法
    }

    public int getId() {//getter
        return id;
    }

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

    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;
    }

    public String getSex() {
        return sex;
    }

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

    public String getSalary() {
        return salary;
    }

    public void setSalary(String salary) {
        this.salary = salary;
    }

    public UserInfo(int id, String name, int age, String sex, String salary) {//toString,方便打印
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", salary='" + salary + '\'' +
                '}';
    }
}

dao包:增删改查方法的具体实现和主函数(只给出了查询和增添)

package com.whut.dao;

import com.whut.bean.UserInfo;
import com.whut.util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserInfoDao {
    public List<UserInfo> findUsers() {
        ResultSet resultSet = null;
        PreparedStatement statement = null;
        Connection connection = null;
        List<UserInfo> userInfos = new ArrayList<>();

        try {
            //加载驱动 创建连接
            connection = DBUtil.getConnection();
            //System.out.println("创建连接成功");
            //写sql
            String sql = "select * from user";
            //得到statement对象
            statement = connection.prepareStatement(sql);
            //执行sql得到结果集
            resultSet = statement.executeQuery();
            while (resultSet.next()) {
                int id = resultSet.getInt(1);
                String name = resultSet.getString(2);
                int age = resultSet.getInt(3);
                String sex = resultSet.getString(4);
                String salary = resultSet.getString(5);
                UserInfo userInfo = new UserInfo(name, age, sex, salary);
                userInfo.setId(id);
                userInfos.add(userInfo);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(resultSet,statement,connection);//关闭资源
        }
        return userInfos;
    }
    public void addUser(UserInfo userInfo){
        Connection connection=null;
        PreparedStatement statement=null;
        //1.加载驱动
        try {
            connection=DBUtil.getConnection();
            //3.写sql
            String sql="insert into userinfo (id,name,age,sex,salary) values (?,?,?,?,?)";
            //4.得到statement对象
            statement = connection.prepareStatement(sql);
            statement.setInt(1,userInfo.getId());
            statement.setString(2,userInfo.getName());
            statement.setInt(3,userInfo.getAge());
            statement.setString(4,userInfo.getSex());
            statement.setString(5,userInfo.getSalary());
            //5.执行sql  得到结果集
            statement.executeUpdate();//添加
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(null,statement,connection);//关闭资源
        }
    }
    public static void main(String[] args){
        UserInfoDao test = new UserInfoDao();
        test.findUsers();
        test.addUser(new UserInfo("玛丽", 32, "女", "4000"));
    }
}

DBUtil包:工具包,实现驱动加载,建立连接,释放连接

package com.whut.util;

import java.sql.*;

public class DBUtil {
    public static Connection getConnection() {
        //Connection connection=null;
            try {
                //加载驱动
                Class.forName("com.mysql.jdbc.Driver");
                //创建连接
                Connection connection= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&"+"characterEncoding=utf-8&user=root&password=root");
            } catch (Exception e) {
                e.printStackTrace();
            }
            //System.out.println("创建连接成功");
        return null;
    }
    public static void close(ResultSet resultSet, Statement statement,Connection connection){
        //关闭资源
        if(resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(connection!=null){//为空的话会报错
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

ssm框架的初步理解

IDEA+Maven 整合SSM框架实现简单的增删改查
SSM框架(Spring + Spring MVC +Mybatis)是目前使用最多的java应用框架。
spring ioc 控制反转 spring帮我们创建对象 和 aop
springmvc 控制
mybatis 数据库操作

开发工具:

  • IntelliJ IDEA 2018.2.2
  • tomcat 9.0.94
  • jdk1.8.0_201
  • Mysql 5.5.58
  • maven 3.6.0

工程结构:

工程图片
更加详细的项目开发过程会在明天的博客里面介绍(欢迎评论)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值