[零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](3)

简介:
PersonDAOProxyJDBC.java
package org.michael.demo.proxy;    
import java.util.Set;    
import org.michael.demo.dao.PersonDAO;    
import org.michael.demo.dao.impl.PersonDAOImplJDBC;    
import org.michael.demo.vo.Person;    
public  class PersonDAOProxyJDBC  implements PersonDAO {    
         private PersonDAO dao =  null;    
         public PersonDAOProxyJDBC(String type) {    
                 this.dao =  new PersonDAOImplJDBC(type);    
        }    
         public  boolean doCreate(Person person)  throws Exception {    
                 // TODO Auto-generated method stub    
                 return  this.dao.doCreate(person);    
        }    
         public  boolean doDelete(String id)  throws Exception {    
                 // TODO Auto-generated method stub    
                 return  this.dao.doDelete(id);    
        }    
         public  boolean doUpdate(Person person)  throws Exception {    
                 // TODO Auto-generated method stub    
                 return  this.dao.doUpdate(person);    
        }    
         public Set<Person> findAll()  throws Exception {    
                 // TODO Auto-generated method stub    
                 return  this.dao.findAll();    
        }    
         public Person findById(String id)  throws Exception {    
                 // TODO Auto-generated method stub    
                 return  this.dao.findById(id);    
        }    
         public Set<Person> findByLike(String keyWord)  throws Exception {    
                 // TODO Auto-generated method stub    
                 return  this.dao.findByLike(keyWord);    
        }    
}
 
InputData.java
package org.michael.demo.util;    
//输入数据的操作类    
import java.io.BufferedReader;    
import java.io.IOException;    
import java.io.InputStreamReader;    
public  class InputData {    
         private BufferedReader buf =  null;    
         public InputData() {    
                buf =  new BufferedReader( new InputStreamReader(System.in));    
        }    
         public  int getInt() {    
                 int temp = 0;    
                 // 如果输入的不是数字,至少应该有一个提示,告诉用户输入错了    
                 // 可以使用正则验证    
                String str =  null;    
                 boolean flag =  true;    
                 while (flag) {    
                         // 输入数据    
                        str =  this.getString();    
                         if (!(str.matches( "\\d+"))) {    
                                 // 如果不是一个数字,则必须重新输入    
                                System.out.print( "输入的内容,必须是整数,请重新输入:");    
                        }  else {    
                                 // 是一个正确的数字,则可以进行转换    
                                temp = Integer.parseInt(str);    
                                 // 表示退出循环    
                                flag =  false;    
                        }    
                }    
                 return temp;    
        }    
         public String getString() {    
                String str =  null;    
                 try {    
                        str = buf.readLine();    
                }  catch (IOException e) {    
                        e.printStackTrace();    
                }    
                 return str;    
        }    
         public  float getFloat() {    
                 float f = 0.0f;    
                String str =  null;    
                 boolean flag =  true;    
                 while (flag) {    
                         // 输入数据    
                        str =  this.getString();    
                         if (!(str.matches( "\\d+.?\\d{1,2}"))) {    
                                 // 如果不是一个数字,则必须重新输入    
                                System.out.print( "输入的内容,必须是小数(小数点后只到两位),请重新输入:");    
                        }  else {    
                                 // 是一个正确的数字,则可以进行转换    
                                f = Float.parseFloat(str);    
                                 // 表示退出循环    
                                flag =  false;    
                        }    
                }    
                 return f;    
        }    
}
 
