MySQL数据库连接

时间:2022-02-09 07:10:19

一、mysql数据库安装

之前我以为IDEA中连接数据库的时候它会自行安装mysql数据库,实际上不是这样的!!!它仅仅是跟你电脑上现有的数据库创建连接而已,所以在使用IDEA连接数据库之前,你要先安装mysql数据库。

MySQL按照教程可以参考下面的链接视频:

https://top1-video-public.cdn.bcebos.com/cd6f31ff79622d4eb09609100a4b9960f26832b6.mp4

去数据库的官网http://www.mysql.com下载MySQL。

二、启动数据库

启动数据库!!!没有启动数据库就去尝试连接的话肯定连接不上。

三、链接数据库

package com.imooc.db;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

//import com.mysql.jdbc.Connection;
import java.sql.Connection;;

public class DBUtil {
    private static final String URL ="jdbc:mysql://localhost:3306/imooc";
    private static final String USER = "root";
    private static final String PASSWORD = "yy550432";
    public static void main(String[] args) throws Exception {
        
        //加载驱动程序
        Class.forName("com.mysql.jdbc.Driver");
        //获得数据库的连接
        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
        //操纵数据库,实现增删改查
        Statement stmt=conn.createStatement();
        ResultSet rs=stmt.executeQuery("select user_name from imooc_goddess");
        while(rs.next()) {
            System.out.println(rs.getString("user_name"));
        }        
    }
}

四、操作数据库,自己写的BaseDao

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import cy.ybzn.utils.JdbcUtils;

/*
 * 这是一个dao类中的基本类,用于子类的来调用,不能直接new
 * <T>将要操作各种操作 映射要JAva类中,如USerDao类
 * */
public class BaseDao<T> {
    //对数据库有增删改查
    
    QueryRunner queryRunner = new QueryRunner();
        
        public Class<T> clazz;
        
        @SuppressWarnings("unchecked")
        //为了获得BaseDao中的T泛型(模型)
        public BaseDao(){
        //用baseDao的构造方法初始化clazz属性,如果T传进来的是User,则是User类型,下面求User.class
        Type superType = this.getClass().getGenericSuperclass(); // getGenericSuperclass作用是拿到调用者的父类的类型
        if(superType instanceof ParameterizedType) {
            ParameterizedType pt = (ParameterizedType) superType;
            Type[] tarry = pt.getActualTypeArguments(); // 返回一个类型数组,第一个元素就是我们要的,T,User.class
            if(tarry[0] instanceof Class) {
                clazz = (Class<T>) tarry[0];
                System.out.println("" clazz);
            }
        }
    }
    

    /**
     * 查询数据表,取出Sql语句的结果集的结果集的第一条数据,封装成一个类的返回对象
     * 不支持事务
     * 用到DButils工具类
     * 
     * @param sql
     * @param args
     * @return
     */
    public T get(String sql, Object... args) {
        Connection conn = null;
        T entity = null;
        try {
            // 拿conn
            conn = JdbcUtils.getConnection();
            entity = queryRunner.query(conn, sql, new BeanHandler<T>(clazz), args);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.closeConn(conn);
        }
        return entity;
    }
    
    /**
     * 查询数据表,取出sql语句的结果集的第一条数据,封装成一个类的对象返回,支持事务
     * 
     * @param sql
     * @param args
     * @return
     */
    public T get(Connection conn,String sql, Object... args) {
        T entity = null;
        try {
            entity = queryRunner.query(conn, sql, new BeanHandler<T>(clazz), args);
        } catch (Exception e) {
            e.printStackTrace();
        } 
        return entity;
    }
    
    /**
     * 获取多条记录的通用方法,通用,用泛型才能实现通用
     * @return
     */
    public List<T> getList(String sql,Object... args){
        Connection conn = null;
        List<T> list = null;
        try {
            // 拿conn
            conn = JdbcUtils.getConnection();
            list = queryRunner.query(conn, sql, new BeanListHandler<>(clazz), args);
            System.out.println("我到这里了说明数据库代码没有问题");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.closeConn(conn);
        }
        return list;
    }
    
    public int update(String sql,Object ...args)
    {
        Connection conn = null;
        int row =0;
        try {
            // 拿conn
            conn = JdbcUtils.getConnection();
            System.out.println("BaseDao:update:" sql);
            row = queryRunner.update(conn, sql, args);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.closeConn(conn);
        }
        return row;
    }
    
    public Object getValue(String sql ,Object ...args)
    {
        Connection conn = null;
        Object obj = null;
        try {
            // 拿conn
            conn = JdbcUtils.getConnection();
            obj = queryRunner.query(conn, sql, new ScalarHandler(), args);
            System.out.println("我到这里了说明数据库代码没有问题");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.closeConn(conn);
        }
        return obj;
    }
}