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

2025-05-29 0 62

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java 使用策略模式操作JDBC数据库 https://www.kuaiidc.com/115308.html

相关文章

发表评论
暂无评论