使用JDBC实现增删改查(加入Druid德鲁伊连接池)

使用JDBC实现增删改查(加入Druid(德鲁伊)连接池)


使用jdbc(加入数据库连接池Druid)完成Student表的增删改查四个功能的操作

  • 添加jdbc的连接驱动jar包
  • 添加druidjar包

1. 创建数据库

CREATE TABLE student(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(50) NOT NULL,
	sex VARCHAR(10) DEFAULT 'man',
	age VARCHAR(5)
) CHARSET = utf8;

2. 编写Student.jsp实现类

package com.kaka.test_03;
public class Student {
	private int id;
	private String name;
	private String sex;
	private String age;
	public Student() {
		super();
	}
	public Student(int id, String name, String sex, String age) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}	
}

3. 编写druid.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db0711?useUnicode=true&characterEncoding=utf8
username=root
password=root
#初始化连接
initialSize=10
#最大连接数量
maxActive=30
#最小空闲连接
minIdle=5
#超时等待时间
maxWait=5000

4. 编写JDBCUtil.java工具类

package com.kaka.test_03;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

public class JDBCUtils {
	//获取数据库连接池
	private static DataSource ds;
	
	//提供静态代码块
	//加载配置文件
	static{
		try{
			//创建Properties集合类对象
			Properties prop = new Properties();
			//加载配置文件
			InputStream inputStream = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
			
			//加载
			prop.load(inputStream);
			inputStream.close();
			
			//创建连接池对象
			ds = DruidDataSourceFactory.createDataSource(prop);
			
		} catch(IOException e){
			e.printStackTrace();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	//获取连接
	public static Connection getConnection() throws SQLException {
		return ds.getConnection() ;
	}
	
	//定义一个方法,获取存在的连接池
	public static DataSource getDataSource() {
		return ds ;
	}
	
	//释放资源
	public static void close(Statement stmt,Connection conn) {
		
		close(null,stmt,conn) ;
	}

	public static void close(ResultSet rs, Statement stmt, Connection conn) {
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		if(stmt!=null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

5. 编写StuDaoImpl.java接口实现类

package com.kaka.test_03;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class StuDaoImpl {
	private Connection conn = null;
	private PreparedStatement stmt = null;
	private ResultSet rs = null;
	
	//增加
	public int insert(Student stu){
		try {
			//数据库连接对象
			conn = JDBCUtils.getConnection();
			//编写SQL语句
			String sql = "insert into student (id,name,sex,age) values(?,?,?,?);";
			//预编译对象
			stmt = conn.prepareStatement(sql);
			//执行更新
			stmt.setInt(1, stu.getId());
			stmt.setString(2, stu.getName());
			stmt.setString(3, stu.getSex());
			stmt.setString(4, stu.getAge());
			
			int i = stmt.executeUpdate();
			return i;
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			JDBCUtils.close(stmt, conn);
		}
		return 0;
	}
	
	//删除
	public int delete (int id){
		
		try {
			conn = JDBCUtils.getConnection();
			String sql = "delete from student where id = ?";
			stmt = conn.prepareStatement(sql);
			//获取id
			stmt.setInt(1, id);
			return stmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			JDBCUtils.close(stmt, conn);
		}
		return 0;
	}
	
	//修改
	public int update(Student stu){
		
		try {
			conn = JDBCUtils.getConnection();
			String sql = "update student set name = ?,sex = ?,age = ? where id = ?";
			stmt = conn.prepareStatement(sql);
			//执行更新
			stmt.setString(1, stu.getName());
			stmt.setString(2, stu.getSex());
			stmt.setString(3, stu.getAge());
			stmt.setInt(4, stu.getId());
			return stmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			JDBCUtils.close(stmt, conn);
		}
		return 0;
	}
	
	//查询
	public List<Student> selectAll(){

		 try {
			conn = JDBCUtils.getConnection();
			String sql = "select id,name,sex,age from student";
			List<Student> stuList = new ArrayList<Student>();
			 stmt = conn.prepareStatement(sql);
             rs = stmt.executeQuery();
             while(rs.next()){
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String sex = rs.getString("sex");
                String age = rs.getString("age");
                Student  stu = new Student(id, name, sex, age);
               //每封装完一个对象,添加到集合当中
                stuList.add(stu);
            }
            return stuList;
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
        	JDBCUtils.close(rs, stmt, conn);
        }
		return null;
	}
}

6. 编写Test.java测试类

package com.kaka.test_03;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		
		StuDaoImpl sdi = new StuDaoImpl();
		//新增
		inserts(sdi);
		
		//删除
		deletes(sdi);
		
		//修改
		undates(sdi);
		
		//查询
		selects(sdi);
	}

	private static void selects(StuDaoImpl sdi) {
		List<Student> stuList = sdi.selectAll();
		stuList.forEach(System.out::println);
	}

	//修改
	private static void undates(StuDaoImpl sdi) {
		Student emp = new Student(1,"赵六","男","43");
		int result = sdi.update(emp);
		System.out.println(result);
	}
	
	
	//删除
	private static void deletes(StuDaoImpl sdi) {
		int result = sdi.delete(5);
		System.out.println(result);
	}
	
	//新增
	private static void inserts(StuDaoImpl sdi) {
		Student stu = new Student(5,"name4","man","23");
		int result = sdi.insert(stu);
		if(result > 0){
			System.out.println("success");
		}else{
			System.out.println("defeat");
		}
	}
}

7. 运行结果

7.1 查询数据

在这里插入图片描述

7.2 新增数据

在这里插入图片描述

7.3 删除数据

在这里插入图片描述

7.4 修改数据

在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用德鲁伊连接池,你需要完成以下步骤: 1. 在你的项目中添加德鲁伊连接池的依赖,例如: ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency> ``` 2. 在你的 Spring 配置文件中配置数据源,例如: ``` <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="123456" /> <property name="initialSize" value="5" /> <property name="minIdle" value="5" /> <property name="maxActive" value="20" /> <property name="maxWait" value="60000" /> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="SELECT 1 FROM DUAL" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> <property name="filters" value="stat" /> </bean> ``` 这里的配置项包括数据源的 URL、用户名、密码,以及连接池的一些属性,例如初始大小、最大活跃连接数等等。你也可以根据实际情况进行调整。 3. 在你的 DAO 类中使用数据源,例如: ``` @Repository public class UserDaoImpl implements UserDao { @Autowired private DataSource dataSource; @Override public List<User> findAll() throws SQLException { List<User> userList = new ArrayList<>(); try (Connection conn = dataSource.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM user")) { while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); userList.add(user); } } return userList; } } ``` 这里使用了 `@Autowired` 注解将数据源注入到 DAO 类中,然后使用 `getConnection()` 方法获取连接,执行 SQL 查询并返回结果。注意,这里使用了 try-with-resources 语句来自动关闭连接,这是一种比较好的编程习惯。 完成以上步骤后,你就可以使用德鲁伊连接池来管理数据库连接了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Willing卡卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值