标签:
整体规则
step1
DBHelper工具类,一般不用实例化,因此可以采用Singleton或者是将构造方法私有化。
/** * Created by chuiyuan on 2/17/16. * 工具类,一般不要实例化,此时可以采用单例设计模式,或者将构造方法私有化 */ public class DBHelper { public static String url ; public static String username ; public static String password ; public static String driver ; //prrty file private static ResourceBundle rb = ResourceBundle.getBundle("db-config"); //private Connection conn = null ; private DBHelper(){ } /** * 为避免重复代码,使用静态代码块:只会在类加载的时候执行一次。 */ static { try{ url = rb.getString("jdbc.url"); username = rb.getString("jdbc.username"); password = rb.getString("jdbc.password"); driver = rb.getString("jdbc.driver"); Class.forName(driver); }catch (Exception e ){ e.printStackTrace(); } } //get a connection with mysql public static Connection getConnection(){ Connection conn = null ; try { conn = DriverManager.getConnection(url,username,password); }catch (SQLException e ){ e.printStackTrace(); } return conn ; } /** * close * @param rs * @param stmt * @param conn */ public static void close(ResultSet rs , Statement stmt ,Connection conn){ try { if (rs!= null) rs.close(); if (stmt!= null) stmt.close(); if (conn!= null) conn.close(); }catch (SQLException e ){ e.printStackTrace(); } } }
Step2
DAO接口。
/** * Created by chuiyuan on 2/17/16. * interface for CRUD of Poem */ public interface PoemDao { public void add (Poem poem) throws SQLException; public void update (Poem poem) throws SQLException; public void delete(int id) throws SQLException; public Poem findById(int id) throws SQLException ; public List<Poem> findAll() throws SQLException ; }
Step3
PoemDaoImpl实现step2中的接口。
/** * Created by chuiyuan on 2/17/16. */ public class PoemDaoImpl implements PoemDao { public void add(Poem poem) throws SQLException { Connection conn = null ; PreparedStatement ps = null ; String sql = "insert into poemtable" + "(dynasty, category, title, author, content, href, translation)"+ " values (?, ?, ?, ?, ?, ?, ?)"; try { conn = DBHelper.getConnection() ; ps = conn.prepareStatement(sql); ps.setString(1,poem.getDynasty()); ps.setString(2,poem.getCategory()); ps.setString(3,poem.getTitle()); ps.setString(4,poem.getAuthor()); ps.setString(5,poem.getContent()); ps.setString(6,poem.getHref()); ps.setString(7,poem.getTranslation()); ps.executeUpdate(); }catch (SQLException e){ e.printStackTrace(); throw new SQLException("add poem failed"); }finally { DBHelper.close(null, ps,conn); } } public void update(Poem poem) throws SQLException { Connection conn = null; PreparedStatement ps = null; String sql = "update poemtable set dynasty=?, category=?, title=?," + " author=?, content=?, href=? ,translation=? where id=?"; try { conn = DBHelper.getConnection(); ps = conn.prepareStatement(sql); ps.setString(1,poem.getDynasty()); ps.setString(2,poem.getCategory()); ps.setString(3,poem.getTitle()); ps.setString(4,poem.getAuthor()); ps.setString(5,poem.getContent()); ps.setString(6,poem.getHref()); ps.setString(7,poem.getTranslation()); ps.executeUpdate(); }catch (SQLException e){ e.printStackTrace(); throw new SQLException("update poem failed"); }finally { DBHelper.close(null,ps,conn); } } public void delete(int id) throws SQLException { Connection conn = null; PreparedStatement ps = null; String sql = "delete from poemtable where id=?"; try { conn = DBHelper.getConnection(); ps = conn.prepareStatement(sql); ps.setInt(1,id); ps.executeUpdate(); }catch (SQLException e){ e.printStackTrace(); throw new SQLException("delete poem failed"); }finally { DBHelper.close(null,ps, conn); } } public Poem findById(int id) throws SQLException { Connection conn = null ; PreparedStatement ps = null; ResultSet rs = null; Poem poem = null; String sql = "select dynasty,catetogry,title,author,content," + "href from poemtable where id=?"; try { conn = DBHelper.getConnection(); ps = conn.prepareStatement(sql); ps.setInt(1, id); rs = ps.executeQuery(); if (rs.next()){ poem = new Poem() ; poem.setDynasty(rs.getString(1)); poem.setCategory(rs.getString(2)); poem.setTitle(rs.getString(3)); poem.setAuthor(rs.getString(4)); poem.setContent(rs.getString(5)); poem.setHref(rs.getString(6)); } }catch (SQLException e){ e.printStackTrace(); throw new SQLException("find by id failed"); }finally { DBHelper.close(rs,ps, conn); } return poem; } public List<Poem> findAll() throws SQLException { Connection conn = null ; PreparedStatement ps = null ; ResultSet rs = null ; Poem poem = null ; List<Poem> poemList = new ArrayList<Poem>(); String sql = "select dynasty,catetogry,tie,author,content," + "href from poemtable"; try { conn = DBHelper.getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()){ poem = new Poem() ; poem.setDynasty(rs.getString(1)); poem.setCategory(rs.getString(2)); poem.setTitle(rs.getString(3)); poem.setAuthor(rs.getString(4)); poem.setContent(rs.getString(5)); poem.setHref(rs.getString(6)); poemList.add(poem); } }catch (SQLException e){ e.printStackTrace(); throw new SQLException("findAll failed"); }finally { DBHelper.close(rs, ps, conn); } return poemList ; } }
step4
AppMain中的调用。
//store to mysql PoemDao poemDao = new PoemDaoImpl() ; for (Poem poem: poemList){ try { poemDao.add(poem); }catch (SQLException e){ e.printStackTrace(); } }
标签:
原文地址:http://www.cnblogs.com/chuiyuan/p/5200498.html