gpt4 book ai didi

java 使用策略模式操作JDBC数据库

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java 使用策略模式操作JDBC数据库由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

java 使用策略模式操作JDBC数据库 。

1:构造一个操作数据库的工具类,可以获得连接和释放连接 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
public class DBUtil {
   private static Connection conn = null ;
   static { //静态初始块
       try {
         Class.forName( "com.mysql.jdbc.Driver" );
         conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/test" , "root" , "064319" ); //初始化获取连接
       } catch (ClassNotFoundException e) {
         e.printStackTrace();
       } catch (SQLException e) {
         e.printStackTrace();
       }
   }
 
   /**
    * 释放连接
    * @param rs
    * @param psmt
    * @param conn
    * @throws SQLException
    */
   public static void closeAll(ResultSet rs, PreparedStatement psmt, Connection conn) throws SQLException {
     
     if (rs != null ) {
       rs.close();
    
     
     if (psmt != null ) {
       psmt.close();
     }
     
     if (conn != null ) {
       conn.close();
     }
     
   }
   
   /**
    * 获取连接
    * @return
    */
   public static Connection getConnection() {
     return conn;
   }
   
   /**
    * 根据表的名字来获得表的列信息
    * @param tableName
    */
   public static void getTableColumnInfoByTableName(String tableName) {
     Connection conn = getConnection();
     ResultSet rs = null ;
     PreparedStatement psmt = null ;
     String sql = "select * from " + tableName;
     try {
       psmt = conn.prepareStatement(sql);
       rs = psmt.executeQuery();
       
       ResultSetMetaData resultSetMetaData = rs.getMetaData();
       for ( int i = 1 ; i<= resultSetMetaData.getColumnCount(); i++) {
         System.out.println(resultSetMetaData.getColumnName(i));
       }
       
     } catch (SQLException e) {
       e.printStackTrace();
     } finally {
       try {
         closeAll(rs, psmt, conn);
       } catch (SQLException e) {
         e.printStackTrace();
       }
     }
   }
   
   /**
    * 根据表的名字来获得表的信息
    * @param tableName
    */
   public static void getTableInfoByTableName(String tableName) {
     Connection conn = getConnection();
     PreparedStatement psmt = null ;
     ResultSet rs = null ;
     String sql = "select * from " + tableName;
     try {
       psmt = conn.prepareStatement(sql);
       rs = psmt.executeQuery();
       
       while (rs.next()) {
         ResultSetMetaData resultSetMetaData = rs.getMetaData();
         for ( int i = 1 ; i<= resultSetMetaData.getColumnCount(); i++) {
           if (i < resultSetMetaData.getColumnCount()) {
             System.out.print(rs.getObject(resultSetMetaData.getColumnName(i)) + ", " );
           } else {
             System.out.print(rs.getObject(resultSetMetaData.getColumnName(i)));
           }
         }
         System.out.println();
       }
     
     } catch (SQLException e) {
       e.printStackTrace();
     } finally {
       try {
         closeAll(rs, psmt, conn);
       } catch (SQLException e) {
         e.printStackTrace();
       }
     }
   }
}

2:构造一个操作数据库的BaseDao类 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
public class BaseDao {
   
