Smbms超市管理系统

模块设计

Smbms超市管理系统_数据库

数据库

Smbms超市管理系统_sql_02

搭建项目

  1. 创建maven项目

  2. 配置tomcat

  3. 测试项目能否运行

  4. 引入项目依赖 pom.xml

  5. 创建项目包结构

Smbms超市管理系统_数据库_03

  1. 编写实体类 :

    ORM映射: 表 - 类 映射

  2. 编写基础公共类

    1. 数据库配置文件 db.properties

      driver=com.mysql.jdbc.Driver
      # useSSL=false   SQL版本大于connect版本,就要设置成false
      url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false
      username=root
      password=123456
      
    2. 编写数据库的公共类

      import java.io.IOException;
      import java.io.InputStream;
      import java.sql.*;
      import java.util.Properties;
      
      //操作数据库的公共类
      public class BaseDao {
          private static String driver;
          private static String url;
          private static String username;
          private static String password;
      
          //静态代码块在类加载的同时初始化
          static {
              Properties properties = new Properties();
              //通过类加载,读取对应的资源
              InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("db.properties");
              try {
                  properties.load(is);
              } catch (IOException e) {
                  e.printStackTrace();
              }
              driver = properties.getProperty("driver");
              url = properties.getProperty("url");
              username = properties.getProperty("username");
              password = properties.getProperty("password");
          }
      
          //获取连接
          public  static Connection getConnection(){
              Connection conn = null;
              try {
                  Class.forName(driver);  //驱动只用加载一次
                  conn = DriverManager.getConnection(url,username,password);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return conn;
          }
          //编写查询公共方法
          public static ResultSet execute(Connection conn,PreparedStatement pst,String sql,Object[] params,ResultSet rs) throws SQLException {
              pst = conn.prepareStatement(sql);
              for (int i = 0; i <params.length ; i++) {
                  //setObject 占位符从1开始,但数组从0开始;
                  pst.setObject(i+1,params[i]);
              }
              rs = pst.executeQuery();
              return rs;
          }
          //编写增删改公共方法
          public static int execute(Connection conn,PreparedStatement pst,String sql,Object[] params) throws SQLException {
              pst = conn.prepareStatement(sql);
              for (int i = 0; i <params.length ; i++) {
                  //setObject 占位符从1开始,但数组从0开始;
                  pst.setObject(i+1,params[i]);
              }
              int updateRows = pst.executeUpdate();
              return updateRows;
          }
          //关闭连接 释放资源
          public static boolean relrase(Connection conn, PreparedStatement pst, ResultSet rs){
              boolean flag = true;
      
              if(rs != null){
                  try {
                      rs.close();
                      //GC回收
                      rs = null;
                  } catch (SQLException throwables) {
                      throwables.printStackTrace();
                      flag = false;
                  }
              }
              if(pst != null){
                  try {
                      pst.close();
                      //GC回收
                      pst = null;
                  } catch (SQLException throwables) {
                      throwables.printStackTrace();
                      flag = false;
                  }
              }
              if (conn != null){
                  try {
                      conn.close();
                      //GC回收
                      conn = null;
                  } catch (SQLException throwables) {
                      throwables.printStackTrace();
                      flag = false;
                  }
              }
              return flag;
          }
      }
      
      
    3. 字符编码过滤器

          <!-- 字符编码过滤器-->
          <filter>
              <filter-name>CharacterEncodingFilter</filter-name>
              <filter-class>com.lantian.filter.CharacterEncodingFilter</filter-class>
          </filter>
          <filter-mapping>
              <filter-name>CharacterEncodingFilter</filter-name>
              <url-pattern>/*</url-pattern>
          </filter-mapping>
      
  3. 导入静态资源