JDBC封装DBUtil和DAO模式

news/2024/5/18 21:49:34 标签: JDBC

------------------------------------- JDBC封装DBUtil和DAO模式----------------------------------------------

JdbcUtils工具类

 

1 JdbcUtils的作用

你也看到了,连接数据库的四大参数是:驱动类、url、用户名,以及密码。这些参数都与特定数据库关联,如果将来想更改数据库,那么就要去修改这四大参数,那么为了不去修改代码,我们写一个JdbcUtils类,让它从配置文件中读取配置参数,然后创建连接对象。

 

2 JdbcUtils代码

JdbcUtils.java

publicclass JdbcUtils {

    privatestaticfinal String dbconfig = "dbconfig.properties";

    privatestatic Properties prop = new Properties();

    static {

       try {

           InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(dbconfig);

           prop.load(in);

           Class.forName(prop.getProperty("driverClassName"));

       } catch(IOException e) {

           thrownew RuntimeException(e);

       }

    }

 

    publicstatic Connection getConnection() {

       try {

           return DriverManager.getConnection(prop.getProperty("url"),

                  prop.getProperty("username"), prop.getProperty("password"));

       } catch (Exception e) {

           thrownew RuntimeException(e);

       }

    }

}

 

dbconfig.properties

driverClassName=oracle.jdbc.OracleDriver

url= jdbc:oracle:thin:@127.0.0.1:1521:orcl

username=scott

password=tiger


3 UserDao

 

1 DAO模式

DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来。DAO在数据库与业务逻辑(Service)之间。

l  实体域(JavaBean),即操作的对象,例如我们操作的表是user表,那么就需要先写一个User类;

l  DAO模式需要先提供一个DAO接口;

l  然后再提供一个DAO接口的实现类;

l  再编写一个DAO工厂,Service通过工厂来获取DAO实现。

 

2 代码

 

User.java

publicclass User {

    private String uid;

    private String username;

    private String password;

}

 

UserDao.java

publicinterface UserDao {

    publicvoid add(User user);

    publicvoid mod(User user);

    publicvoid del(String uid);

    public User find(String uid);

    public List<User> findAll();

}

 

UserDaoImpl.java

publicclass UserDaoImpl implements UserDao {

    publicvoid add(User user) {

       Connection con = null;

       PreparedStatement pstmt = null;

       try {

           con = JdbcUtils.getConnection();

           String sql = "insert into user value(?,?,?)";

           pstmt = con.prepareStatement(sql);

           pstmt.setString(1, user.getUid());

           pstmt.setString(2, user.getUsername());

           pstmt.setString(3, user.getPassword());

           pstmt.executeUpdate();

       } catch(Exception e) {

           thrownew RuntimeException(e);

       } finally {

           try {

              if(pstmt != null) pstmt.close();

              if(con != null) con.close();

           } catch(SQLException e) {}

       }

    }

 

    publicvoid mod(User user) {

       Connection con = null;

       PreparedStatement pstmt = null;

       try {

           con = JdbcUtils.getConnection();

           String sql = "update user set username=?, password=? where uid=?";

           pstmt = con.prepareStatement(sql);

           pstmt.setString(1, user.getUsername());

           pstmt.setString(2, user.getPassword());

           pstmt.setString(3, user.getUid());

           pstmt.executeUpdate();

       } catch(Exception e) {

           thrownew RuntimeException(e);

       } finally {

           try {

              if(pstmt != null) pstmt.close();

              if(con != null) con.close();

           } catch(SQLException e) {}

       }     

    }

 

    publicvoid del(String uid) {

       Connection con = null;

       PreparedStatement pstmt = null;

       try {

           con = JdbcUtils.getConnection();

           String sql = "delete from user where uid=?";

           pstmt = con.prepareStatement(sql);

           pstmt.setString(1, uid);

           pstmt.executeUpdate();

       } catch(Exception e) {

           thrownew RuntimeException(e);

       } finally {

           try {

              if(pstmt != null) pstmt.close();

              if(con != null) con.close();

           } catch(SQLException e) {}

       }         

    }

 

    public User load(String uid) {

       Connection con = null;

       PreparedStatement pstmt = null;

       ResultSet rs = null;

       try {

           con = JdbcUtils.getConnection();

           String sql = "select * from user where uid=?";

           pstmt = con.prepareStatement(sql);

           pstmt.setString(1, uid);

           rs = pstmt.executeQuery();

           if(rs.next()) {

              returnnew User(rs.getString(1), rs.getString(2), rs.getString(3));

           }

           returnnull;

       } catch(Exception e) {

           thrownew RuntimeException(e);

       } finally {

           try {

              if(pstmt != null) pstmt.close();

              if(con != null) con.close();

           } catch(SQLException e) {}

       }  

    }

 

    public List<User> findAll() {

       Connection con = null;

       PreparedStatement pstmt = null;

       ResultSet rs = null;

       try {

           con = JdbcUtils.getConnection();

           String sql = "select * from user";

           pstmt = con.prepareStatement(sql);

           rs = pstmt.executeQuery();

           List<User> userList = new ArrayList<User>();

           while(rs.next()) {

              userList.add(new User(rs.getString(1), rs.getString(2), rs.getString(3)));

           }

           return userList;

       } catch(Exception e) {

           thrownew RuntimeException(e);

       } finally {

           try {

              if(pstmt != null) pstmt.close();

              if(con != null) con.close();

           } catch(SQLException e) {}

       }  

    }

}

 

