当前位置:Gxlcms > 数据库问题 > DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

时间:2021-07-01 10:21:17 帮助过:3人阅读

技术分享
  1. <span style="color: #008080;"> 1 <span style="color: #0000ff;">package<span style="color: #000000;"> com.util.db;
  2. <span style="color: #008080;"> 2
  3. <span style="color: #008080;"> 3 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.Connection;
  4. <span style="color: #008080;"> 4 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.DriverManager;
  5. <span style="color: #008080;"> 5 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.ResultSet;
  6. <span style="color: #008080;"> 6 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.SQLException;
  7. <span style="color: #008080;"> 7 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.Statement;
  8. <span style="color: #008080;"> 8 <span style="color: #0000ff;">import<span style="color: #000000;"> java.util.ResourceBundle;
  9. <span style="color: #008080;"> 9
  10. <span style="color: #008080;">10 <span style="color: #008000;">/**
  11. <span style="color: #008080;">11 <span style="color: #008000;"> * 数据库操作工具类
  12. <span style="color: #008080;">12 <span style="color: #008000;"> * <span style="color: #808080;">@author<span style="color: #008000;"> lamp
  13. <span style="color: #008080;">13 <span style="color: #008000;"> *
  14. <span style="color: #008080;">14 <span style="color: #008000;">*/
  15. <span style="color: #008080;">15 <span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> DBUtils {
  16. <span style="color: #008080;">16
  17. <span style="color: #008080;">17 <span style="color: #008000;">//<span style="color: #008000;">数据库连接地址
  18. <span style="color: #008080;">18 <span style="color: #0000ff;">public <span style="color: #0000ff;">static<span style="color: #000000;"> String URL;
  19. <span style="color: #008080;">19 <span style="color: #008000;">//<span style="color: #008000;">用户名
  20. <span style="color: #008080;">20 <span style="color: #0000ff;">public <span style="color: #0000ff;">static<span style="color: #000000;"> String USERNAME;
  21. <span style="color: #008080;">21 <span style="color: #008000;">//<span style="color: #008000;">密码
  22. <span style="color: #008080;">22 <span style="color: #0000ff;">public <span style="color: #0000ff;">static<span style="color: #000000;"> String PASSWORD;
  23. <span style="color: #008080;">23 <span style="color: #008000;">//<span style="color: #008000;">mysql的驱动类
  24. <span style="color: #008080;">24 <span style="color: #0000ff;">public <span style="color: #0000ff;">static<span style="color: #000000;"> String DRIVER;
  25. <span style="color: #008080;">25
  26. <span style="color: #008080;">26 <span style="color: #0000ff;">private <span style="color: #0000ff;">static ResourceBundle rb = ResourceBundle.getBundle("com.util.db.db-config"<span style="color: #000000;">);
  27. <span style="color: #008080;">27
  28. <span style="color: #008080;">28 <span style="color: #0000ff;">private<span style="color: #000000;"> DBUtils(){}
  29. <span style="color: #008080;">29
  30. <span style="color: #008080;">30 <span style="color: #008000;">//<span style="color: #008000;">使用静态块加载驱动程序
  31. <span style="color: #008080;">31 <span style="color: #0000ff;">static<span style="color: #000000;">{
  32. <span style="color: #008080;">32 URL = rb.getString("jdbc.url"<span style="color: #000000;">);
  33. <span style="color: #008080;">33 USERNAME = rb.getString("jdbc.username"<span style="color: #000000;">);
  34. <span style="color: #008080;">34 PASSWORD = rb.getString("jdbc.password"<span style="color: #000000;">);
  35. <span style="color: #008080;">35 DRIVER = rb.getString("jdbc.driver"<span style="color: #000000;">);
  36. <span style="color: #008080;">36 <span style="color: #0000ff;">try<span style="color: #000000;"> {
  37. <span style="color: #008080;">37 <span style="color: #000000;"> Class.forName(DRIVER);
  38. <span style="color: #008080;">38 } <span style="color: #0000ff;">catch<span style="color: #000000;"> (ClassNotFoundException e) {
  39. <span style="color: #008080;">39 <span style="color: #000000;"> e.printStackTrace();
  40. <span style="color: #008080;">40 <span style="color: #000000;"> }
  41. <span style="color: #008080;">41 <span style="color: #000000;"> }
  42. <span style="color: #008080;">42 <span style="color: #008000;">//<span style="color: #008000;">定义一个获取数据库连接的方法
  43. <span style="color: #008080;">43 <span style="color: #0000ff;">public <span style="color: #0000ff;">static<span style="color: #000000;"> Connection getConnection(){
  44. <span style="color: #008080;">44 Connection conn = <span style="color: #0000ff;">null<span style="color: #000000;">;
  45. <span style="color: #008080;">45 <span style="color: #0000ff;">try<span style="color: #000000;"> {
  46. <span style="color: #008080;">46 conn =<span style="color: #000000;"> DriverManager.getConnection(URL, USERNAME, PASSWORD);
  47. <span style="color: #008080;">47 } <span style="color: #0000ff;">catch<span style="color: #000000;"> (SQLException e) {
  48. <span style="color: #008080;">48 <span style="color: #000000;"> e.printStackTrace();
  49. <span style="color: #008080;">49 System.out.println("获取连接失败"<span style="color: #000000;">);
  50. <span style="color: #008080;">50 <span style="color: #000000;"> }
  51. <span style="color: #008080;">51 <span style="color: #0000ff;">return<span style="color: #000000;"> conn;
  52. <span style="color: #008080;">52 <span style="color: #000000;"> }
  53. <span style="color: #008080;">53
  54. <span style="color: #008080;">54 <span style="color: #008000;">/**
  55. <span style="color: #008080;">55 <span style="color: #008000;"> * 关闭数据库连接
  56. <span style="color: #008080;">56 <span style="color: #008000;"> * <span style="color: #808080;">@param<span style="color: #008000;"> rs
  57. <span style="color: #008080;">57 <span style="color: #008000;"> * <span style="color: #808080;">@param<span style="color: #008000;"> stat
  58. <span style="color: #008080;">58 <span style="color: #008000;"> * <span style="color: #808080;">@param<span style="color: #008000;"> conn
  59. <span style="color: #008080;">59 <span style="color: #008000;">*/
  60. <span style="color: #008080;">60 <span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> close(ResultSet rs,Statement stat,Connection conn){
  61. <span style="color: #008080;">61 <span style="color: #0000ff;">try<span style="color: #000000;"> {
  62. <span style="color: #008080;">62 <span style="color: #0000ff;">if(rs!=<span style="color: #0000ff;">null<span style="color: #000000;">)rs.close();
  63. <span style="color: #008080;">63 <span style="color: #0000ff;">if(stat!=<span style="color: #0000ff;">null<span style="color: #000000;">)stat.close();
  64. <span style="color: #008080;">64 <span style="color: #0000ff;">if(conn!=<span style="color: #0000ff;">null<span style="color: #000000;">)conn.close();
  65. <span style="color: #008080;">65 } <span style="color: #0000ff;">catch<span style="color: #000000;"> (SQLException e) {
  66. <span style="color: #008080;">66 <span style="color: #000000;"> e.printStackTrace();
  67. <span style="color: #008080;">67 <span style="color: #000000;"> }
  68. <span style="color: #008080;">68 <span style="color: #000000;"> }
  69. <span style="color: #008080;">69
  70. <span style="color: #008080;">70 }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
