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();
           }
           
       }
       
    }

    3.数据访问层的

  • 相关阅读:
    Get-CrmSetting返回Unable to connect to the remote server的解决办法
    Dynamics 365中的常用Associate和Disassociate消息汇总
    Dynamics 365 Customer Engagement V9 活动源功能报错的解决方法
    Dynamics Customer Engagement V9版本配置面向Internet的部署时候下一步按钮不可点击的解决办法
    Dynamics 365检查工作流、SDK插件步骤是否选中运行成功后自动删除系统作业记录
    注意,更改团队所属业务部门用Update消息无效!
    Dynamics 365的审核日志分区删除超时报错怎么办?
    Dynamics 365使用Execute Multiple Request删除系统作业实体记录
    Dynamics 365的系统作业实体记录增长太快怎么回事?
    Dynamics CRM日期字段查询使用时分秒的方法
  • 原文地址:https://www.cnblogs.com/myhome-1/p/5561208.html
Copyright © 2011-2022 走看看