首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

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

2012-10-09 
使用普通MVC时这样来写我们的dao(数据库访问对象)以下是jdbc的封装package com.cyws.utilimport java.io.

使用普通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;
??}
?}
}

?

?

热点排行