实习记录day2

今日主要学习内容

idea连接数据库

连接数据库主要分为七步:

    1.获取驱动

    2.创建连接

    3.编写sql

     4.获取prepareStatement

    5.执行sql语句,并返回结果

    6.处理结果集

    7.关闭资源

1.首先建立项目,再web文件夹下创建一个lib包,并在项目中导入相应的jar包

在这里插入图片描述
2.再数据库中建表并保存
在这里插入图片描述
3.编写连接数据库代码

public class TestUser {

    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/first?useSSL=true&characterEncoding=utf-8&user=root&password=123456");
            System.out.println("数据库连接成功" + conn);
            //Connection conn = DriverManager.getConnection("jdbc:mysql:///java", "root","root");
            String sql = "select *from tb_user";
            pstm = conn.prepareStatement(sql);
            rs = pstm.executeQuery();

            while (rs.next()) {
                System.out.println("用户id为" + rs.getInt(1));
                System.out.println("用户姓名" + rs.getString(2));
                System.out.println("用户密码" + rs.getString(3));

            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (Exception e) {
                }
                if (pstm != null) {
                    pstm.close();
                }
                if (conn != null) {
                    conn.close();
                }
            }
        }
    }
}

4.运行,显示结果如图,数据库连接成功。
在这里插入图片描述

jdbc对dao层的封装

dao:Data Access Object
将连接数据库 对其进行增删该查的函数写在Dao里
程序经常需要多次去数据库进行操作,要是每次都写连接太麻烦,所以直接写在一个类里用的时候可以直接调用。

  1. 属性封装
  2. Get set
    User
    user = new User();
    User.get/set
  3. 构造方法
    User
    user = new User(id,username,password)
  4. toString 方法重写
    处理结果集的时候,如果没有toString,遍历对象的时候就会出现一个对象的地址。
public class User {
    //对属性的封装
    private  int id;
    private  String username;
    private  String password;

    //get set

    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 User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public  User(){

    }
    //toString 方法重写
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

//工具类
public class DBUtil {
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/java?useSSL=true&characterEncoding=utf-8";
    private static String user = "root";
    private static String password = "123456";

    static {
        try {
            //驱动
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //连接
    public static Connection get_Conn() throws SQLException {
        Connection conn = DriverManager.getConnection(url, user, password);
        System.out.println("数据库连接成功");
        return conn;
    }

    public static void get_CloseConn(ResultSet rs, PreparedStatement pstm, Connection conn) throws SQLException {
        if (rs != null) {
            try {
                rs.close();
            } catch (Exception e) {
            }
            if (pstm != null) {
                pstm.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }

    //单元测试
    public static void main(String[] args) {
        try {
            get_Conn();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }
    }
}
//直接和数据库做交互
public class UserDao {
    Connection conn = null;
    PreparedStatement pstm = null;
    ResultSet rs = null;

    //查询全部
    public List<User> findAllUser() {
        try {
            //获取连接
            DBUtil.get_Conn();
            //获取存放sql语句的对象
            conn.prepareStatement("select *from tb_user");
            //执行sql并返回结果
            rs = pstm.executeQuery();
            //创建集合
            List<User> userList = new ArrayList<>();
            //遍历结果/处理结果
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt(1));
                user.setUsername(rs.getString(2));
                user.setPassword(rs.getString(3));

                userList.add(user);
                System.out.println(userList);
            }
            return userList;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

了解ssm,mybatis,ssh,springMVC相关概念

JavaEE体系结构包括四层,从上到下分别是应用层、Web层、业务层、持久层。Struts和SpringMVC是Web层的框架,Spring是业务层的框架,Hibernate和MyBatis是持久层的框架。

1.Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

2.MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。 MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain
Old Java Objects,普通的Java 对象)映射成数据库中的记录.
1)MyBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。
2)它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
3)mybatis与hibernate的对比?
mybatis提供一种“半自动化”的ORM实现。这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。 而mybatis的着力点,则在于POJO与SQL之间的映射关系。

3.SSH在J2EE项目中表示了3种框架,即 Spring + Struts +Hibernate。 Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

4.Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发。

小结

今天跟着老师的教学学习了idea的基本操作,以及dao的封装。 在学框架之前,写项目时总是要花大量的时间去写数据库操作层代码,这样会大大降低我们的效率,为了解决这个问题,对DAO层进行封装让我们只需要写sql语句,不需要再写繁琐的数据库操作语句,增强代码的复用性,让我们把主要精力放在业务逻辑上。
因为之前对于编码的不太熟悉,今天的编写过程不太顺利,并且对于老师布置的任务(继续完成dao的封装)未能完全完成。但是对于结构有了一定的熟悉,对且能够自主地完成数据库地连接,相对来说一个进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值