开发者社区> 郭璞> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java JDBC封装模式

简介: 模仿DBUtils里面的一些用法,下面是一些简单的实现数据集的操作的方法 下面使用到的两个bean。首先是userbean package bean; public class user { String username; String pass...
+关注继续查看

模仿DBUtils里面的一些用法,下面是一些简单的实现数据集的操作的方法


下面使用到的两个bean。首先是userbean

package bean;

public class user {

    String username;
    String password;

    public user(){
        username=null;
        password=null;
    }

    @Override
    public String toString() {
        return "user [username=" + username + ", password=" + password + "]";
    }
    public user(String username, String password) {
        super();
        this.username = username;
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

接下来是itemsbean的代码,都很简单

package bean;

public class Items {

    String title;
    String contents;
    public Items(){
        title=null;
        contents=null;
    }
    public Items(String title, String contents) {
        super();
        this.title = title;
        this.contents = contents;
    }
    @Override
    public String toString() {
        return "Items [title=" + title + ", contents=" + contents + "]";
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContents() {
        return contents;
    }
    public void setContents(String contents) {
        this.contents = contents;
    }

}

接下来就是重头戏了,也即是我们的DBHelper类,主要的思想是其中对bean的操作,还有是如何将数据集进行封装的

package DBUtils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import bean.Items;
import bean.user;


/**
 * 易错点:
 * 需要注意的是items表中有一项在数据库中为content,而bean里设置出错,设置成了contents,尤其应该注意;
 * @author Summer
 *
 */
public class Dbutiler {

    static String DRIVER="com.mysql.jdbc.Driver";
    static String CONNECTIONURL="jdbc:mysql://127.0.0.1:3306/summer";
    static String ROOT="root";
    static String PASSWORD="mysql";
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet result=null;

    public Dbutiler(){

        try {
            Class.forName(DRIVER);
            conn=(Connection) DriverManager.getConnection(CONNECTIONURL, ROOT, PASSWORD);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        if(conn!=null){
            System.out.println("Connected!");
        }
    }


    //下面是获得用户信息数据集
    public List<user> getUserInfo(String sql){
        user tempUser=null;
        List<user> userList=new ArrayList<user>();
        try {
            ps=conn.prepareStatement(sql);
            result=ps.executeQuery();
            while(result.next()){
                tempUser=new user();
                String userName=result.getString("username");
                String passWord=result.getString("password");
                tempUser.setUsername(userName);
                tempUser.setPassword(passWord);
                userList.add(tempUser);

                //感悟就是,每次invoke之后,都要及时的进行置空,否则可能得不到新值
                tempUser=null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            if(ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                ps=null;
            }
            if(result!=null){
                try {
                    result.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                result=null;
            }
        }
        return userList;

    }

    //下面是插入用户的方法
    public boolean addUser(user userInfo){
        int flag=0;
        try {
            String sql="insert into user(username,password) values(?,?);";
            ps=(PreparedStatement) conn.prepareStatement(sql);
            ps.setString(1,userInfo.getUsername());
            ps.setString(2, userInfo.getPassword());
            flag=ps.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            if(ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                ps=null;
            }
            if(result!=null){
                try {
                    result.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                result=null;
            }
        }
        if(flag!=0){
            return true;
        }else{
            return false;
        }
    }


    public List<Items> getItemsInfo(String sql){
        Items tempItem=null;
        List<Items> ItemsInfo=new ArrayList<Items>();
        try {
            ps=conn.prepareStatement(sql);
            result=ps.executeQuery();
            while(result.next()){
                tempItem=new Items();
                String Title=result.getString("title");
                String Contents=result.getString("content");
                tempItem.setTitle(Title);
                tempItem.setContents(Contents);
                ItemsInfo.add(tempItem);

                //感悟就是,每次invoke之后,都要及时的进行置空,否则可能得不到新值
                tempItem=null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            if(ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                ps=null;
            }
            if(result!=null){
                try {
                    result.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                result=null;
            }
        }
        return ItemsInfo;

    }

    //下面是添加数据信息的方法
        public boolean addOneItem(Items item){
            int flag=0;
            try {
                String sql="insert into items(title,content) values(?,?);";
                ps=(PreparedStatement) conn.prepareStatement(sql);
                ps.setString(1,item.getTitle());
                ps.setString(2, item.getContents());
                flag=ps.executeUpdate();

            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                if(ps!=null){
                    try {
                        ps.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    ps=null;
                }
                if(result!=null){
                    try {
                        result.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    result=null;
                }
            }
            if(flag!=0){
                return true;
            }else{
                return false;
            }
        }


    public static void main(String []args){
        Dbutiler helper=new Dbutiler();
        //对存储的用户信息进行测试
        user one=new user("Rui","Tiger");
        helper.addUser(one);
        List<user> res=new ArrayList<user>();
        res=helper.getUserInfo("select * from user;");
        for(int i=0;i<res.size();i++){
            System.out.println(res.get(i).toString());
        }


        //下面是对存储的内容的测试
        Items item=new Items("Graphics2D","http://bbs.csdn.net");
        helper.addOneItem(item);
        List<Items>itemsList=new ArrayList<Items>();
        itemsList=helper.getItemsInfo("select * from items;");
        if(itemsList.isEmpty()){
            System.out.println("This resultSet is empty!");
        }else{
            for(int i=0;i<itemsList.size();i++){
                System.out.println(itemsList.get(i).toString());
            }
        }

    }

}

相应的我们运行完程序之后,是可以在MySQL的数据库下进行查看的,确实是插入进去了,而查找的时候也会返回我们想要查找的并且符合要求的值。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Clickhouse-Java使用JDBC连接大批量导入(本地文件2表)
Clickhouse-Java使用JDBC连接大批量导入(本地文件2表); 导入:4856w耗时294秒约5分钟;导入:212w耗时12秒。
885 0
Clickhouse-Java使用JDBC连接大批量导出(表2本地文件)
Clickhouse-Java使用JDBC连接大批量导出(表2本地文件);测试数据:212w,耗时28秒;测试数据:4814w,耗时380秒约6.3分钟
397 0
线程 - Java 多线程编程(上)
线程 - Java 多线程编程(上)
67 0
线程 - Java 多线程编程(下)
线程 - Java 多线程编程(下)
25 0
Java多线程那些事,对Java并发编程2w余字的总结,超详细(从入门到完全掌握)
Java多线程那些事,对Java并发编程2w余字的总结,超详细(从入门到完全掌握)
80 0
java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。
70 0
五分钟带你玩转多线程(一)java多线程基础知识简介
线程概念 进程:是一个执行中的程序,如打开网易云音乐,网易云音乐就是一个进程 线程:是进程的组成,一个进程包含多个线程,是jvm最小调度单元。如网易云音乐听歌是一个线程,评价是一个线程。
52 0
+关注
郭璞
一切就交给时间,它会给我答案。
368
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载