• 古诗MySQL数据库DAO模式实现


    整体规则

    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();
                }
            }
    
  • 相关阅读:
    Mac的Safari安装油猴插件(Tampermonkey)
    element表格点击行即选中该行复选框
    Previous operation has not finished; run 'cleanup' if it was interrupted最简单有效的解决方法
    读取JDK API文档,并根据单词出现频率排序
    Mac 下安装并配置 Tomcat
    Mac上安装并配置JDK
    GitHub注册失败,卡在第一步
    Jmeter 操作手册(三)
    Jmeter 操作手册(二)
    .Jmeter 使用手册(一)
  • 原文地址:https://www.cnblogs.com/chuiyuan/p/5200498.html
Copyright © 2020-2023  润新知