1.创建数据库,数据表

用MySQL数据库和Navicat for MySQL工具创建表

2.创建实体类——反应表结构(列——变量)

也就是对应表建立的gets和sets方法,实体类的名字一般都与数据库表的名字相同

3.创建数据访问层。

1.BaseDAO(父类)代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
protected Connection conn = null;
protected PreparedStatement pst = null;
protected ResultSet rs = null;
private String Driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/apple";// 这里apple是数据库名
private String user = "root";
private String password = "root"; public void OpenConnection() throws ClassNotFoundException, SQLException {
Class.forName(Driver);
conn = DriverManager.getConnection(url, user, password);
}
public void CloseAll() throws SQLException {
if (rs != null) {
rs.close();
}
if (pst != null) {
pst.close();
}
if (conn != null && conn.isClosed() == false) {
conn.close();
}
}
}

2.XXXDAO(子类)(一个表一个dao类)

1.如果返回多条数据,对应ArrayList集合类型

2.方法的参数,是sql执行的条件where 有条件,传参;where没有条件,不用传参

public class LotForDAO extends ConnDAO{
public int insert(LotInfor lot){
int result=0;
try {
super.openConn();
String sql="insert into LotInfor(lotType,lotNum1,lotNum2,lotNum3,lotNum4,lotNum5,lotNum6,lotNum7,lotTerm) values(?,?,?,?,?,?,?,?,?)";
super.psm = super.conn.prepareStatement(sql);
psm.setString(1, lot.getLotType());
psm.setString(2, lot.getLotNum1());
psm.setString(3, lot.getLotNum2());
psm.setString(4, lot.getLotNum3());
psm.setString(5, lot.getLotNum4());
psm.setString(6, lot.getLotNum5());
psm.setString(7, lot.getLotNum6());
psm.setString(8, lot.getLotNum7());
psm.setString(9, lot.getLotTerm());
result=psm.executeUpdate();
} catch (ClassNotFoundException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
super.closeConn();
} catch (SQLException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
return result;
} public int delete(String lotTerm){
int result=0;
try {
super.openConn();
String sql="delete from LotInfor where lotTerm=?";
super.psm=super.conn.prepareStatement(sql);
psm.setString(1, lotTerm);
result=psm.executeUpdate();
} catch (ClassNotFoundException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
super.closeConn();
} catch (SQLException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
return result;
} }

4.业务逻辑(省略)

5.表示层(前端页面swing/jsp)

线程的代码:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package apputil; import appframe.JFrameMain;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane; /**
*
* @author wjw
*/
public class MyThread implements Runnable { JLabel[] arr;
JButton jbu;
JFrameMain jf;
ImageIcon shan = new ImageIcon(this.getClass().getResource("../appimg/red2.gif"));
ImageIcon jing = new ImageIcon(this.getClass().getResource("../appimg/red1.gif")); public MyThread(JLabel[] arr, JButton jbu,JFrameMain jf) {
this.arr = arr;
this.jbu = jbu;
this.jf=jf;
} public void run() {
this.jbu.setEnabled(false);
int random = (int) (Math.random() * 200) + 40;
int sleep = 550;
for (int i = 0; i <= random; i++) {
arr[JFrameMain.index].setIcon(jing);
if (JFrameMain.index >= 23) {
JFrameMain.index = -1;
}
arr[JFrameMain.index + 1].setIcon(shan);
JFrameMain.index = JFrameMain.index + 1;
if (i < 10) {
sleep = sleep - 50;
}
if (i + 10 > random) {
sleep = sleep + 50;
}
try {
Thread.sleep(sleep);
} catch (InterruptedException ex) {
Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex);
}
} int fenshu = Integer.parseInt(jf.jguageNum.getText());
int num1 = Integer.parseInt(jf.jLabel36.getText());
int num2 = Integer.parseInt(jf.jLabel37.getText());
int num3 = Integer.parseInt(jf.jLabel38.getText());
int num4 = Integer.parseInt(jf.jLabel39.getText());
int num5 = Integer.parseInt(jf.jLabel48.getText());
int num6 = Integer.parseInt(jf.jLabel49.getText());
int num7 = Integer.parseInt(jf.jLabel50.getText());
int num8 = Integer.parseInt(jf.jLabel51.getText()); switch (JFrameMain.index) {
case 5:
case 10:
case 16:
case 22:
if(num8>0){
jf.jguageNum.setText(Integer.toString(fenshu + 5 * num8));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 0:
case 11:
case 12:
if(num7>0){
jf.jguageNum.setText(Integer.toString(fenshu + 10 * num7));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 6:
case 17:
case 18:
if(num6>0){
jf.jguageNum.setText(Integer.toString(fenshu + 10 * num6));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
} else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 1:
case 13:
case 23:
if(num5>0){
jf.jguageNum.setText(Integer.toString(fenshu + 10 * num5));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
} else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 7:
case 8:
if(num4>0){
jf.jguageNum.setText(Integer.toString(fenshu + 20 * num4));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 19:
case 20:
if(num3>0){
jf.jguageNum.setText(Integer.toString(fenshu + 20 * num3));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 14:
if(num2>0){
jf.jguageNum.setText(Integer.toString(fenshu + 20 * num2));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 15:
if(num2>0){
jf.jguageNum.setText(Integer.toString(fenshu + 40 * num2));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 2:
if(num1>0){
jf.jguageNum.setText(Integer.toString(fenshu + 50 * num1));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 3:
if(num1>0){
jf.jguageNum.setText(Integer.toString(fenshu+100*num1));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 4:
if(num1>0){
jf.jguageNum.setText(Integer.toString(fenshu+25*num1));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
default:
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE); }
this.jf.jLabel36.setText("0");
this.jf.jLabel37.setText("0");
this.jf.jLabel38.setText("0");
this.jf.jLabel39.setText("0");
this.jf.jLabel48.setText("0");
this.jf.jLabel49.setText("0");
this.jf.jLabel50.setText("0");
this.jf.jLabel51.setText("0");
this.jbu.setEnabled(true);
}
}

  

NetBeans数据库笔记---三层架构的更多相关文章

  1. Delphi数据库的三层架构的问题和解决方法

    Delphi数据库的三层架构的问题和解决方法 原创 2014年03月26日 16:26:03 标签: Delphi / 数据库三层架构 / DCOM / DCOMConnection 790 //-- ...

  2. C# 学习笔记 三层架构系列(控件一)

    下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...

  3. Java学习笔记——三层架构

    Layer: UI层: user interface 用户接口层 Biz层:   service business login layer 业务逻辑层 DAO层:   Date Access Obje ...

  4. Asp.Net T4模板生成三层架构

    1.T4 Editor安装 T4:根据模板生成文件,例如model等 vs中默认t4模板编码是没有提示和高亮的,需使用以下插件,免费的 https://t4-editor.tangible-engin ...

  5. MVC——三层架构笔记、1

    三层架构MVC笔记1. DAL——数据访问层:(专门与数据库交互,增删查改的方法都在这:需引用MODEL层) BLL——业务逻辑层:(页面与数据库之间的桥梁:需引用DAL.MODEL层) MODEL— ...

  6. [知了堂学习笔记]_MVC设计模式与JavaWEB三层架构

    一.MVC设计模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controlle ...

  7. 基于三层架构下的公共数据访问方法(Sqlite数据库)

    作者总结了一下,使用Winform的三层架构做窗体应用程序,在数据访问方面,有用到纯sql语句方法.参数方法.存储过程方法. 那么什么是三层架构呢? UI---存放Form窗体---(用户所关心的) ...

  8. 关于对javaUtils封装和三层架构的笔记

    1.什么是三层架构: 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer).业务逻辑层(Business ...

  9. JavaWeb笔记(六)MVC与三层架构

    MVC M Model 模型 JavaBean 完成具体的业务操作,如:查询数据库,封装对象 V View 视图 JSP 展示数据 C Controller 控制器 Servlet 获取用户输入,调用 ...

随机推荐

  1. 课程三(Structuring Machine Learning Projects),第二周(ML strategy(2)) —— 0.Learning Goals

    Learning Goals Understand what multi-task learning and transfer learning are Recognize bias, varianc ...

  2. 关于appendChild和insertBefore appendTo()和append

    appendChild和insertBefore(原生js) appendTo()和append(jquery)

  3. Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务

    API 网关的出现的原因是微服务架构的出现,不同的微服务一般会有不同的服务地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会 ...

  4. mysql优化的21条经验(转)

    1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个 ...

  5. 通过 URL 打开 Activity

    为每个 Activity 绑定一个 url 可以方便的让第三方 app 直接打开这些 Activity.也可以方便在 app 内部进行页面跳转,解耦. 背景 举一个常见的案例,假设我们有个产品 A,产 ...

  6. ThreadLocalMap里Entry为何声明为WeakReference?

    Java里,每个线程都有自己的ThreadLocalMap,里边存着自己私有的对象.Map的Entry里,key为ThreadLocal对象,value即为私有对象T.在spring MVC中,常用T ...

  7. Java提高篇之理解java的三大特性——封装

    三大特性之—封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐 ...

  8. [译]Node.js框架对比:Express/Koa/Hapi

    本文翻译自: https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi 1.介绍 直至今日, ...

  9. [转]Angular2-组件间数据传递的两种方式

    本文转自:https://www.cnblogs.com/longhx/p/6960288.html Angular2组件间数据传递有多种方式,其中最常用的有两种,一种是配置元数据(或者标签装饰),一 ...

  10. JAVAEmail工具错误java.lang.ClassNotFoundException: javax.activation.DataSource

    JDK9以上或JDK6以下使用mail.jar包不加JAF的activation.jar包会抛出该错误!JDK6以上不需要加该jar包: 参考原文 https://stackoverflow.com/ ...