`

使用普通MVC时这样来写我们的dao(数据库访问对象)

 
阅读更多

以下是jdbc的封装

package com.cyws.util;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DB {
 private Connection con;
 private PreparedStatement pstm;
 private static String user;
 private static String password;
 private static String url;
 private static String dbDriver;
 
 /** 获取数据库的各个值  */
 static{
  Properties pros = new Properties();
  try {
   pros.load(DB.class.getResourceAsStream("db.properties"));
   user = pros.getProperty("username");
   password = pros.getProperty("password");
   url = pros.getProperty("url");
   dbDriver = pros.getProperty("dbDriver");
  } catch (IOException e1) {
   e1.printStackTrace();
  }
  try {
   Class.forName(dbDriver);
  } catch (ClassNotFoundException e) {}
 }
 
 /** 构造方法,在该方法中加载数据库驱动  */
 public DB(){
  try{
   Class.forName(dbDriver);
  }catch(ClassNotFoundException e){
   System.out.println("加载数据库驱动失败!");
   e.printStackTrace();
  }
  
 }

 /**创建数据库连接*/
 public Connection getCon(){
  if(con==null){
   try {
    con=DriverManager.getConnection(url,user,password);
    System.out.println("数据库连接成功");
   } catch (SQLException e) {
    System.out.println("创建数据库连接失败!");
    con=null;
    e.printStackTrace();
   }   
  }
  return con;
 }
 
 /**
  *@功能:对数据库进行增、删、改、查操作
  *@参数:sql为SQL语句;params为Object数组,里面存储的是为sql表示的SQL语句中"?"占位符赋值的数据
  */
 public void doPstm(String sql,Object[] params){
  if(sql!=null&&!sql.equals("")){
   if(params==null)
    params=new Object[0];   
   this.getCon();
   if(con!=null){
    try{  
     System.out.println(sql);
     pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
     for(int i=0;i<params.length;i++){
      pstm.setObject(i+1,params[i]);
     }
     pstm.execute();
    }catch(SQLException e){
     System.out.println("doPstm()方法出错!");
     e.printStackTrace();
    }    
   }   
  }
 }
 
 /**
  * @功能:获取调用doPstm()方法执行查询操作后返回的ResultSet结果集
  * @返回值:ResultSet
  * @throws SQLException
  */
 public ResultSet getRs() throws SQLException{
  return pstm.getResultSet();  
 }
 /**
  * @功能:获取调用doPstm()方法执行更新操作后返回影响的记录数
  * @返回值:int
  * @throws SQLException
  */
 public int getCount() throws SQLException{
  return pstm.getUpdateCount();  
 }
 /**
  * @功能:释放PrepareStatement对象与Connection对象
  */
 public void closed(){
  try{
   if(pstm!=null)
    pstm.close();   
  }catch(SQLException e){
   System.out.println("关闭pstm对象失败!");
   e.printStackTrace();
  }
  try{
   if(con!=null){
    con.close();
   }
  }catch(SQLException e){
   System.out.println("关闭con对象失败!");
   e.printStackTrace();
  }
 }
 
 public static void main(String args[])
 {
  new DB().getCon();
 }
}

以下是我们的dao层

package com.cyws.dao;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.cyws.util.DB;
import com.cyws.util.Page;
import com.cyws.util.QueryResult;

public class BaseDaoSuport<T>{
 private DB mydb = null;
 private static BaseDaoSuport baseDaoSuport = null;
 
 static{
  if(baseDaoSuport==null){
   baseDaoSuport = new BaseDaoSuport();
  }
 }

 public BaseDaoSuport() {
  mydb = new DB();
 }
 
 public static BaseDaoSuport getInstence(){
  return baseDaoSuport;
 }
 
 public boolean addT(String sql,Object[] params) {
  try {
   mydb.doPstm(sql, params);
   return true;
  } catch (Exception e) {
   return false;
  }
 }


 public boolean delT(int id,String sql) {
  Object[] params = { id };
  try {
   mydb.doPstm(sql, params);
   return true;
  } catch (Exception e) {
   return false;
  }
 }


 public ResultSet findByProperty(Object[] params,String sql) {
  ResultSet rs = null;
  try {
   mydb.doPstm(sql, params);
   rs = mydb.getRs();
  } catch (Exception e) {
   e.printStackTrace();
   System.out.println("查询出错");
  }
  return rs;
 }


 public List findTList(String sql,String countsql,int page) {
  List list = new ArrayList();
  QueryResult<T> queryResult = null;
  int d = this.getCount(countsql);
  System.out.println(d);
  Page pageUtil = new Page(d, page);
  ResultSet rs = null;
  try {
   Object[] params = { Page.maxResult * (page - 1), Page.maxResult };
   mydb.doPstm(sql, params);
   rs = mydb.getRs();
   System.out.println(rs);
   queryResult = new QueryResult<T>();
   queryResult.setPage(pageUtil);
  } catch (Exception e) {
   e.printStackTrace();
  }
  list.add(queryResult);
  list.add(rs);
  return list;
 }
 
 /**
  * 得到集合数据
  */
 public ResultSet getList(String sql,Object[] params) {
  ResultSet rs = null;
  try {
   mydb.doPstm(sql, params);
   rs = mydb.getRs();
   System.out.println(rs);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return rs;
 }

 private int getCount(String countsql) {
  int temp = 0;
  try {
   mydb.doPstm(countsql,null);
   ResultSet rs = mydb.getRs();
   while (rs.next()) {
    temp++;
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return temp;
 }

 public boolean modifyT(String sql,Object[] params) {
  try {
   mydb.doPstm(sql, params);
   return true;
  } catch (Exception e) {
   return false;
  }
 }
}

 

 

分享到:
评论

相关推荐

    MVC架构的考试系统

    在模型层,数据访问对象(DAO)是与数据库交互的接口,负责执行CRUD(创建、读取、更新、删除)操作。Java提供了JDBC API来连接和操作数据库,但为了减少重复代码和提高代码质量,通常会使用ORM(对象关系映射)框架...

    Mybatis_dao.rar_mybatis dao_mybatis_dao.rar

    这个压缩包文件"**Mybatis_dao.rar_mybatis_dao_mybatis_dao.rar**"包含了实现这个集成项目的相关资源,特别是DAO(数据访问对象)部分,这是业务逻辑与数据库交互的关键组件。 首先,让我们深入了解一下Mybatis。...

    使用jsp-servlet-service-dao四层结构完成用户信息的增删改查操作

    本文将深入探讨如何使用jsp-servlet-service-dao四层架构来实现这样的系统,包括用户信息的增删改查功能,以及权限控制机制。 首先,让我们理解这四层架构的每一层: 1. **JSP(JavaServer Pages)**:JSP是Java ...

    Spring MVC与MYBatis企业应用实战.pdf

    MYBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 3. **Spring MVC与MYBatis集成** 在企业应用中,Spring MVC与MYBatis的...

    spring mvc、 easyui、 mybatis 开发网站后台管理系统源代码下载

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。在后台管理系统中,MyBatis提供了一种灵活的数据库操作方式,使数据访问层...

    图书管理系统MVC版本,

    《图书管理系统MVC版本》是基于Java EE(J2EE)平台开发的一个经典项目,它采用了Model-View-Controller(MVC)设计模式,旨在帮助我们深入理解和实践Web应用程序的开发流程。MVC模式是一种软件架构模式,它将应用...

    基于mvc的学生档案管理系统

    这需要实现后台逻辑来处理这些操作,例如,使用JavaBean来封装管理员对象,然后通过DAO(Data Access Object)层来与数据库交互。管理员也可以对用户信息进行管理,如禁用或启用账户,修改用户角色等。 4. **用户...

    后端 SSM 前端 bootstrap 数据库mysql

    标题中的“后端SSM前端bootstrap数据库mysql”指的是一个基于Java Web开发的项目,使用了Spring、Spring MVC和MyBatis(简称SSM)作为后端框架,Bootstrap作为前端UI库,以及MySQL作为数据存储系统。这样的组合是...

    springmvc开发的oa系统含数据库能运行

    在Spring MVC应用中,通常使用Spring Data JPA或MyBatis等持久层框架来操作数据库。这些框架简化了SQL的编写,提供了ORM(对象关系映射)功能,使得Java对象可以直接与数据库记录对应。 **Spring MVC 实现** ...

    JakartaEE Spring MVC

    通过这个项目,开发者可以学习到如何设置Spring MVC的环境,如何配置和使用Spring MVC的注解,如何编写控制器,以及如何整合JakartaEE的其他服务,如JPA进行数据库操作。此外,还会涉及到Maven的使用,以及如何通过...

    JAVAWEB网上银行系统,MVC模式.rar.rar

    在JavaWeb网上银行系统中,通常会使用JDBC(Java Database Connectivity)进行数据库操作,但为了简化数据库访问,开发者可能会选择使用ORM(Object-Relational Mapping)框架,如Hibernate或MyBatis。这些框架提供...

    “教室管理系统”mvc模式设计

    Java中的实体类(Entity)和数据访问对象(DAO)通常用于实现模型层。 - **视图(View)**:视图负责展示数据,通常与用户界面直接关联。在本系统中,视图可能包括教室列表、教室详情、预约情况等界面,用于向用户...

    基于MVC的电影后台管理系统

    在这个系统中,可能有专门的数据访问对象(DAO)类来封装对数据库的操作,以及实体类(Entity)来代表电影、用户、评论等业务对象。 2. **View(视图)**:视图层是用户看到和交互的部分,主要负责展示数据。在这个...

    spring mvc+ mubait

    MyBatis 使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis 的主要优点在于其灵活性,开发者可以完全控制SQL的编写,从而实现...

    spring+spring mvc + mybatis

    4. **整合使用**:Spring、Spring MVC 和 MyBatis 的整合使用,通常会利用Spring的IoC容器来管理MyBatis的SqlSessionFactory和SqlSession,以及Service层和DAO层的bean。Spring MVC负责接收和响应HTTP请求,Service...

    spring+mybatis应用demo含数据库

    MyBatis通过XML或注解方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 "Spring+MyBatis企业应用实战2"这个项目可能包含以下几个方面的内容: 1. **...

    spring+mybatis+spring-mvc+maven 项目框架.zip

    Spring-MVC通过DispatcherServlet进行中央调度,使用ModelAndView对象封装模型数据和视图信息,实现了松耦合的MVC设计模式。 四、Maven Maven是Apache基金会开发的项目管理工具,它通过项目对象模型(POM)文件来...

    mvc架包大全

    MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 6. **集成 Spring MVC 和 MyBatis** Spring MVC 可以与 ...

Global site tag (gtag.js) - Google Analytics