idea持久化操作-2

在上次的基础上,做了点优化,代码如下

import cn.edu.mju.project1.persiste.impl.MySqlDbUtil;
import org.junit.Test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class TestDbUtil {
    @Test
    public void testConnection(){
        try {
            MySqlDbUtil.getConnection();//调用连接
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//    @Test
    public void testInsert(){//对一组数据的插入
         try {
            Connection conn = MySqlDbUtil.getConnection();//保存连接
             String sql = "INSERT INTO band(name,remark) VALUES(?,?)";//添加参数值,“?“为占位符(设置String类型的sql)
             PreparedStatement pstmt = conn.prepareStatement(sql);//对sql语句进行预处理,还以参数方式提交,安全系数较高(把sql变量导入数据库)
             pstmt.setString(1,"软工1班"); //填写值(第一个占位符引号内跟上具体值)
             pstmt.setString(2,"备注信息");//填写第二个占位符的内容
             //boolean result = pstmt.execute();//声明布尔值存储具体结果正确与否
             int result = pstmt.executeUpdate();//定义一个整型存储结果的值
             if (result > 0){
                 System.out.println("添加成功");//如果结果为正确,输出“添加成功”
             }else {
                 System.out.println("添加失败");//结果为错误时,输出“添加失败”
             }
             pstmt.close();//关掉pstmt释放资源
             conn.close();//关闭连接释放资源(仅是关闭连接池)
        } catch (Exception e) {
            e.printStackTrace();
        }
         }

//    @Test
    public void testUpdate(){//对一组数据的修改
        try {
            Connection conn = MySqlDbUtil.getConnection();//保存连接
            String sql = "UPDATE band SET name=?,remark=? WHERE id=? ";//修改参数值,“?“为占位符(设置String类型的sql)
            PreparedStatement pstmt = conn.prepareStatement(sql);//对sql语句进行预处理,还以参数方式提交,安全系数较高(把sql变量导入数据库)
            pstmt.setString(1,"软工2班"); //填写值(第一个占位符引号内跟上具体值)
            pstmt.setString(2,"备注信息2");//填写第二个占位符的内容
            pstmt.setInt(3,4);//修改id为4的那行数据
            //boolean result = pstmt.execute();//声明布尔值存储具体结果正确与否
            int result = pstmt.executeUpdate();//定义一个整型存储结果的值
            if (result > 0){
                System.out.println("修改成功");//如果结果为正确,输出“修改成功”
            }else {
                System.out.println("修改失败");//结果为错误时,输出“修改失败”
            }
            pstmt.close();//关掉pstmt释放资源
            conn.close();//关闭连接释放资源(仅是关闭连接池)
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
//    @Test
    public void testDelete(){//对一组数据的删除
        try {
            Connection conn = MySqlDbUtil.getConnection();//保存连接
            String sql = "DELETE FROM band WHERE id=?";//添加参数值,“?“为占位符(设置String类型的sql)
            PreparedStatement pstmt = conn.prepareStatement(sql);//对sql语句进行预处理,还以参数方式提交,安全系数较高(把sql变量导入数据库)
            pstmt.setInt(1,5);//删除id为5的那行数据
            //boolean result = pstmt.execute();//声明布尔值存储具体结果正确与否
            int result = pstmt.executeUpdate();//定义一个整型存储结果的值
            if (result > 0){
                System.out.println("删除成功");//如果结果为正确,输出“删除成功”
            }else {
                System.out.println("删除失败");//结果为错误时,输出“删除失败”
            }
            pstmt.close();//关掉pstmt释放资源
            conn.close();//关闭连接释放资源(仅是关闭连接池)
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//    @Test
    public void testFindAll(){//对所有数据的查询
        try {
            Connection conn = MySqlDbUtil.getConnection();//保存连接
            String sql = "SELECT * FROM band";//查询所有数据
            PreparedStatement pstmt = conn.prepareStatement(sql);//对sql语句进行预处理,还以参数方式提交,安全系数较高(把sql变量导入数据库)
            //boolean result = pstmt.execute();//声明布尔值存储具体结果正确与否
            ResultSet rs = pstmt.executeQuery();//定义一个ResultSet的结果集
            while (rs.next()){//判断有下一条数据时
                int id = rs.getInt("id");//获取id
                String name = rs.getString("name");//获取name
                String remark = rs.getString("remark");//获取remark
                System.out.println(id + "," + name + "," + remark);//输出id,name,remark
            }
            rs.close();//关闭rs
            pstmt.close();//关掉pstmt释放资源
            conn.close();//关闭名称为conn的连接释放资源(仅是关闭连接池)
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//    @Test
    public void testFindById(){//对一组指定id的查询
        try {
            Connection conn = MySqlDbUtil.getConnection();//保存连接
            String sql = "SELECT * FROM band WHERE id=?";//查询指定id的一组数据
            PreparedStatement pstmt = conn.prepareStatement(sql);//对sql语句进行预处理,还以参数方式提交,安全系数较高(把sql变量导入数据库)
            pstmt.setInt(1,4);//查询id为4的那组数据
            ResultSet rs = pstmt.executeQuery();//定义一个ResultSet的结果集
            if (rs.next()){//判断有下一条数据时
                int id = rs.getInt("id");//获取id
                String name = rs.getString("name");//获取name
                String remark = rs.getString("remark");//获取remark
                System.out.println(id + "," + name + "," + remark);//输出id,name,remark
            }
            rs.close();//关闭rs
            pstmt.close();//关掉pstmt释放资源
            conn.close();//关闭名称为conn的连接释放资源(仅是关闭连接池)
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testFindByName(){//对一组指定name的查询
        try {
            Connection conn = MySqlDbUtil.getConnection();//保存连接
            String sql = "SELECT * FROM band WHERE name LIKE ?";//查询name型为?的所有组的数据
            PreparedStatement pstmt = conn.prepareStatement(sql);//对sql语句进行预处理,还以参数方式提交,安全系数较高(把sql变量导入数据库)
            pstmt.setString(1,"%1%");//查询name含有“1”的所有组的数据
            ResultSet rs = pstmt.executeQuery();//定义一个ResultSet的结果集
            while (rs.next()){//判断有下一条数据时
                int id = rs.getInt("id");//获取id
                String name = rs.getString("name");//获取name
                String remark = rs.getString("remark");//获取remark
                System.out.println(id + "," + name + "," + remark);//输出id,name,remark
            }
            rs.close();//关闭rs
            pstmt.close();//关掉pstmt释放资源
            conn.close();//关闭名称为conn的连接释放资源(仅是关闭连接池)
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

package cn.edu.mju.project1.persiste.impl;

import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;

public class MySqlDbUtil {
    private static DruidDataSource dataSource = null;//创建数据源参数并在第一次启动后永久保存
    private static void initDataSource() throws Exception{//调用德鲁伊的数据源参数,若为空值则创建一个
        if(dataSource == null){
            dataSource = new DruidDataSource();
            dataSource.setUrl("jdbc:mysql://localhost:3306/band1?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8");//连接数据库的路径和时区
            dataSource.setUsername("root");//输入自己的数据库用户名
            dataSource.setPassword("123456");//输入数据库用户名的密码
            dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");//输入Driver的路径,注意:路径大小写敏感!

            //上面代码即可完成连接,但要提高配置的性能,还可加入以下代码
            dataSource.setInitialSize(2);//设置初始化参数为2个连接数
            dataSource.setMinIdle(2);//设置最小连接数为2
            dataSource.setMaxActive(10);//设置最大连接数为10

            dataSource.setMaxWait(20000);//设置最大等待相应时间(单位毫秒)此时为20秒(连接不上需要等待的时间)
            dataSource.setTimeBetweenEvictionRunsMillis(20000);//设置检查无响应的时间长度,若无响应则断开,此时为20秒

            dataSource.setValidationQuery("SELECT 'x'");//时不时返回引号内的内容以提醒用户连接未断开,仍有效
            dataSource.setTestWhileIdle(true);//判断用户空闲时,再发送上条判断连接是否正常的提示
            dataSource.setTestOnBorrow(true);//空余时再去处理
        }
    }
    public static Connection getConnection() throws Exception{
        initDataSource();//执行此方法以便在不是为空的条件下返回连接参数
         return dataSource.getConnection();
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值