TimeStamp.java
package org.michael.demo.util;    
import java.util.Calendar;    
import java.util.GregorianCalendar;    
import java.util.Random;    
// 取得时间戳的类    
public  class TimeStamp {    
         private Calendar calendar =  null;    
         // 此标记有外部决定    
         private String flag =  null;    
         public TimeStamp() {    
                 this.calendar =  new GregorianCalendar();    
        }    
         public TimeStamp(String flag) {    
                 this() ;    
                 this.flag = flag;    
        }    
         public String getTimeStamp() {    
                StringBuffer buf =  new StringBuffer();    
                 if ( this.flag !=  null) {    
                        buf.append( this.flag);    
                }    
                buf.append( this.addZero(calendar.get(Calendar.YEAR), 4));    
                buf.append( this.addZero(calendar.get(Calendar.MONTH) + 1, 2));    
                buf.append( this.addZero(calendar.get(Calendar.DAY_OF_MONTH), 2));    
                buf.append( this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2));    
                buf.append( this.addZero(calendar.get(Calendar.MINUTE), 2));    
                buf.append( this.addZero(calendar.get(Calendar.SECOND), 2));    
                buf.append( this.addZero(calendar.get(Calendar.MILLISECOND), 3));    
                 return buf.toString();    
        }    
         public String getTimeStampRandom() {    
                StringBuffer buf =  new StringBuffer();    
                Random r =  new Random();    
                buf.append( this.getTimeStamp());    
                buf.append(r.nextInt(10));    
                buf.append(r.nextInt(10));    
                buf.append(r.nextInt(10));    
                 return buf.toString();    
        }    
         // 可以单独设置一个加“0”的操作    
         private String addZero( int temp,  int len) {    
                String str = temp + "";    
                 while (str.length() < len) {    
                        str =  "0" + str;    
                }    
                 return str;    
        }    
}
 
Person.java
package org.michael.demo.vo; 

import java.io.Serializable; 