UserDaoFactory.java

publicclass UserDaoFactory {

    privatestatic UserDao userDao;

    static {

       try {

           InputStream in = Thread.currentThread().getContextClassLoader()

                  .getResourceAsStream("dao.properties");

           Properties prop = new Properties();

           prop.load(in);

           String className = prop.getProperty("com.rl.jdbc.UserDao");

           Class clazz = Class.forName(className);

           userDao = (UserDao) clazz.newInstance();

       } catch (Exception e) {

           thrownew RuntimeException(e);

       }

    }

 

    publicstatic UserDao getUserDao() {

       returnuserDao;

    }

}

 

dao.properties

com.rl.jdbc.UserDao=com.rl.jdbc.UserDaoImpl

 


http://www.niftyadmin.cn/n/1564533.html

相关文章

where 1=1有什么用?

为什么要在sql语句后边加上where 11 &#xff0c;对于初次见到的童鞋确实很纳闷。 觉得select * from table1 where 11 与 select * from table1完全没有区别。 其实这种想法是错的。记住本落格尔的名言【存在则合理】~~~ 不管sql语句中 where 11还是1<>2&#xff0c;aa…

关于document.form.取值问题

2019独角兽企业重金招聘Python工程师标准>>> 先看个函数&#xff1a; function selectUnleave() { var idobj document.leaveform.id; var LeaveBtobj document.leaveform.LeaveBt; for (var i0;i<idobj.length;i) { idobj[i].checked false; if (LeaveBtobj[…

JDBC中DAO模式的例子示范

----------------------------------------JDBC中DAO模式的例子示范--------------------------------------- 1 JdbcUtils的作用 你也看到了&#xff0c;连接数据库的四大参数是&#xff1a;驱动类、url、用户名&#xff0c;以及密码。这些参数都与特定数据库关联&#xff0c…

JAVA中的native是什么?

JAVA中的native是什么&#xff1f; native主要用于方法上 1、一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现&#xff0c;比如用C或C实现。2、在定义一个native方法时&#xff0c;并不提供实现体&#xff08;比较像定义一个…

Hibernate错误

1.错误提示&#xff1a; Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListenersat org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:96) at org.hibernate.annotatio…

JDBC事务的概述及应用

--------------------------------------------------JDBC事务的概述及应用--------------------------------------------- 事务 1 事务概述 为了方便演示事务&#xff0c;我们需要创建一个account表&#xff1a; CREATE TABLE account( ID NUMBER(10), NAME VA…

java中EQ、NE、GE、GT、LE、LT

Java中eq、ne、ge、gt、le、lt 关系运算符包括EQ、NE、GE、GT、LE、LT几个&#xff0c;关系运算符返回的是真“True”或假“False”。 eq&#xff08;Equal to&#xff09; 等运算符&#xff0c;如果运算符两边相同则返回真&#xff0c;否则返回假&#xff1b; ne&#xff08;…

Virtual Box下莫名其妙的问题

最近在使用Virtual Box的时候&#xff0c;遇到了一个很邪门的问题。网卡&#xff0c;按理说&#xff0c;选择桥接模式&#xff0c;应该是既可以访问外网&#xff0c;也可以被内网其他电脑访问的。但是&#xff0c;实际上不能访问外网。NAT模式可以正常访问外网&#xff0c;但是…