技术分享

注意:26行中,注意获取属性文件的包名是否正确。稍后会定义这个属性文件。

28行:既然是工具类,一般不要实例化,此时可以采用单例设计模式,或者将构造方法私有化。

26行:很明显可以看到,我们是将连接数据库的URL、用户名,密码等信息编写在一个属性文件(jdbc.properties)中,稍后再来定义这个属性文件。

31行:为避免重复代码,使用静态代码块:只会在类加载的时候执行一次。

42行:定义一个获取数据库连接的方法

60行:关闭数据库连接

(2)接下来新建一个属性文件,new-->file,命名为:db-config.properties,代码如下:

  1. jdbc.url=jdbc:mysql:<span style="color: #008000;">//<span style="color: #008000;">localhost:3306/jdbcdb
  2. jdbc.username=<span style="color: #000000;">root
  3. jdbc.password=<span style="color: #000000;">smyh
  4. jdbc.driver=com.mysql.jdbc.Driver</span></span></span></span>

以后如果需要修改配置信息,只需要在这里改就行了。注意在上面的DBUtils类中是怎么来调用这个配置信息的。

紧接着新建文件,定义好Person类:(package com.vae.domain)

技术分享
  1. <span style="color: #008080;"> 1 <span style="color: #0000ff;">package<span style="color: #000000;"> com.vae.domain;
  2. <span style="color: #008080;"> 2
  3. <span style="color: #008080;"> 3 <span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Person {
  4. <span style="color: #008080;"> 4 <span style="color: #0000ff;">private <span style="color: #0000ff;">int<span style="color: #000000;"> id;
  5. <span style="color: #008080;"> 5 <span style="color: #0000ff;">private<span style="color: #000000;"> String name;
  6. <span style="color: #008080;"> 6 <span style="color: #0000ff;">private <span style="color: #0000ff;">int<span style="color: #000000;"> age;
  7. <span style="color: #008080;"> 7 <span style="color: #0000ff;">private<span style="color: #000000;"> String description;
  8. <span style="color: #008080;"> 8 <span style="color: #0000ff;">public <span style="color: #0000ff;">int<span style="color: #000000;"> getId() {
  9. <span style="color: #008080;"> 9 <span style="color: #0000ff;">return<span style="color: #000000;"> id;
  10. <span style="color: #008080;">10 <span style="color: #000000;"> }
  11. <span style="color: #008080;">11 <span style="color: #0000ff;">public <span style="color: #0000ff;">void setId(<span style="color: #0000ff;">int<span style="color: #000000;"> id) {
  12. <span style="color: #008080;">12 <span style="color: #0000ff;">this.id =<span style="color: #000000;"> id;
  13. <span style="color: #008080;">13 <span style="color: #000000;"> }
  14. <span style="color: #008080;">14 <span style="color: #0000ff;">public<span style="color: #000000;"> String getName() {
  15. <span style="color: #008080;">15 <span style="color: #0000ff;">return<span style="color: #000000;"> name;
  16. <span style="color: #008080;">16 <span style="color: #000000;"> }
  17. <span style="color: #008080;">17 <span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> setName(String name) {
  18. <span style="color: #008080;">18 <span style="color: #0000ff;">this.name =<span style="color: #000000;"> name;
  19. <span style="color: #008080;">19 <span style="color: #000000;"> }
  20. <span style="color: #008080;">20 <span style="color: #0000ff;">public <span style="color: #0000ff;">int<span style="color: #000000;"> getAge() {
  21. <span style="color: #008080;">21 <span style="color: #0000ff;">return<span style="color: #000000;"> age;
  22. <span style="color: #008080;">22 <span style="color: #000000;"> }
  23. <span style="color: #008080;">23 <span style="color: #0000ff;">public <span style="color: #0000ff;">void setAge(<span style="color: #0000ff;">int<span style="color: #000000;"> age) {
  24. <span style="color: #008080;">24 <span style="color: #0000ff;">this.age =<span style="color: #000000;"> age;
  25. <span style="color: #008080;">25 <span style="color: #000000;"> }
  26. <span style="color: #008080;">26 <span style="color: #0000ff;">public<span style="color: #000000;"> String getDescription() {
  27. <span style="color: #008080;">27 <span style="color: #0000ff;">return<span style="color: #000000;"> description;
  28. <span style="color: #008080;">28 <span style="color: #000000;"> }
  29. <span style="color: #008080;">29 <span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> setDescription(String description) {
  30. <span style="color: #008080;">30 <span style="color: #0000ff;">this.description =<span style="color: #000000;"> description;
  31. <span style="color: #008080;">31 <span style="color: #000000;"> }
  32. <span style="color: #008080;">32 <span style="color: #0000ff;">public Person(<span style="color: #0000ff;">int id, String name, <span style="color: #0000ff;">int<span style="color: #000000;"> age, String description) {
  33. <span style="color: #008080;">33 <span style="color: #0000ff;">super<span style="color: #000000;">();
  34. <span style="color: #008080;">34 <span style="color: #0000ff;">this.id =<span style="color: #000000;"> id;
  35. <span style="color: #008080;">35 <span style="color: #0000ff;">this.name =<span style="color: #000000;"> name;
  36. <span style="color: #008080;">36 <span style="color: #0000ff;">this.age =<span style="color: #000000;"> age;
  37. <span style="color: #008080;">37 <span style="color: #0000ff;">this.description =<span style="color: #000000;"> description;
  38. <span style="color: #008080;">38 <span style="color: #000000;"> }
  39. <span style="color: #008080;">39 <span style="color: #0000ff;">public Person(String name, <span style="color: #0000ff;">int<span style="color: #000000;"> age, String description) {
  40. <span style="color: #008080;">40 <span style="color: #0000ff;">super<span style="color: #000000;">();
  41. <span style="color: #008080;">41 <span style="color: #0000ff;">this.name =<span style="color: #000000;"> name;
  42. <span style="color: #008080;">42 <span style="color: #0000ff;">this.age =<span style="color: #000000;"> age;
  43. <span style="color: #008080;">43 <span style="color: #0000ff;">this.description =<span style="color: #000000;"> description;
  44. <span style="color: #008080;">44 <span style="color: #000000;"> }
  45. <span style="color: #008080;">45 <span style="color: #0000ff;">public<span style="color: #000000;"> Person() {
  46. <span style="color: #008080;">46 <span style="color: #0000ff;">super<span style="color: #000000;">();
  47. <span style="color: #008080;">47 <span style="color: #008000;">//<span style="color: #008000;"> TODO Auto-generated constructor stub
  48. <span style="color: #008080;">48 <span style="color: #000000;"> }
  49. <span style="color: #008080;">49 <span style="color: #000000;"> @Override
  50. <span style="color: #008080;">50 <span style="color: #0000ff;">public<span style="color: #000000;"> String toString() {
  51. <span style="color: #008080;">51 <span style="color: #0000ff;">return "Person [id=" + id + ", name=" + name + ", age=" +<span style="color: #000000;"> age
  52. <span style="color: #008080;">52 + ", description=" + description + "]"<span style="color: #000000;">;
  53. <span style="color: #008080;">53 <span style="color: #000000;"> }
  54. <span style="color: #008080;">54
  55. <span style="color: #008080;">55
  56. <span style="color: #008080;">56 }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