public  abstract  class Person  implements Comparable<Object>,Serializable { 
   // 定义各公共属性 
   private String id ; 
   private String name ; 
   private  int age ; 
   public Person(String id,String name, int age){ 
     this.setId(id) ; 
     this.setName(name) ; 
     this.setAge(age) ; 
  } 
   public String getId() { 
     return id; 
  } 
   public  void setId(String id) { 
     this.id = id; 
  } 
   public String getName() { 
     return name; 
  } 
   public  void setName(String name) { 
     this.name = name; 
  } 
   public  int getAge() { 
     return age; 
  } 
   public  void setAge( int age) { 
     this.age = age; 
  } 

 
Student.java
package org.michael.demo.vo;    
public  class Student  extends Person {    
         private  static  final  long serialVersionUID = 1L;    
         private  float score;    
         public Student(String id, String name,  int age,  float score) {    
                 super(id, name, age);    
                 this.setScore(score);    
        }    
         public  int compareTo(Object arg0) {    
                Student s = (Student) arg0;    
                 if ( this.score < s.score) {    
                         return 1;    
                }  else  if ( this.score > s.score) {    
                         return -1;    
                }  else {    
                         if ( super.getAge() < s.getAge()) {    
                                 return -1;    
                        }  else  if ( super.getAge() > s.getAge()) {    
                                 return 1;    
                        }  else {    
                                 return 0;    
                        }    
                }    
        }    
         public String toString() {    
                 return  this.getId() +  "\t" +  this.getName() +  "\t" +  this.getAge() +  "\t" +  this.score;    
        }    
         public  float getScore() {    
                 return score;    
        }    
         public  void setScore( float score) {    
                 this.score = score;    
        }    
}
 
Worker.java
package org.michael.demo.vo;    
public  class Worker  extends Person {    
         private  static  final  long serialVersionUID = 1L;    
         private  float salary;    
         public Worker(String id, String name,  int age,  float salary) {    
                 super(id, name, age);    
                 this.setSalary(salary);    
        }    
         public  int compareTo(Object arg0) {    
                Worker w = (Worker) arg0;    
                 if ( this.salary < w.salary) {    
                         return 1;    
                }  else  if ( this.salary > w.salary) {    
                         return -1;    
                }  else {    
                         if ( super.getAge() < w.getAge()) {    
                                 return -1;    
                        }  else  if ( super.getAge() > w.getAge()) {    
                                 return 1;    
                        }  else {    
                                 return 0;    
                        }    
                }    
        }    
         public String toString() {    
                 return  this.getId() +  "\t" +  this.getName() +  "\t" +  this.getAge()    
                                +  "\t" +  this.salary;    
        }    
         public  float getSalary() {    
                 return salary;    
        }    
         public  void setSalary( float salary) {    
                 this.salary = salary;    
        }    
}
 
测试:
image
image
image
image
  ####################Michael分割线###########################
本身显示的效果并不复杂,但是在此程序中重点是体现了一种程序的设计的分层思路,如果可以做的再好,最好把学生和工人的操作分开,分别完成。 
建立一个专门的:StudentDAO操作 
建立一个专门的:WorkerDAO操作 
这样的话通过工厂分别取得两个接口的实例,就可以避免传递参数了。 
所有的类要分别按不同的包存放,而且在写代码的时候必须使用考虑如果万一修改了该怎么办? 
####################Michael分割线###########################
#################Michael分割线####################






本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/145389 ,如需转载请自行联系原作者
相关文章
|
23天前
|
前端开发 JavaScript Java
计算机Java项目|人体健康信息管理系统
计算机Java项目|人体健康信息管理系统
|
23天前
|
安全 前端开发 JavaScript
计算机java项目|SpringBoot学院个人信息管理系统
计算机java项目|SpringBoot学院个人信息管理系统
|
2天前
|
SQL Java 关系型数据库
Java中的JDBC编程详解
Java中的JDBC编程详解
|
4天前
|
SQL Java 关系型数据库
Java中的JDBC编程详解
Java中的JDBC编程详解
|
13天前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
【6月更文挑战第24天】Java JDBC的三大法宝简化数据库操作:①统一API接口,跨平台与各类数据库交互;②参数化查询,提升效率,防止SQL注入;③事务管理,确保数据一致性。通过这三个核心特性,开发者能更安全高效地处理数据库任务。示例代码展示了如何使用这些功能。
|
13天前
|
Java 关系型数据库 数据库连接
为何JDBC是Java开发者的“心头好”?原因竟然这么简单!
【6月更文挑战第24天】JDBC,Java的数据库连接标准,以其跨平台兼容性和高效安全的数据库操作闻名。通过统一的API,开发者能轻松连接各种数据库,如MySQL、Oracle等。示例代码展示了如何使用PreparedStatement执行SQL并处理结果,体现其简洁与安全性。JDBC还支持事务、批处理等高级功能,丰富的社区资源进一步巩固了它在Java开发中的核心地位。
|
13天前
|
SQL 安全 Java
JDBC:Java与数据库的“月老红线”,你真的了解它吗?
【6月更文挑战第24天】JDBC是Java与数据库间的桥梁,简化了数据库交互。通过`DriverManager.getConnection()`建立连接,`PreparedStatement`执行SQL并设置参数,确保安全高效,`ResultSet`处理查询结果。这段代码展示了JDBC如何连接MySQL数据库,执行查询并打印结果,揭示了其作为“月老”的角色,使得数据操作变得简单。
|
13天前
|
SQL Java 数据库连接
惊!Java界的“金钥匙”:揭秘JDBC如何轻松开启数据库大门!
【6月更文挑战第24天】JDBC是Java连接数据库的关键,简化了数据操作。在Java项目中添加MySQL驱动后,通过`DriverManager.getConnection()`建立连接。示例代码展示了如何执行查询、处理`ResultSet`。JDBC提供了一致的接口,让开发者能轻松进行数据库交互,无论是新手还是专家,都能快速掌握,开启数据库开发之旅。
|
13天前
|
Java 关系型数据库 数据库连接
JDBC:Java与数据库的“黄金搭档”,为何它如此重要?
【6月更文挑战第24天】Java的JDBC是数据库连接的桥梁,统一API简化了与MySQL等各类数据库的交互,降低复杂性并提高效率。在库存系统示例中,JDBC允许无缝查询和更新,无需关注底层实现。作为“黄金搭档”,JDBC还支持事务、批处理等功能,确保性能和安全性,是Java开发者不可或缺的工具。
|
13天前
|
SQL Java 数据库连接
JDBC之旅:从陌生到熟悉的Java数据库连接之路
【6月更文挑战第24天】学习JDBC之旅,从新手到熟手的蜕变。通过`DriverManager.getConnection()`建立数据库连接,用`PreparedStatement`防止SQL注入。深入学习后,掌握事务管理、批处理等高级功能,应对连接异常和性能优化挑战,逐渐精通JDBC,体验编程乐趣与成长。JDBC成为开发者不可或缺的工具,开启数据库世界的大门。