数据库操作

分层设计原理

  1. dao(主要进行持久化操作(对于数据库的操作都是持久化操作;jdbc;dbutils;mybatis;hibernate;springjpa;springjdbctemoplete等等))数据访问层(一般是接口跟实现)
  2. service(主要进行业务层的操作,主要是承上启下;向下调用dao;向上返回数据给控制层controller(servlet)业务层(也是接口跟实现)
  3. controller(主要进行前端请求接收;根据请求进入不同的方法操作,向下调用service)控制层
  4. entity(pojo、domain:存放与数据库表一一对应的javaBean)实体类
  5. tools(基本上的所有的工具类都放在里面(数据库连接,String转换,日期转换,数字转换,json转换,自己写的工具))Hutool糊涂工具封装了各种各样的工具

PO,VO,BO,POJO的区别

PO:持久化对象,一个PO就是数据库中的一条记录

POJO:一个简单普通的Java对象,不包含业务逻辑或持久逻辑,持久化后是PO,传递过程中是DTO,对应表示层是VO

BO:业务对象,一个对象的行为和动作

VO:Value Object值对象,体现在视图的对象,在控制层与视图层进行传输交换

DTO(TO):数据传输对象,经过处理后的PO

数据库的连接

static String user = "账号";
static String password = "密码";
static String url = "jdbc:mysql://localhost:端口号/数据库名?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8";

static {
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");//8.0的数据库
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}
//获取连接
public static Connection getConnection() {
    Connection conn = null;
    try {
        conn = DriverManager.getConnection(url, user, password);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return conn;
}
//关闭资源
public static void close(Connection connection, ResultSet rs, Statement ps) {
    if (rs != null) {
        try {
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (ps != null) {
        try {
            ps.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (connection != null) {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Connection:接口

Statement、PreparedStatement:接口

ResultSet:接口

接口:相当模板,所有的操作都写在里边,dao中的接口跟boot中的接口不一样

数据库设置的类型为char或varchar,在java中都是设置成String

数据查询

public static ResultSet getData(String sql,Object... datas) {
    try{
        conn= DBUtils.getConnection();
        ps = conn.prepareStatement(sql);
        if(datas!=null){
            for(int i=0;i<datas.length;i++){
                ps.setObject(i+1,datas[i]);
            }
        }
        rs = ps.executeQuery();
    }catch(Exception e){
        e.printStackTrace();
    }finally {
        close();
    }
    return rs;
}

数据增加、删除、修改

 public static int DataOpera(String sql,Object... datas) {
     int count=0;
     try{
         conn= DBUtils.getConnection();
         ps = conn.prepareStatement(sql);
         if(datas!=null){
             for(int i=0;i<datas.length;i++){
                 ps.setObject(i+1,datas[i]);
             }
         }
         count = ps.executeUpdate();
     }catch(Exception e){
         e.printStackTrace();
     }finally {
         close();
     }
     return count;
 }
posted @ 2021-07-20 13:57  Yuriki  阅读(78)  评论(0)    收藏  举报