JDBC对dao层的封装

昨天还在对于自己将DBHelper的实现洋洋得意,今天老师讲完发现自己还是菜了
以下是对于今天所学的个人理解

关于Java mvc分层

  • MVC即模型-视图-控制器,将应用程序的逻辑层与展现层进行分离的一种设计模式 + 传统的MVC包括三个方面:模型、视图、控制器。

写的较大型的代码比较少,所以对分层并没有太深的认识
今天初步了解就觉得简单多了

首先是不同包的含义

  • bean包 顾名思义请求,主要是和view 即我们所说的视图就是页面打交道
  • dao包 就是和数据库打交道的,crud 即增删改查
  • model 就是实体类,就是和数据库对于,所生产表的一些属性
  • service 服务器层,也叫业务逻辑层,调用dao中的方法,action又调用它

今天完成了对dao层的封装
代码的结构

  • User类
package bean;
// 实体类原型 -user; 实体类模型映射数据库字段

public class User {

    //1.对属性,参数的封装
    private int id; //用户id
    private String usename;     //用户名
    private String usepassword;//用户密码

    //2.get set

    public int getId() {
        return id;
    }

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

    public String getUsename() {
        return usename;
    }

    public void setUsename(String usename) {
        this.usename = usename;
    }

    public String getUsepassword() {
        return usepassword;
    }

    public void setUsepassword(String usepassword) {
        this.usepassword = usepassword;
    }

    //3.

    public User(int id, String usename, String usepassword) {
        this.id = id;
        this.usename = usename;
        this.usepassword = usepassword;
    }

    public User() {
    }

    //4.toString 方法重写

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", usename='" + usename + '\'' +
                ", usepassword='" + usepassword + '\'' +
                '}';
    }
}

  • User Dao
package dao;

import bean.User;
import 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;

//UserDao - 可以直接和我们的数据库进行交互
public class UseDao {
    Connection conn = null;
    PreparedStatement pstm = null;
    ResultSet rs = null;


    //查询全部
    public List<User> findAllUser(){

        try {
            //1.获取连接
            conn = DBUtil.get_Conn();
            //2.获取存放sql语句的对象
            pstm = conn.prepareStatement("select * from tb_user");
            //3.执行sql并返回结束
            rs = pstm.executeQuery();
            //创建集合
            List<User> userList = new ArrayList<>();
            //
            while (rs.next()){
                User user = new User();
                user.setId(rs.getInt(1));
                user.setUsename(rs.getString(2));
                user.setUsepassword(rs.getString(3));
                userList.add(user);

            }
            return userList;
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                DBUtil.get_closeConn(rs,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return null;

    }


    //查询个体
    public User findUser(String usename){
        try {
            //1.获取连接
            conn = DBUtil.get_Conn();
            //2.获取存放sql语句的对象
            pstm = conn.prepareStatement("select * from tb_user where usename = '"+usename+"'");
            //3.执行sql并返回结束
            rs = pstm.executeQuery();
            User user = new User();
            while (rs.next()){

                user.setId(rs.getInt(1));
                user.setUsename(rs.getString(2));
                user.setUsepassword(rs.getString(3));
                return user;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                DBUtil.get_closeConn(rs,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    //增加数据
    public int addUser(String usename,String usepassword){
        try {
            User user = findUser(usename);
            conn = DBUtil.get_Conn();

            //System.out.println("姓名:"+user.getUsename());
            //System.out.println(user);

            if(user==null){
                pstm = conn.prepareStatement("insert into tb_user (usename,usepassword) values('"+usename+"','"+usepassword+"' )");
                pstm.executeUpdate();

            }
            else{
                System.out.println("已经存在该用户名");
                return 0;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return 1;
    }

    //修改数据
    public int changeUserPsw(String usename,String newpsw)
    {

            User user = findUser(usename);
            if(user!=null){
                try {
                    conn = DBUtil.get_Conn();
                    pstm = conn.prepareStatement("update tb_user set usepassword = '"+newpsw+"' where usename = '"+usename+"'");
                    pstm.executeUpdate();
                } catch (SQLException e) {
                    e.printStackTrace();
                };

            }else{
                System.out.println("无该用户");
                return 0;//修改失败
            }
            return 1;

    }

    //删除数据
    public int deletUse(String usename)
    {
        User user = findUser(usename);
        if(user!=null){
            try {
                conn = DBUtil.get_Conn();
                pstm = conn.prepareStatement("delete from tb_user where usename ='"+usename+"'");
                pstm.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            };
        }else{
            System.out.println("无该用户");
            return 0;//删除失败
        }
        return 1;
    }



    public static void main(String[] args) {
        UseDao userdao = new UseDao();
        //User user = userdao.findUser("lmx");
        //System.out.println("姓名:"+user.getUsename());
        //查单个

        //userdao.addUser("a","789456");

        //userdao.changeUserPsw("a","123456");
        userdao.deletUse("a");

        List<User> test = userdao.findAllUser();
        int number = test.size();
        for(int i=0;i<number;i++){
            User user1 = test.get(i);
            System.out.println("姓名:"+user1.getUsename());
        }
    }

}


  • DBUtil

package util;

import java.sql.*;

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

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

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

    //3.关闭资源
    public static void get_closeConn(ResultSet rs, PreparedStatement pstm , Connection conn) throws SQLException{
        if(rs!=null){rs.close();}
        if(pstm!=null){pstm.close();}
        if(conn!=null){conn.close();}
    }


    //单元测试
    public static void main(String[] args) {
        try {
            get_Conn();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}


今日感想:

学了三年的理论知识
和实际的使用脱离了太久
还是得和真正的实践结合起来
并且现在的这个也并不算是真正的实践

望日益进步吧
加油

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值