技术分享

这个Person类就是领域模型,表示是对它进行增删改查。

(3)定义PersonDao接口:专门对Person类进行操作(例如增删改查)的接口(package com.vae.dao)

技术分享
  1. <span style="color: #0000ff;">package<span style="color: #000000;"> com.vae.dao;
  2. <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.SQLException;
  3. <span style="color: #0000ff;">import<span style="color: #000000;"> java.util.List;
  4. <span style="color: #0000ff;">import<span style="color: #000000;"> com.vae.domain.Person;
  5. <span style="color: #0000ff;">public <span style="color: #0000ff;">interface<span style="color: #000000;"> PersonDao {
  6. <span style="color: #008000;">//<span style="color: #008000;">添加方法
  7. <span style="color: #0000ff;">public <span style="color: #0000ff;">void add(Person p)<span style="color: #0000ff;">throws<span style="color: #000000;"> SQLException;
  8. <span style="color: #008000;">//<span style="color: #008000;">更新方法
  9. <span style="color: #0000ff;">public <span style="color: #0000ff;">void update(Person p)<span style="color: #0000ff;">throws<span style="color: #000000;"> SQLException;
  10. <span style="color: #008000;">//<span style="color: #008000;">删除方法
  11. <span style="color: #0000ff;">public <span style="color: #0000ff;">void delete(<span style="color: #0000ff;">int id)<span style="color: #0000ff;">throws<span style="color: #000000;"> SQLException;
  12. <span style="color: #008000;">//<span style="color: #008000;">查找方法
  13. <span style="color: #0000ff;">public Person findById(<span style="color: #0000ff;">int id)<span style="color: #0000ff;">throws<span style="color: #000000;"> SQLException;
  14. <span style="color: #008000;">//<span style="color: #008000;">查找所有
  15. <span style="color: #0000ff;">public List<Person> findAll()<span style="color: #0000ff;">throws<span style="color: #000000;"> SQLException;
  16. }<span style="font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.5;"> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
