一、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;
}
}
来源:https://www.cnblogs.com/blogger-Li/p/12014172.html