• Java 数据库访问层


    最近项目中需要对mysql进行操作,数据库的知识早在本科毕业那会就忘光了,这几年开发都没接触到数据库的操作。

    借这个机会重新学习,数据库访问层是对数据库操作的一个封装,屏蔽底层的数据操作细节,通过使用DAO对数据库进行增删改查操作。

    本文将以项目中的一小部分为例,介绍如何编写数据库访问层:

    1. 实体类对象

     1 public class CheckInfo {
     2     private Integer id;
     3     private String userName;
     4     private Timestamp checkTime;
     5 
     6     public Integer getId() {
     7         return id;
     8     }
     9 
    10     public void setId(Integer id) {
    11         this.id = id;
    12     }
    13 
    14     public String getUserName() {
    15         return userName;
    16     }
    17 
    18     public void setUserName(String userName) {
    19         this.userName = userName;
    20     }
    21 
    22     public Timestamp getCheckTime() {
    23         return checkTime;
    24     }
    25 
    26     public void setCheckTime(Timestamp checkTime) {
    27         this.checkTime = checkTime;
    28     }
    29 
    30     @Override
    31     public String toString() {
    32         return "CheckInfo [id=" + id + ", userName=" + userName
    33                 + ", checkTime=" + checkTime + "]";
    34     }
    35 
    36 }

    2. 获取数据库连接工具类ConnectionUtil

     1 public class ConnectionUtil {
     2     
     3     public Connection getConnection() {
     4         String username = "root";
     5         String password = "123456";
     6         String url="jdbc:mysql://localhost:3306/checkin";
     7         String driver="com.mysql.jdbc.Driver";
     8         
     9         try {
    10             Class.forName(driver);
    11             return DriverManager.getConnection(url, username, password);
    12         } catch (ClassNotFoundException e) {
    13             e.printStackTrace();
    14         } catch (SQLException e) {
    15             e.printStackTrace();
    16         }
    17         return null;
    18     }
    19 }

    3. 数据访问层接口

    1 public interface CheckInfoDAO {
    2     
    3     public boolean save(CheckInfo checkInfo);
    4     public List<CheckInfo> listCheckInfo();
    5     
    6 }

    4. 数据访问层实现

     1 public class CheckInfoDAOImpl implements CheckInfoDAO {
     2 
     3     @Override
     4     public boolean save(CheckInfo checkInfo) {
     5         boolean flag = false;
     6         ConnectionUtil connUtil = new ConnectionUtil();
     7         Connection conn = null;
     8 
     9         conn = connUtil.getConnection();
    10 
    11         PreparedStatement stmt = null;
    12         String sql = "insert into checkinfo values(name, time) values("
    13                 + checkInfo.getUserName() + "," + checkInfo.getCheckTime()
    14                 + ")";
    15         try {
    16             stmt = conn.prepareStatement(sql);
    17             flag = stmt.execute();
    18         } catch (SQLException e) {
    19             e.printStackTrace();
    20         }
    21         
    22         return flag;
    23     }
    24 
    25     @Override
    26     public List<CheckInfo> listCheckInfo() {
    27         List<CheckInfo> checkInfos = new ArrayList<CheckInfo>();
    28         
    29         ConnectionUtil connUtil = new ConnectionUtil();
    30         Connection conn = null;
    31 
    32         conn = connUtil.getConnection();
    33 
    34         PreparedStatement stmt = null;
    35         String sql = "select * from checkinfo";
    36         ResultSet resultSet = null;
    37         
    38         try {
    39             stmt = conn.prepareStatement(sql);
    40             resultSet = stmt.executeQuery();
    41             while(resultSet.next()) {
    42                 CheckInfo ci = new CheckInfo();
    43                 ci.setId(resultSet.getInt(1));
    44                 ci.setUserName(resultSet.getString(2));
    45                 ci.setCheckTime(resultSet.getTimestamp(3));
    46                 checkInfos.add(ci);
    47             }
    48         } catch (SQLException e) {
    49             e.printStackTrace();
    50         }
    51         
    52         return checkInfos;
    53     }
    54 
    55 }

    mysql中的datetime类型对应于java的TimeStamp类型。

    5.测试类

     1 public class TestCase {
     2 
     3     public static void main(String[] args) {
     4         
     5         testListCheckInfo();
     6     }
     7 
     8     private static void testListCheckInfo() {
     9         CheckInfoDAO checkInfoDAO = new CheckInfoDAOImpl();
    10         List<CheckInfo> checkInfos = checkInfoDAO.listCheckInfo();
    11         
    12         for (CheckInfo checkInfo : checkInfos) {
    13             System.out.println(checkInfo);
    14         }
    15     }
    16 
    17 }

     数据库建表语句:

    1 create table if not exists checkinfo (
    2     id int(10) not null primary key auto_increment,
    3     userid varchar(40),
    4     time datetime
    5 );
  • 相关阅读:
    《贝叶斯优化: 一种更好的超参数调优方式》
    《从Google Visor到Microsoft NNI再到Advisor调参服务接口发展史》
    《归一化激活层的进化:谷歌Quoc Le等人利用AutoML 技术发现新型ML模块》
    《通用视觉 & NAS》
    《Object Detection-IOU Net笔记》
    《Detectron2之ROIAlign》
    《IoUNet(6)_源码_RoIAlign(1)》
    聊天机器人资源合集:项目,语聊,论文,教程。
    一个使用 Python 的人工智能聊天机器人框架
    【TensorFlow 官网 可以直接访问】让中国开发者更容易地使用TensorFlow打造人工智能应用
  • 原文地址:https://www.cnblogs.com/feiling/p/4385248.html
Copyright © 2020-2023  润新知