zoukankan      html  css  js  c++  java
  • java的分层开发

    既然是分层开发,首先我们需要知道的是分为那几个层,并且是干什么的?

    1.实体层(entity) 对应数据库中的一张表,有了它可以降低耦合性,同时也是数据的载体.

    2.数据访问对象(data access object)主要包含两个java源文件,一个是BaseBao,还有一个是所需要查询表的接口

    复制代码
    package cn.news.dao;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.junit.Test;
    
    /**
     * 数据访问工具类
     * @version 1.1
     * @author happy
     *
     */
    public class BaseDao {
       private static final String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
       private static final String url="jdbc:sqlserver://localhost:1433;DataBaseName=s2223";
       private static final String username="sa";
       private static final String pwd="6375196";
       
       Connection con=null;
       PreparedStatement ps=null;
       ResultSet rs=null;
       //01.写一个用户获取到一个连接对象的方法,方法的返回值是Connection类型
       /**
        * 01.写一个用户获取到一个连接对象的方法,方法的返回值是Connection类型
        * @return   连接对象
        * @throws Exception
        */
       public Connection getConnection() throws Exception{
           Class.forName(driver);
           //什么条件下,构建connection对象
           if (con==null||con.isClosed()) {
               con=DriverManager.getConnection(url, username, pwd);
            }
           //同志们碰到一个
           return con;
       }
       
       
       //单元测试
       //java junit
       @Test
       public void testQuery() throws Exception{
           ResultSet rs = executeQuery("select * from student");
           if(rs!=null){
               while (rs.next()) {
                String name = rs.getString("sname");
                System.out.println(name);
            }
           }
       }
       //测试添加
       @Test
       public void testUpdate() throws Exception{
         int count=  executeUpdate("update student set sname='大强' where sname='黄强'");
         System.out.println(count);
       }
       
       
       
       //执行查询操作  目的:返回一个读取器
       /**
        * 执行查询操作  目的:返回一个读取器
        * @param sql  sql语句
        * @param objs  参数列表
        * @return     读取器对象
        * @throws Exception
        */
       public ResultSet  executeQuery(String sql,Object... objs) throws Exception{
           con=getConnection();
           ps = con.prepareStatement(sql);
           for (int i = 0; i < objs.length; i++) {
               ps.setObject(i+1, objs[i]);
           }
           rs= ps.executeQuery();
           return rs;
       }
       
       
       //执行增删该操作
       /**
        * 执行增删该操作
        * @param sql  sql语句
        * @param objs  参数列表
        * @return     受影响行数
        * @throws Exception
        */
       public int executeUpdate(String sql,Object... objs) throws Exception{
            con=getConnection();
            ps = con.prepareStatement(sql);
            for (int i = 0; i < objs.length; i++) {
                   ps.setObject(i+1, objs[i]);
            }
            int count = ps.executeUpdate(); 
            return count;
       }
       
       
       
       //2.回收连接资源
      /**
       * 回收连接资源
       * @throws Exception
       */
       public void closeAll() throws Exception{
           if(rs!=null){
               rs.close();
           }
           if (ps!=null) {
            ps.close();
           }
           if(con!=null){
               con.close();
           }
           
       }
       
    }
  • 相关阅读:
    CentOS 7 安装Hadoop前的SSH免密码登录配置
    CentOS 7.1下SSH远程登录服务器详解-转
    Linux系统下如何配置SSH_Centos7 ssh连接配置 CentOS7下安全配置
    如何在CentOS 7上修改主机名
    【转】CentOS 6.3(x86_64)下安装Oracle 10g R2
    【转】CentOS 6.3(x86_32)下安装Oracle 10g R2
    【转】Linux Oracle服务启动&停止脚本与开机自启动
    Cacti在selinux开启的情况下使用
    Nagios在selinux开启的情况下使用
    Nagios状态长时间处于Pending的解决方法
  • 原文地址:https://www.cnblogs.com/6zhi/p/5564087.html
Copyright © 2011-2022 走看看