   /**
    * 根据一些参数来保存相应的对象
    * @param sql 要执行的sql语句
    * @param params 为sql语句中相应的参数赋值
    * @return
    */
   protected boolean saveOrUpdate(String sql, Object[] params) {
     Connection conn = null ;
     PreparedStatement psmt = null ;
     boolean flag = false ;
     
     conn = DBUtil.getConnection();
     if (conn != null ) {
       try {
         psmt = conn.prepareStatement(sql);
         for ( int i = 1 ; i <= params.length; i++) {
           psmt.setObject(i, params[i- 1 ]);
         }
         if (psmt.executeUpdate() > 0 ) {
           flag = true ;
         }
         
       } catch (SQLException e) {
         e.printStackTrace();
       } finally {
         try {
           DBUtil.closeAll( null , psmt, conn);
         } catch (SQLException e) {
           e.printStackTrace();
         }
       }
    
     return flag;
   }
   
   /**
    * 根据一定的参数获得某个具体的对象
    * @param sql 要执行的sql语句
    * @param params 为sql语句中相应的参数赋值
    * @return
    */
   public Object queryForObject(String sql, Object[] params, RowMapForObject rowMapForObject) {
     Connection conn = null ;
     PreparedStatement psmt = null ;
     
     conn = DBUtil.getConnection();
     Object obj = null ;
     ResultSet rs = null ;
     
     if (conn != null ) {
       try {
         psmt = conn.prepareStatement(sql);
         if (params != null && params.length > 0 ) {
           for ( int i = 1 ; i <= params.length; i++) {
              psmt.setObject(i, params[i - 1 ]);
           }
         }
         rs = psmt.executeQuery();
         obj = rowMapForObject.rowMapForObject(rs);
         
       } catch (SQLException e) {
         e.printStackTrace();
       } finally {
         try {
           DBUtil.closeAll( null , psmt, conn);
         } catch (SQLException e) {
           e.printStackTrace();
         }
       }
     }
     
     return obj;
   }
 
   
   /**
    * 根据相应的参数获得查询的结果集
    * @param sql
    * @param params
    * @return
    */
   public List queryForList(String sql, Object[] params, RowMapForList rowMapForList) {
     Connection conn = null ;
     PreparedStatement psmt = null ;
     
     conn = DBUtil.getConnection();
     List list = null ;
     ResultSet rs = null ;
     
     if (conn != null ) {
       try {
         psmt = conn.prepareStatement(sql);
         if (params != null && params.length > 0 ) {
           for ( int i = 1 ; i <= params.length; i++) {
              psmt.setObject(i, params[i - 1 ]);
           }
         }
         rs = psmt.executeQuery(sql);
         list = new ArrayList();
         list = rowMapForList.rowMapForList(rs);
         
       } catch (SQLException e) {
         e.printStackTrace();
       } finally {
         try {
           DBUtil.closeAll( null , psmt, conn);
         } catch (SQLException e) {
           e.printStackTrace();
         }
       }
     }
     
     return list;
   }
   
}

3:新建一个StudentDao类,该类继承自BaseDao,实现对Student的管理 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public class StudentDao extends BaseDao {
 
   /**
    * 保存一个Student的信息
    */
   public boolean saveStudent(Student student) {
     String sql = "insert into t_student(name, age) values(?, ?)" ;
     Object[] params = new Object[]{student.getName(), student.getAge()};
     return super .saveOrUpdate(sql, params);
   }
   
   /**
    * 根据id获得一个Student的信息
    * @param id
    * @return
    */
   public Student getStudentById( long id) {
     String sql = "select * from t_student where id=?" ;
     Object[] params = new Object[]{id};
     return (Student) super .queryForObject(sql, params, new RowMapForObject() {
       
       public Object rowMapForObject(ResultSet rs) {
         Student student = null ;
          try {
           if (rs != null && rs.next()) {
              student = new Student();
              student.setAge(rs.getInt(Student.AGE));
              student.setId(rs.getLong(Student.ID));
              student.setName(rs.getString(Student.NAME));
            }
         } catch (SQLException e) {
           e.printStackTrace();
         }
          return student;
       }
     });
   }
 
   /**
    * 获得所有Student的信息
    * @return
    */
   public List getStudentAll() {
     String sql = "select * from t_student" ;
     List list = super .queryForList(sql, null , new RowMapForList() {
 
       @Override
       public List rowMapForList(ResultSet rs) {
         List list = null ;
         try {
           if (rs != null ) {
             list = new ArrayList();
             while (rs.next()) {
               Student student = new Student();
               student.setId(rs.getLong( "id" ));
               student.setAge(rs.getInt( "age" ));
               student.setName(rs.getString( "name" ));
               list.add(student);
             }
           }
         } catch (SQLException e) {
           e.printStackTrace();
         }
         return list;
       }
     });
     
     return list;
   }  
}

如有疑问请留言或者到本站社区交流讨论,大家共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! 。

原文链接:http://blog.csdn.net/woshisap/article/details/7192822 。

最后此篇关于java 使用策略模式操作JDBC数据库的文章就讲到这里了,如果你想了解更多关于java 使用策略模式操作JDBC数据库的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com