一、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; } }