反射之前奏Oracle升级版

来源:互联网 发布:u盘数据恢复公司 编辑:程序博客网 时间:2024/05/16 07:54

利用接口来提高扩展性
Student表的属性和帮助方法

public class Student {    private int id;    private String name;    private String sex;//构造方法    public Student() {    }    public Student(int id, String name, String sex) {        super();        this.id = id;        this.name = name;        this.sex = sex;    }//get和set方法    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }//重写toTring方法    @Override    public String toString() {        return "id=" + id + ", name=" + name + ", sex=" + sex;    }}
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class JdbcHelp {//需要用到的String参数    private static String driver = "oracle.jdbc.driver.OracleDriver";    private static String url = "jdbc:oracle:thin:@localhost:1521:ORCL";    private static String user = "Scott";    private static String password = "tiger";/*单例的懒汉式1、定义一个实例JdbcHelp Instance2、私有化构造方法,使得别人不能new一个对象;3、判断,在本类new一个对象*/    private static JdbcHelp Instance;    private JdbcHelp() {    }    public static JdbcHelp getInstance() {        if (Instance == null) {            Instance = new JdbcHelp();        }        return Instance;    }    // 加载驱动,因为是格式不变且共享,所以单独放一个静态块里    static {        try {            Class.forName(driver);        } catch (ClassNotFoundException e) {            e.printStackTrace();            System.out.println("驱动加载失败异常");        }    }// 连接Oracle方法    public static Connection getconn() {        try {            return DriverManager.getConnection(url, user, password);        } catch (SQLException e) {            e.printStackTrace();            System.out.println("连接失败异常");            return null;        }    }    // 关闭方法,主要用到两种,这里用到重载    public static void close(Connection conn, PreparedStatement prep)            throws SQLException {        if (prep != null && prep.isClosed()) {            prep.close();//先关声明        }        if (conn != null && conn.isClosed()) {            conn.close();//再关连接        }    }    public static void close(Connection conn, PreparedStatement prep,            ResultSet rSet) throws SQLException {        if (rSet != null && rSet.isClosed()) {            rSet.close();//先关查询        }        close(conn, prep);    }}

增删改查接口

public interface InterStu {//      1、查询Student所有信息    public List<Student> getStu() ;    //      2、根据学生id查出其信息    public Student getId1(int Id);    //      3、根据name查出其信息    public Student getName1(String name);    //      4、修改student信息update    public void updateStu(Student stu);    //      5、删除student信息delete    public void deleteStu(int Id);    //      6、增加student信息add用insert into    public void addStu(Student stu);}

实现接口并且单独添加了一个dml和查询方法

package JdbcSimple;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class ImpStudentSelect implements InterStu {    // 单例    private static ImpStudentSelect Instance;    private ImpStudentSelect() {    }    public static ImpStudentSelect getInstance() {        if (Instance == null) {            Instance = new ImpStudentSelect();        }        return Instance;    }    private JdbcHelp jh = JdbcHelp.getInstance();    private Connection conn;    private PreparedStatement prep;    private ResultSet rSet;    // dml方法也就是增删改方法,利用数组来设置prep的内容    public void dml(String sql, String[] args) {        try {            // 连接            conn = jh.getconn();            // 操作            prep = conn.prepareStatement(sql);            // 判断数组非空,并且长度大于0,将传入的数组用循环来加到prep上            if (args != null && args.length > 0) {                int size = args.length;                if (size > 0) {                    for (int i = 0; i < size; i++) {                        prep.setString(i + 1, args[i]);                    }                }            }            prep.execute();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            try {                JdbcHelp.close(conn, prep);            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();                conn = null;                prep = null;            }        }    }    public List<Student> Select(String sql) {        List<Student> list = new ArrayList<Student>();        try {            conn = jh.getconn();            prep = conn.prepareStatement(sql);            rSet = prep.executeQuery();            while (rSet.next()) {                Student stu = new Student();                stu.setId(rSet.getInt(1));                stu.setName(rSet.getString(2));                stu.setSex(rSet.getString(3));                list.add(stu);            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            try {                JdbcHelp.close(conn, prep, rSet);            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();                conn = null;                prep = null;                rSet = null;            }        }        return list;    }//=========================================================================================================    @Override    public List<Student> getStu() {        // TODO Auto-generated method stub        return null;    }    @Override    public List<Student> getId1(int Id) {        // TODO Auto-generated method stub        String sql = "select * from student where id=" + Id;        return Select(sql);    }    @Override    public Student getName1(String name) {        // TODO Auto-generated method stub        return null;    }    @Override    public void updateStu(Student stu) {        String sql = "update student set name=?,sex=? where id=?";        String[] args = { stu.getName(), stu.getSex(),                String.valueOf(stu.getId()) };        dml(sql, args);    }    @Override    public void deleteStu(int Id) {        // TODO Auto-generated method stub    }    @Override    public void addStu(Student stu) {        // TODO Auto-generated method stub    }}

测试方法大致相同

public class StudentTest {    public static void main(String args[]) {    //查询一个    ImpStudentSelect stuse1=ImpStudentSelect.getInstance();    ArrayList<Student> stus=(ArrayList<Student>)stuse1.getId1(5);    if(stus!=null){        for(Student s:stus){            System.out.println(s);            }        }//dml方法    Student stu=new Student();    stu.setId(4);    stu.setName("榴莲");    stu.setSex("女");    stuse1.updateStu(stu);    //add操作stuse1.dml("insert into student values(?,?,?)", new String[]{"9","蓝盾","女"});    }}
0 0
原创粉丝点击