技术分享

(4)定义PeronDaoImpl实现类 ,实现上面的PeronDao接口(package com.vae.dao.impl)

技术分享
  1. <span style="color: #008080;"> 1 <span style="color: #0000ff;">package<span style="color: #000000;"> com.vae.dao.impl;
  2. <span style="color: #008080;"> 2
  3. <span style="color: #008080;"> 3 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.Connection;
  4. <span style="color: #008080;"> 4 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.PreparedStatement;
  5. <span style="color: #008080;"> 5 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.ResultSet;
  6. <span style="color: #008080;"> 6 <span style="color: #0000ff;">import<span style="color: #000000;"> java.sql.SQLException;
  7. <span style="color: #008080;"> 7 <span style="color: #0000ff;">import<span style="color: #000000;"> java.util.ArrayList;
  8. <span style="color: #008080;"> 8 <span style="color: #0000ff;">import<span style="color: #000000;"> java.util.List;
  9. <span style="color: #008080;"> 9
  10. <span style="color: #008080;"> 10 <span style="color: #0000ff;">import<span style="color: #000000;"> com.util.db.DBUtils;
  11. <span style="color: #008080;"> 11 <span style="color: #0000ff;">import<span style="color: #000000;"> com.vae.dao.PersonDao;
  12. <span style="color: #008080;"> 12 <span style="color: #0000ff;">import<span style="color: #000000;"> com.vae.domain.Person;
  13. <span style="color: #008080;"> 13
  14. <span style="color: #008080;"> 14 <span style="color: #008000;">/**
  15. <span style="color: #008080;"> 15 <span style="color: #008000;"> * PersonDao的具体实现类
  16. <span style="color: #008080;"> 16 <span style="color: #008000;"> * <span style="color: #808080;">@author<span style="color: #008000;"> lamp
  17. <span style="color: #008080;"> 17 <span style="color: #008000;"> *
  18. <span style="color: #008080;"> 18 <span style="color: #008000;">*/
  19. <span style="color: #008080;"> 19 <span style="color: #0000ff;">public <span style="color: #0000ff;">class PersonDaoImpl <span style="color: #0000ff;">implements<span style="color: #000000;"> PersonDao{
  20. <span style="color: #008080;"> 20
  21. <span style="color: #008080;"> 21 <span style="color: #008000;">/**
  22. <span style="color: #008080;"> 22 <span style="color: #008000;"> * 实现添加方法
  23. <span style="color: #008080;"> 23 <span style="color: #008000;">*/
  24. <span style="color: #008080;"> 24 <span style="color: #000000;"> @Override
  25. <span style="color: #008080;"> 25 <span style="color: #0000ff;">public <span style="color: #0000ff;">void add(Person p) <span style="color: #0000ff;">throws<span style="color: #000000;"> SQLException {
  26. <span style="color: #008080;"> 26 Connection conn = <span style="color: #0000ff;">null<span style="color: #000000;">;
  27. <span style="color: #008080;"> 27 PreparedStatement ps = <span style="color: #0000ff;">null<span style="color: #000000;">;
  28. <span style="color: #008080;"> 28 String sql = "insert into person(name,age,description)values(?,?,?)"<span style="color: #000000;">;
  29. <span style="color: #008080;"> 29 <span style="color: #0000ff;">try<span style="color: #000000;">{
  30. <span style="color: #008080;"> 30 conn =<span style="color: #000000;"> DBUtils.getConnection();
  31. <span style="color: #008080;"> 31 ps =<span style="color: #000000;"> conn.prepareStatement(sql);
  32. <span style="color: #008080;"> 32 ps.setString(1<span style="color: #000000;">, p.getName());
  33. <span style="color: #008080;"> 33 ps.setInt(2<span style="color: #000000;">, p.getAge());
  34. <span style="color: #008080;"> 34 ps.setString(3<span style="color: #000000;">, p.getDescription());
  35. <span style="color: #008080;"> 35 <span style="color: #000000;"> ps.executeUpdate();
  36. <span style="color: #008080;"> 36 }<span style="color: #0000ff;">catch<span style="color: #000000;">(SQLException e){
  37. <span style="color: #008080;"> 37 <span style="color: #000000;"> e.printStackTrace();
  38. <span style="color: #008080;"> 38 <span style="color: #0000ff;">throw <span style="color: #0000ff;">new SQLException("添加数据失败"<span style="color: #000000;">);
  39. <span style="color: #008080;"> 39 }<span style="color: #0000ff;">finally<span style="color: #000000;">{
  40. <span style="color: #008080;"> 40 DBUtils.close(<span style="color: #0000ff;">null<span style="color: #000000;">, ps, conn);
  41. <span style="color: #008080;"> 41 <span style="color: #000000;"> }
  42. <span style="color: #008080;"> 42 <span style="color: #000000;"> }
  43. <span style="color: #008080;"> 43
  44. <span style="color: #008080;"> 44 <span style="color: #008000;">/**
  45. <span style="color: #008080;"> 45 <span style="color: #008000;"> * 更新方法
  46. <span style="color: #008080;"> 46 <span style="color: #008000;">*/
  47. <span style="color: #008080;"> 47 <span style="color: #000000;"> @Override
  48. <span style="color: #008080;"> 48 <span style="color: #0000ff;">public <span style="color: #0000ff;">void update(Person p) <span style="color: #0000ff;">throws<span style="color: #000000;"> SQLException {
  49. <span style="color: #008080;"> 49 Connection conn = <span style="color: #0000ff;">null<span style="color: #000000;">;
  50. <span style="color: #008080;"> 50 PreparedStatement ps = <span style="color: #0000ff;">null<span style="color: #000000;">;
  51. <span style="color: #008080;"> 51 String sql = "update person set name=?,age=?,description=? where id=?"<span style="color: #000000;">;
  52. <span style="color: #008080;"> 52 <span style="color: #0000ff;">try<span style="color: #000000;">{
  53. <span style="color: #008080;"> 53 conn =<span style="color: #000000;"> DBUtils.getConnection();
  54. <span style="color: #008080;"> 54 ps =<span style="color: #000000;"> conn.prepareStatement(sql);
  55. <span style="color: #008080;"> 55 ps.setString(1<span style="color: #000000;">, p.getName());
  56. <span style="color: #008080;"> 56 ps.setInt(2<span style="color: #000000;">, p.getAge());
  57. <span style="color: #008080;"> 57 ps.setString(3<span style="color: #000000;">, p.getDescription());
  58. <span style="color: #008080;"> 58 ps.setInt(4<span style="color: #000000;">, p.getId());
  59. <span style="color: #008080;"> 59 <span style="color: #000000;"> ps.executeUpdate();
  60. <span style="color: #008080;"> 60 }<span style="color: #0000ff;">catch<span style="color: #000000;">(SQLException e){
  61. <span style="color: #008080;"> 61 <span style="color: #000000;"> e.printStackTrace();
  62. <span style="color: #008080;"> 62 <span style="color: #0000ff;">throw <span style="color: #0000ff;">new SQLException("更新数据失败"<span style="color: #000000;">);
  63. <span style="color: #008080;"> 63 }<span style="color: #0000ff;">finally<span style="color: #000000;">{
  64. <span style="color: #008080;"> 64 DBUtils.close(<span style="color: #0000ff;">null<span style="color: #000000;">, ps, conn);
  65. <span style="color: #008080;"> 65 <span style="color: #000000;"> }
  66. <span style="color: #008080;"> 66 <span style="color: #000000;"> }
  67. <span style="color: #008080;"> 67
  68. <span style="color: #008080;"> 68 <span style="color: #008000;">/**
  69. <span style="color: #008080;"> 69 <span style="color: #008000;"> * 删除方法
  70. <span style="color: #008080;"> 70 <span style="color: #008000;">*/
  71. <span style="color: #008080;"> 71 <span style="color: #000000;"> @Override
  72. <span style="color: #008080;"> 72 <span style="color: #0000ff;">public <span style="color: #0000ff;">void delete(<span style="color: #0000ff;">int id) <span style="color: #0000ff;">throws<span style="color: #000000;"> SQLException {
  73. <span style="color: #008080;"> 73 Connection conn = <span style="color: #0000ff;">null<span style="color: #000000;">;
  74. <span style="color: #008080;"> 74 PreparedStatement ps = <span style="color: #0000ff;">null<span style="color: #000000;">;
  75. <span style="color: #008080;"> 75 String sql = "delete from person where id=?"<span style="color: #000000;">;
  76. <span style="color: #008080;"> 76 <span style="color: #0000ff;">try<span style="color: #000000;">{
  77. <span style="color: #008080;"> 77 conn =<span style="color: #000000;"> DBUtils.getConnection();
  78. <span style="color: #008080;"> 78 ps =<span style="color: #000000;"> conn.prepareStatement(sql);
  79. <span style="color: #008080;"> 79 ps.setInt(1<span style="color: #000000;">,id);
  80. 80 ps.executeUpdate();
  81. 81 }catch(SQLException e){
  82. 82 e.printStackTrace();
  83. 83 throw new SQLException(" 删除数据失败");
  84. 84 }finally{
  85. 85 DBUtils.close(null, ps, conn);
  86. 86 }
  87. 87 }
  88. 88
  89. 89 /**
  90. 90 * 根据ID查询一个对象
  91. 91 */
  92. 92 @Override
  93. 93 public Person findById(int id) throws SQLException {
  94. 94 Connection conn = null;
  95. 95 PreparedStatement ps = null;
  96. 96 ResultSet rs = null;
  97. 97 Person p = null;
  98. 98 String sql = "select name,age,description from person where id=?";
  99. 99 try{
  100. 100 conn = DBUtils.getConnection();
  101. 101 ps = conn.prepareStatement(sql);
  102. 102 ps.setInt(1, id);
  103. 103 rs = ps.executeQuery();
  104. 104 if(rs.next()){
  105. 105 p = new Person();
  106. 106 p.setId(id);
  107. 107 p.setName(rs.getString(1));
  108. 108 p.setAge(rs.getInt(2));
  109. 109 p.setDescription(rs.getString(3));
  110. 110 }
  111. 111 }catch(SQLException e){
  112. 112 e.printStackTrace();
  113. 113 throw new SQLException("根据ID查询数据失败");
  114. 114 }finally{
  115. 115 DBUtils.close(rs, ps, conn);
  116. 116 }
  117. 117 return p;
  118. 118 }
  119. 119
  120. 120 /**
  121. 121 * 查询所有数据
  122. 122 */
  123. 123 @Override
  124. 124 public List<Person> findAll() throws SQLException {
  125. 125 Connection conn = null;
  126. 126 PreparedStatement ps = null;
  127. 127 ResultSet rs = null;
  128. 128 Person p = null;
  129. 129 List<Person> persons = new ArrayList<Person>();
  130. 130 String sql = "select id,name,age,description from person";
  131. 131 try{
  132. 132 conn = DBUtils.getConnection();
  133. 133 ps = conn.prepareStatement(sql);
  134. 134 rs = ps.executeQuery();
  135. 135 while(rs.next()){
  136. 136 p = new Person();
  137. 137 p.setId(rs.getInt(1));
  138. 138 p.setName(rs.getString(2));
  139. 139 p.setAge(rs.getInt(3));
  140. 140 p.setDescription(rs.getString(4));
  141. 141 persons.add(p);
  142. 142 }
  143. 143 }catch(SQLException e){
  144. 144 e.printStackTrace();
  145. 145 throw new SQLException("查询所有数据失败");
  146. 146 }finally{
  147. 147 DBUtils.close(rs, ps, conn);
  148. 148 }
  149. 149 return persons;
  150. 150 }
  151. 151
  152. 152 }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

标签:

人气教程排行