今天帮学校朋友写个一个小程序:一个父类,两个子类,一个接口,一个实现类,用到了jdbc、封装、继承、多态、io流、集合等知识点,实现了从数据库查询数据通过FileOutputStream打印到文本文档
package com.systop.cn.pojo;
import java.sql.Time;
import java.util.Calendar;
import java.util.Date;
public class Animate {
private String name;//属性:动物名
private int age;//属性:动物年龄
private String love;//动物的爱好
private Date nowtime;
/**
*
* 有参构造方法
* @param name
* @param age
* @param love
*/
public Animate(String name, int age, String love) {
super();
this.name = name;
this.age = age;
this.love = love;
}
/**
* toString()方法
*
*/
@Override
public String toString() {
return "Cat [name=" + name + ", age=" + age + ", love=" + love + "]";
}
/**
*
* 无参构造方法
*/
public Animate() {
super();
// TODO Auto-generated constructor stub
}
/**
*
* getter/setter方法
* @return
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;//this.name指的是类中的private String name;后面的name指的是方法()里面的name,this的作用域:class(){...作用域...}
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getLove() {
return love;
}
public void setLove(String love) {
this.love = love;
}
/**
* 父类自定义方法:Canlender:日期类,java.util.Date已过期
* @return
*/
public String eat(String name,int i,String love,int time) {
return "我是一只"+name+"我今年"+i+"岁了"+"我喜欢"+love+"这周是今年的第"+time+"周";
}
}
package com.systop.cn.pojo;
import java.util.Calendar;
/**
*
*
* extends:继承
* 好处:代码可以重复性使用,降低代码的冗余
* @author hanzekun
*多态:同样的对象,同样的方法,做了不同的事情(都是Animate对象,都是eat方法,但里面的内容是不一样的)
*/
public class Cat extends Animate{
public String eat(Calendar time) {
return super.eat("小猫",10,"吃饭",time.getWeekYear());
}
}
package com.systop.cn.pojo;
import java.util.Calendar;
public class Dog extends Animate{
public String eat(Calendar time) {
return super.eat("小狗",6,"大声叫",time.getWeekYear());
}
}
package com.systop.cn.pojo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class Jdbc {
String username="root";//连接数据库的用户名
String password="root";//连接数据库的密码
String driverClassName = "com.mysql.jdbc.Driver";//驱动
Connection conn = null;//访问数据库的连接通道
PreparedStatement pstmt = null;//轮子
ResultSet rs = null;//结果集
String url = "jdbc:mysql://localhost:3306/test01";//数据库访问地址
public Animate getConnection(String sql) {
try {
Animate b = new Animate();
List<Animate> list = new ArrayList<>();//实例化集合,泛型Animate
Class.forName(driverClassName);//加载数据库驱动
conn = DriverManager.getConnection(url, username, password);//获取数据库连接
System.out.println("正在加载数据库驱动");
pstmt = conn.prepareStatement(sql);//轮子
rs = pstmt.executeQuery();
while(rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
String love = rs.getString("love");
b.setAge(age);
b.setLove(love);
b.setName(name);
return b;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}finally {
try {
rs.close();//关闭rs(结果集)
pstmt.close();//关闭pstmt(轮子)
conn.close();//关闭连接通道
} catch (Exception e2) {
// TODO: handle exception
}
}
return null;
}
}
package com.systop.cn.pojo;
//接口
public interface ShowService {
Animate getEat();
}
package com.systop.cn.pojo;
//实现类
public class ShowServiceImpl implements ShowService{
@Override
public Animate getEat() {
// TODO Auto-generated method stub
Jdbc jdbc = new Jdbc();
return jdbc.getConnection("select * from animate");
}
}
package com.systop.cn.pojo;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Calendar;
import javax.swing.filechooser.FileSystemView;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
ShowService showService = new ShowServiceImpl();//实例化接口实现类
Calendar time = Calendar.getInstance();//实例化calender日期类
Animate a = showService.getEat();
File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory();//获取桌面路径
String deskdir = desktopDir.getAbsolutePath();//获取桌面路径
File file = new File(deskdir+"\\"+"导出文本"+Math.random()*100000+".txt");//输出一个文本文档
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
String str = a.eat(a.getName(), a.getAge(), a.getLove(), time.getWeeksInWeekYear());
byte[] b = str.getBytes();
fos.write(b);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
try {
fos.close();
System.out.println("已输出文件流到文本文档,请在桌面查看!!!");
System.out.println("------------结束------------");
} catch (Exception e2) {
// TODO: handle exception
}
}
}
}
执行效果如下: